Page 3 of 3

Re: prompt()

Posted: Tue 23 Aug, 2011 15:46
by Skirda

Latest post of the previous page:

дело в том, что prompt основан на API функции InputBox, у которой по умолчанию пустая строка не допускатся, т.е. нужен флаг FIB_ENABLEEMPTY (тот самый 1)
могу сделать так: удаляем поддержку флага:
0x00000001 - Даже если строка ввода пуста, функция вернёт значение (пустую строку).
и принудительно ставим этот флаг внутри prompt при вызове InputBox

ы?

Re: prompt()

Posted: Tue 23 Aug, 2011 15:51
by John Doe
http://api.farmanager.com/ru2/macro/macrocmd/prop_func/general.html#prompt wrote:

Code: Select all

0x00000001	Даже если строка ввода пуста, функция вернёт значение (пустую строку).
Я что-то напрочь не пойму смысл этого флага. Сейчас он ни на что не влияет.
Поэтому не вижу зачем бы его оставлять.

Re: prompt()

Posted: Tue 23 Aug, 2011 15:54
by Raistlin
Skirda wrote:могу сделать так: удаляем поддержку флага:
и принудительно ставим этот флаг внутри prompt при вызове InputBox
Мне тоже этот флаг на фиг не нужен, но народ (Yegor) выше беспокоился о совместимости. Можно 0 возвращать при установленном флаге, а при отсутствии - работать как раньше. Если, конечно, кому-то это реально надо.

Re: prompt()

Posted: Tue 23 Aug, 2011 15:55
by Skirda
John Doe wrote:Я что-то напрочь не пойму смысл этого флага. Сейчас он ни на что не влияет.
http://api.farmanager.com/ru2/service_f ... utbox.html

Re: prompt()

Posted: Tue 23 Aug, 2011 15:59
by John Doe
Raistlin wrote:...но народ (Yegor) выше беспокоился о совместимости
Тут глобальный слом, а они о совместимости..

Re: prompt()

Posted: Tue 23 Aug, 2011 16:03
by Raistlin
Вообще да, ну их в топку, какие-то непонятные рудименты. А то будем все этот флаг постоянно пририсовывать :).

Re: prompt()

Posted: Tue 23 Aug, 2011 16:08
by Skirda
правильно я понял, что этот флаг по умолчанию выставлен для prompt?

Re: prompt()

Posted: Tue 23 Aug, 2011 16:12
by Raistlin
Да.

Re: prompt()

Posted: Thu 01 Sep, 2011 20:30
by Raistlin
Мне кажется, среди флагов есть еще пара кандидатов в морг:

Code: Select all

0x00000010 Показать разделительную линию и кнопки [ Ok ] и [ Cancel ]. Диалог увеличится на 2 строки.
0x00000020 Не показывать в приглашении ввода амперсанд, использовать его для определения горячей клавиши. 
Второй так уж точно - куда переходить по горячей клавише в диалоге, где только одно поле и больше ничего? Ну, конечно, если заодно указать первого кандидата, то появляются еще две (бессмысленные) кнопки - можно, значит, сначала встать на них, а потом вернуться в поле редактирования - по горячей клавише, ага. Маразм.
Или есть планы по развитию prompt() до нескольких полей?

Re: prompt()

Posted: Thu 01 Sep, 2011 20:35
by Skirda
на счет 0x00000020 - это копипасте из другого места.
у GetString (на чем паразитирует промпт) можно выводить еще чекбокс.

Re: prompt()

Posted: Thu 01 Sep, 2011 20:44
by Raistlin
И какую функцию этот чекбокс тут может выполнять?
Вот если б prompt() работал как !?<title>?<init>! - выводил несколько полей одновременно, - это было бы хорошо.

Code: Select all

S=prompt([Title1[,Prompt1[,Flags1[,Src1[,History1]]]]...])
А?

Re: prompt()

Posted: Thu 01 Sep, 2011 20:59
by HaRT
Raistlin wrote:Второй так уж точно - куда переходить по горячей клавише в диалоге, где только одно поле и больше ничего? Ну, конечно, если заодно указать первого кандидата, то появляются еще две (бессмысленные) кнопки - можно, значит, сначала встать на них, а потом вернуться в поле редактирования - по горячей клавише, ага.
В Фаре есть несколько стандартных диалогов именно такого вида: поле ввода с меткой и кнопки OK и Cancel. И как раз меня уже много лет огорчает, что в этих диалогах амперсанд в метке поля ввода не приводит к созданию горячей клавиши. Т.ч. приходится извращаться и добавлять горячую клавишу в заголовок диалога — выглядит зачастую некрасиво, зато позволяет одним фиксированным аккордом перейти в поле ввода.

Re: prompt()

Posted: Thu 01 Sep, 2011 21:06
by Raistlin
Ну, я-то конкретно про prompt() говорю. Тут переходить некуда.

prompt()

Posted: Tue 12 Dec, 2017 15:31
by John Doe
Skirda wrote:
Tue 23 Aug, 2011 16:08
правильно я понял, что этот флаг по умолчанию выставлен для prompt?
Поскольку флаг 0x00000001 (FIB_ENABLEEMPTY) не задействован, его следует удалить из документации.