View previous topic :: View next topic |
Author |
Message |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 20 Jun 2007 07:45 Post subject: Вопросы по функции Dialog |
|
|
Какие параметры у функции Dialog()? В справочнике описаны первых 3 параметра. На форуме нашел, что всего восемь параметром и последний это справочник. А какие параметры с 4-го по 7-й?
Вопросы по шаблонам (возможно лучше дать ссылку, где про это хорошо написано) применительно к функции Dialog():
Как сделать «шаблон строки которая будет смещаться вправо (на экране скажем 40 символов одновременно, а набрать можно 250 со смещением символов)»?
Как сделать шаблон для даты с проверкой на корректность ввода?
Как правильно сделать шаблон для счета? Если делать, так:
Code: |
aDialog := Dialog({'Корресп. счет'}, { 'XXXXXXXX '),{'70')
|
то поля для ввода будет только 2 символа. Можно сделать так:
Code: |
aDialog := Dialog({'Корресп. счет'}, { 'XXXXXXXX '),{' 70')
|
А дальше AllTrim(aDialog[1]), но может есть более красивый вариант? |
|
Back to top |
|
 |
Behemoth

Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 20 Jun 2007 08:46 Post subject: Re: Вопросы по функции Dialog |
|
|
Дениска wrote: | Какие параметры у функции Dialog()?
|
DIALOG(cMess,[cPict],cVar,[cZag],[cWhen],[cValid],[cColor],[cRef])
- функция выводит на экран запрос на ввод одного или нескольких
значений. Позволяет задать формат ввода, значения по умолчанию,
а также условия доступа в поле ввода и выхода из поля ввода.
Возвращает введенное значение (массив значений). Здесь:
cMess - текст запроса на ввод значения. Если функция вызывается для
ввода нескольких значений, в качестве данного параметра должен
быть передан массив из тестов запроса для каждого вводимого
значения.
cPict - маска (формат) ввода значения. При вводе нескольких значений
передается массив масок для ввода каждого значения. Параметр
является необязательным. При его отстуствии формат поля ввода
соответствует формату значения по умолчанию.
cVar - значение по умолчанию или массив значений по умолчанию в случае
ввода нескольких значений.
cZag - необязательный параметр, задает текст, выводимый в загловке окна
запроса.
cWhen - необязательный логический параметр, определяющий условие
доступа в поле ввода. Всегда задается в виде массива (даже
в случае определения только одного значения). Каждый элемент
массива может быть задан в виде выражения, в котором доступны
значения временного массива xVar[] - массива введенных значений.
Вычисление выражения выполняется непосредственно перед переходом в
поле ввода данного значения. Таким образом, при определении
возможности доступа в поле ввода, например, третьего значения,
можно использовать введенные перед этим первое и второе
значения xVar[1] и xVar[2].
cValid - необязательный логический параметр, определяющий условие
выхода из поля. Правила ввода аналогичны параметру cWhen. Значение
выражения вычисляется при выходе из поля ввода. В выражении могут
быть использованы также элементы массива введенных значений
xVar[]. Таким образом, параметр может быть использован для
контроля корректности введенного значения.
cColor - необязательный символьный параметр, определяющий цвет окна
запроса.
cRef - необязательный символьный параметр, определяющий используемый
при вводе справочник. Правила ввода аналогичны параметру cWhen.
Дениска wrote: |
Как сделать «шаблон строки которая будет смещаться вправо (на экране скажем 40 символов одновременно, а набрать можно 250 со смещением символов)»?
|
@S40 - выведет 40 первых символов на экран, но сама переменная может быть любой длины. При редактировании она будет скроллироваться в строке 40 длиной символов.
Дениска wrote: |
Как сделать шаблон для даты с проверкой на корректность ввода?
|
Посмотрите параметр cValid. Например, cValid:='xVar[1]>=scl_beg'
Дениска wrote: |
aDialog := Dialog({'Корресп. счет'}, { 'XXXXXXXX '),{' 70')
|
Нет, другого пути нет. Но '70' лучше прижать к левому краю. _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
 |
maestro_
Joined: 29 Jan 2003 Posts: 95
|
Posted: 20 Jun 2007 11:01 Post subject: |
|
|
да отличная информация, только к сожалению, немного поздно....
PS у меня сложилось мнение (где-то читал, возможно на форуме), что параметры начиная с 4 являются не документированными и как следствие возможно не корректная их поддержка в последующих версиях, Это так?
PSS то Behemoth если не секрет поделитесь плиз источником столь интересной информаци |
|
Back to top |
|
 |
Behemoth

Joined: 15 Mar 2002 Posts: 155 Location: Новиков Алексей Юрьевич Occupation: ПБОЮЛ Interests: Пермь
|
Posted: 20 Jun 2007 11:51 Post subject: |
|
|
maestro_ wrote: | PS у меня сложилось мнение (где-то читал, возможно на форуме), что параметры начиная с 4 являются не документированными и как следствие возможно не корректная их поддержка в последующих версиях, Это так? |
Да. В том виде, в котором я привёл описание оно было опубликовано в БЭСТ-4. Когда там был пункт меню "Информация для специалистов" и надо было вводить хитрый пароль, чтобы туда попасть. В дальнейшем, описание параметров сократилось до 3-х пунктов. Не знаю, с чем это связано. Функция DIALOG не является функцией, специально написанной для использования в plugins, поэтому при каких-то доработках её параметры могут быть изменены. Но, IMHO, вероятность того, что существующий функционал будет радикально изменён, минимальн _________________ С уважением, Новиков Алексей. |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 20 Jun 2007 11:58 Post subject: |
|
|
Вообще по описаниям функций - этот форум Ваш источник
Вы сюда пишите - я смотрю и размещаю что могу.
Что касается DIALOG то все параметры доступны (вот
только справочник не проверял...не было необходимости)
А про не поддерживаются мы писали про скоб в DBPUSH()
Вот с этим не рекомендовано. БОльше не припомню. |
|
Back to top |
|
 |
itman

Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 21 Jun 2007 07:32 Post subject: |
|
|
maestro_ wrote: |
PSS то Behemoth если не секрет поделитесь плиз источником столь интересной информации. |
В инструментарии разработчика содержатся исходные коды различных функций для БЭСТ-4, включая dialog. Также имеется пример ее использования.
каталог - pll
файл - util1.prg |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 22 Jun 2007 14:39 Post subject: |
|
|
А можно пример с подключением справочника? В идеале с планом счетов. Я пробую так:
Code: |
Function Main()
Private aStru, aSetKey
private aDialog
aSetKey:=SaveSetKey()
DBPUSH()
altd()
NetUse("F_plan_sch", LoadPath() + "plan_sch.dbf")
aDialog := Dialog({'счет:'}, {replicate('X', 8)}, {Padr('70', 8, ' ')}, ' План счетов ',,, {'F_plan_sch'})
IF LASTKEY()!=27
SayAndWait("Счет " + AllTrim(aDialog[1]))
EndIf
F_plan_sch->(dbclosearea())
DbPop()
RestSetKey(aSetkey)
Return '1'
|
Не работает В файле util1.prg примера со справочником не нашел  |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 22 Jun 2007 14:47 Post subject: |
|
|
А где у Вас MakeRefer()
Справочник надо создать этой функцией и дать ему имя
которое Вы потом и используете в Dialog |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 24 Jun 2007 14:12 Post subject: |
|
|
С MakeRefer() тоже почему-то не получается
Code: |
NetUse("F_plan_sch", LoadPath() + "plan_sch.dbf")
F_plan_sch->( MAKEREFER("m_plan_sch","План счетов",2 ;
,{" Счет ","Наименование "},;
{3,5,16}, "n/w,w+/n",{"SCHET"},,,;
{{||FIELD->SCHET},{||FIELD->NAME_SCH}};
,,,,,,,,,,,,,,,,,'cFind$UPPER(SCHET)'))
aRef:={"m_plan_sch"}
aDialog := Dialog({'счет:'}, {replicate('X', 8)}, {Padr('70', 8, ' ')}, ' План счетов ',,, aRef)
|
|
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 25 Jun 2007 14:35 Post subject: |
|
|
Запятых маловато в функции DIALOG перед aRef
Вы кладете в параметр цвета окна диалог |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 26 Jun 2007 06:20 Post subject: |
|
|
nordk wrote: | Запятых маловато в функции DIALOG перед aRef
Вы кладете в параметр цвета окна диалога |
Исправил (и добавил цвет). Все равно справочник не вызывается
Code: |
aDialog := Dialog({'счет:'}, {replicate('X', 8)}, {Padr('70', 8, ' ')}, ' План счетов ',,,'G+', aRef)
|
|
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 26 Jun 2007 18:53 Post subject: |
|
|
Тут дело вот в чем
справочник могет быть тока один и он не массив из-за
вот такой строки в исходном тексте функции
Code: | cRef := IIF(cRef!=NIL.AND.ValType(cRef) = "C",cRef,Nil) |
Т.е. справочник работает только для диалога из одной строки
Исправьте у себя
Code: | aRef:={"m_plan_sch"} |
на
и у Вас все заработает |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 23 Oct 2007 17:02 Post subject: |
|
|
Странно, а у меня справочник открывается, но выбранное значение из него не возвращается. Так и остается "70". В чем может быть дело ?
Function main()
local aRef,aDialog
altd()
NetUse("F_plan_sch", LoadPath() + "plan_sch.dbf")
F_plan_sch->( MAKEREFER("m_plan_sch","План счетов",2 ;
,{" Счет ","Наименование "},;
{3,5,16}, "n/w,w+/n",{"SCHET"},,,;
{{||FIELD->SCHET},{||FIELD->NAME_SCH}};
,,,,,,,,,,,,,,,,,'cFind$UPPER(SCHET)'))
aRef:="m_plan_sch"
aDialog := Dialog({'счет:'}, {replicate('X', }, {Padr('70', 8, ' ')}, ' План счетов ',,,, aRef)
f_plan_sch->( DBCLOSEAREA() )
return nil |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 23 Oct 2007 17:17 Post subject: |
|
|
vla wrote: | Странно, а у меня справочник открывается, но выбранное значение из него не возвращается. Так и остается "70". В чем может быть дело ?
|
У MAKEREFER не заполнен параметр aDest |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 23 Oct 2007 17:39 Post subject: |
|
|
Дениска wrote: | vla wrote: | Странно, а у меня справочник открывается, но выбранное значение из него не возвращается. Так и остается "70". В чем может быть дело ?
|
У MAKEREFER не заполнен параметр aDest |
Вот так работает:
Code: |
F_plan_sch->( MAKEREFER("m_plan_sch","План счетов",2,{" Счет ","Наименование "},{3,5,16},;//5
"n/w,w+/n",{"SCHET"},{"xVar[1]"},,{{||FIELD->SCHET},//10
{||FIELD->NAME_SCH}},,,,,,,,,,,,,,,,,'cFind$UPPER(SCHET)'))
|
В InitList в качестве параметра aDest похоже обычно используется массив aIn, а здесь xVar |
|
Back to top |
|
 |
|
|
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
|
Powered by phpBB © phpBB Group
|