И попробуйте работу ввода
Вначале не забудьте для красоты применить DISPBOX()
и настроить нужную цветовую гамму.
Конечно можете менять координаты и размеры
Если не будет получаться вложите полученный текст, я у себя откомпилирую и еще раз посмотрю что не так. Должно получить
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 06 Nov 2007 18:52 Post subject:
Ну что-же, вот в таком виде в целом уже работает.
Остались некоторые моменты:
- при открытии второго справочника (s_v) не работает фильтр по первому справочнику (по s_t);
- а можно-ли до открытия справочника по Ф2 видеть не только код, но и название пункта ?
- при попытке пройти s_t без выбора из справочника (просто стрелка вниз) справочник открывается принудительно;
- если текущее значение в s_t =1, то при нажатии на Ф2 или кей даун справочник открывается на значении 2:
- s_v ведет себя аналогично - открывается на последнем значении;
- переменные для хранения текущих значений теперь, однако, без надобности ?
Code:
function main()
Local p_vid,p_typ,p_post
Local aRef
Local aSet,aSetKey
altd()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
NETUSE("PART_T","part_t.dbf",,.F.) //справочник типов партнеров
NETUSE("PART_V","part_v.dbf",,.F.) //справочник видов партнеров
PART_T->(OrdSetFocus("PART_T"))
PART_V->(OrdSetFocus("PART_V"))
p_typ:=partner->p_typ //подтянули текущее значение типа
p_vid:=partner->p_vid //подтянули текущее значение вида
p_post:=partner->p_post //подтянули текущее значение емэйла
//определим справочник типов
part_t->( MAKEREFER("s_t","Тип партнера",2,{" Код "," Тип "},;
{3,5,16}, "n/w,w+/n",{"CODE"},{"aIn[1]"},'UPPER(aIn[1])',;
{{||FIELD->CODE},{||FIELD->NAME}};
,,,,,,,,,,,,,,,,,'cFind$UPPER(NAME)'))
//определим справочник видов
part_v->( MAKEREFER("s_v","Вид партнера",2,{" Код ","Населенный пункт "},;
{3,5,16}, "n/w,w+/n",{"TYPE"},{"aIn[2]"},'UPPER(aIn[1]+aIn[2])',;
{{||FIELD->TYPE},{||FIELD->NAME}};
,,,,,,;
{||part_v->( SETSCOPE('UPPER(CODE)',UPPER(aIn[1])) )},;
{||part_v->( SETSCOPE() )},;
,,,,,,,,,'cFind$UPPER(NAME)'))
if NoOrYes("Изменять информацию о партнере",2,{" Да "," Нет "})=1
PARTNER->( QINPUT(10,15,14,70, ;
{{"Введите тип партнера:","P_TYP"}, ;
{"Введите вид партнера:","P_VID"}, ;
{"Введите E-Mail......:","P_POST"} ;
}, ;
1,{"s_t","s_v"},{,,REPLICATE("X",30)}, ;
,,,,,, ;
'RESTOFF') )
endif
part_t->( DBCLOSEAREA() )
part_v->( DBCLOSEAREA() )
RestSetKey(aSetKey)
RestSet(aSet)
return nil
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 06 Nov 2007 19:32 Post subject:
vla wrote:
Ну что-же, вот в таком виде в целом уже работает.
Остались некоторые моменты:
- при открытии второго справочника (s_v) не работает фильтр по первому справочнику (по s_t);
- если текущее значение в s_t =1, то при нажатии на Ф2 или кей даун справочник открывается на значении 2:
- s_v ведет себя аналогично - открывается на последнем значении;
Все эти три пункта завязаны на индекс
Вероятно он кривой. Надо бы его построить средствами БЭСТа.
Quote:
- а можно-ли до открытия справочника по Ф2 видеть не только код, но и название пункта ?
А вот это честно говоря не понял - а что слева комментария разве нет ?
Quote:
- при попытке пройти s_t без выбора из справочника (просто стрелка вниз) справочник открывается принудительно;
Это правильно - так MakeRefer настроили - там стоит параметр 2
в описании есть что это параметр принудительного справочника
Quote:
- переменные для хранения текущих значений теперь, однако, без надобности ?
Если в поле адреса не задумаем распихивать то без надобност
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 06 Nov 2007 19:52 Post subject:
Quote:
Все эти три пункта завязаны на индекс
Вероятно он кривой. Надо бы его построить средствами БЭСТа.
Щаас я его ... создание в программу вставлю и посмотрю ...
Quote:
- а можно-ли до открытия справочника по Ф2 видеть не только код, но и название пункта ?
А вот это честно говоря не понял - а что слева комментария разве нет ?
До открытия справочника виден только код. Без расшифровки. А в БЭСТе в таких случаях справа расшифровка есть. Можно ли так-же ?
Quote:
Это правильно - так MakeRefer настроили - там стоит параметр 2
в описании есть что это параметр принудительного справочника
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 06 Nov 2007 20:26 Post subject:
Вставил принудительное создание индексов перед NETUSE. Изменения есть.
Code:
//это для проверки предположения о кривости индекса
NetUseExc('PART_T',"part_t.dbf")
INDEX ON UPPER(CODE) TAG PART_T TO ("part_t.cdx")
PART_T->(dbclosearea())
NetUseExc('PART_V',"part_v.dbf")
INDEX ON UPPER(CODE+TYPE) TAG PART_V TO ("part_v.cdx")
PART_V->(dbclosearea())
Что не так:
- фильтр по прежнему не работает. Просто значения с совпадающим CODE можно ввести вручную и нажать кей даун и справочник не раскроется. А если ввести несовпадающее - откроется принудительно. И виден весь список, можно выбрать любое значени
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 06 Nov 2007 21:23 Post subject:
vla wrote:
До открытия справочника виден только код. Без расшифровки. А в БЭСТе в таких случаях справа расшифровка есть. Можно ли так-же ?
Да можно с помощью bScrInit
Описание блока кода смотри в описании Инитлист
В нем можно сделать поиск по коду в БД и через SayScreen прописать
или заранее определеить в переменную и ее прописать.
Тогда после выхода из справочника надо также менять значение
этой переменной и прорисовывать на экране
Что касается скопа - если он так и не отрабатывает.
Вероятно с запятыми напутал.
Надо будет откомпилировать и посмотреть.
Вы на самом деле можете убедиться быстрее.
Вставьте перед скопом SayAndWait('ok') и если перед входом в
справочник надпись появиться - запятые не напутал, не появиться - напутал.
Это должен быть параметр bPreDisp
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 06 Nov 2007 21:56 Post subject:
Quote:
Вставьте перед скопом SayAndWait('ok') и если перед входом в
справочник надпись появиться - запятые не напутал, не появиться - напутал.
Это должен быть параметр bPreDisp
Вот ломаю голову, как в блок кода вставить команду ...
Они же должны чем-то разделяться, команды-то
До открытия справочника виден только код. Без расшифровки. А в БЭСТе в таких случаях справа расшифровка есть. Можно ли так-же ?
Да можно с помощью bScrInit
Описание блока кода смотри в описании Инитлист
В нем можно сделать поиск по коду в БД и через SayScreen прописать
или заранее определеить в переменную и ее прописать.
Тогда после выхода из справочника надо также менять значение
этой переменной и прорисовывать на экране
Интересный вопрос! Надеюсь, что ответ мы скоро узнаем Я у себя эту расшифровку делал следующим полем. На сколько понимаю следующие поле можно поместить и справа, но это не так просто ...
Last edited by Дениска on 07 Nov 2007 07:43; edited 1 time in total
Вставьте перед скопом SayAndWait('ok') и если перед входом в
справочник надпись появиться - запятые не напутал, не появиться - напутал.
Это должен быть параметр bPreDisp
Вот ломаю голову, как в блок кода вставить команду ...
Они же должны чем-то разделяться, команды-то
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 07 Nov 2007 10:22 Post subject:
Дениска wrote:
vla wrote:
Quote:
Вставьте перед скопом SayAndWait('ok') и если перед входом в
справочник надпись появиться - запятые не напутал, не появиться - напутал.
Это должен быть параметр bPreDisp
Вот ломаю голову, как в блок кода вставить команду ...
Они же должны чем-то разделяться, команды-то
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum