Вопросы по функции Dialog
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
-> Программирование в БЭСТ-4

#1: Вопросы по функции Dialog Author: Дениска PostPosted: 20 Jun 2007 07:45
    —
Какие параметры у функции Dialog()? В справочнике описаны первых 3 параметра. На форуме нашел, что всего восемь параметром и последний это справочник. А какие параметры с 4-го по 7-й?

Вопросы по шаблонам (возможно лучше дать ссылку, где про это хорошо написано) применительно к функции Dialog():

Как сделать «шаблон строки которая будет смещаться вправо (на экране скажем 40 символов одновременно, а набрать можно 250 со смещением символов)»?

Как сделать шаблон для даты с проверкой на корректность ввода?

Как правильно сделать шаблон для счета? Если делать, так:
Code:

aDialog := Dialog({'Корресп. счет'}, { 'XXXXXXXX '),{'70')

то поля для ввода будет только 2 символа. Можно сделать так:
Code:

aDialog := Dialog({'Корресп. счет'}, { 'XXXXXXXX '),{'      70')

А дальше AllTrim(aDialog[1]), но может есть более красивый вариант?

#2: Re: Вопросы по функции Dialog Author: BehemothLocation: Новиков Алексей Юрьевич PostPosted: 20 Jun 2007 08:46
    —
Дениска 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' лучше прижать к левому краю.

#3:  Author: maestro_ PostPosted: 20 Jun 2007 11:01
    —
да отличная информация, только к сожалению, немного поздно....

PS у меня сложилось мнение (где-то читал, возможно на форуме), что параметры начиная с 4 являются не документированными и как следствие возможно не корректная их поддержка в последующих версиях, Это так?
PSS то Behemoth если не секрет поделитесь плиз источником столь интересной информаци

#4:  Author: BehemothLocation: Новиков Алексей Юрьевич PostPosted: 20 Jun 2007 11:51
    —
maestro_ wrote:
PS у меня сложилось мнение (где-то читал, возможно на форуме), что параметры начиная с 4 являются не документированными и как следствие возможно не корректная их поддержка в последующих версиях, Это так?

Да. В том виде, в котором я привёл описание оно было опубликовано в БЭСТ-4. Когда там был пункт меню "Информация для специалистов" и надо было вводить хитрый пароль, чтобы туда попасть. В дальнейшем, описание параметров сократилось до 3-х пунктов. Не знаю, с чем это связано. Функция DIALOG не является функцией, специально написанной для использования в plugins, поэтому при каких-то доработках её параметры могут быть изменены. Но, IMHO, вероятность того, что существующий функционал будет радикально изменён, минимальн

#5:  Author: nordkLocation: Горбунов Константин PostPosted: 20 Jun 2007 11:58
    —
Вообще по описаниям функций - этот форум Ваш источник
Вы сюда пишите - я смотрю и размещаю что могу.
Что касается DIALOG то все параметры доступны (вот
только справочник не проверял...не было необходимости)
А про не поддерживаются мы писали про скоб в DBPUSH()
Вот с этим не рекомендовано. БОльше не припомню.

#6:  Author: itmanLocation: Ильин Е.Ю. PostPosted: 21 Jun 2007 07:32
    —
maestro_ wrote:

PSS то Behemoth если не секрет поделитесь плиз источником столь интересной информации.


В инструментарии разработчика содержатся исходные коды различных функций для БЭСТ-4, включая dialog. Также имеется пример ее использования.
каталог - pll
файл - util1.prg

#7:  Author: Дениска PostPosted: 22 Jun 2007 14:39
    —
А можно пример с подключением справочника? В идеале с планом счетов. Я пробую так:
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 примера со справочником не нашел

#8:  Author: nordkLocation: Горбунов Константин PostPosted: 22 Jun 2007 14:47
    —
А где у Вас MakeRefer()
Справочник надо создать этой функцией и дать ему имя
которое Вы потом и используете в Dialog

#9:  Author: Дениска PostPosted: 24 Jun 2007 14:12
    —
С 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)


#10:  Author: nordkLocation: Горбунов Константин PostPosted: 25 Jun 2007 14:35
    —
Запятых маловато в функции DIALOG перед aRef
Вы кладете в параметр цвета окна диалог

#11:  Author: Дениска PostPosted: 26 Jun 2007 06:20
    —
nordk wrote:
Запятых маловато в функции DIALOG перед aRef
Вы кладете в параметр цвета окна диалога



Исправил (и добавил цвет). Все равно справочник не вызывается
Code:

  aDialog := Dialog({'счет:'}, {replicate('X', 8)}, {Padr('70', 8, ' ')}, ' План счетов ',,,'G+', aRef)

#12:  Author: nordkLocation: Горбунов Константин PostPosted: 26 Jun 2007 18:53
    —
Тут дело вот в чем
справочник могет быть тока один и он не массив из-за
вот такой строки в исходном тексте функции
Code:
cRef := IIF(cRef!=NIL.AND.ValType(cRef) = "C",cRef,Nil)


Т.е. справочник работает только для диалога из одной строки

Исправьте у себя
Code:
aRef:={"m_plan_sch"}

на
Code:
aRef:="m_plan_sch"

и у Вас все заработает

#13:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 23 Oct 2007 17:02
    —
Странно, а у меня справочник открывается, но выбранное значение из него не возвращается. Так и остается "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

#14:  Author: Дениска PostPosted: 23 Oct 2007 17:17
    —
vla wrote:
Странно, а у меня справочник открывается, но выбранное значение из него не возвращается. Так и остается "70". В чем может быть дело ?



У MAKEREFER не заполнен параметр aDest

#15:  Author: Дениска PostPosted: 23 Oct 2007 17:39
    —
Дениска 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



-> Программирование в БЭСТ-4


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group