prompt()

Здесь обсуждается всё, что касается макросов.
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: prompt()

Post by Skirda » Tue 23 Aug, 2011 15:46

Latest post of the previous page:

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

ы?
We are the Borg. You will be assimilated.
So Say We All!

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: prompt()

Post by John Doe » Tue 23 Aug, 2011 15:51

http://api.farmanager.com/ru2/macro/macrocmd/prop_func/general.html#prompt wrote:

Code: Select all

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

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 15:54

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

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: prompt()

Post by Skirda » Tue 23 Aug, 2011 15:55

John Doe wrote:Я что-то напрочь не пойму смысл этого флага. Сейчас он ни на что не влияет.
http://api.farmanager.com/ru2/service_f ... utbox.html
We are the Borg. You will be assimilated.
So Say We All!

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

Re: prompt()

Post by John Doe » Tue 23 Aug, 2011 15:59

Raistlin wrote:...но народ (Yegor) выше беспокоился о совместимости
Тут глобальный слом, а они о совместимости..

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 16:03

Вообще да, ну их в топку, какие-то непонятные рудименты. А то будем все этот флаг постоянно пририсовывать :).
Magically yours
Raistlin

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: prompt()

Post by Skirda » Tue 23 Aug, 2011 16:08

правильно я понял, что этот флаг по умолчанию выставлен для prompt?
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Tue 23 Aug, 2011 16:12

Да.
Magically yours
Raistlin

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Thu 01 Sep, 2011 20:30

Мне кажется, среди флагов есть еще пара кандидатов в морг:

Code: Select all

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

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: prompt()

Post by Skirda » Thu 01 Sep, 2011 20:35

на счет 0x00000020 - это копипасте из другого места.
у GetString (на чем паразитирует промпт) можно выводить еще чекбокс.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Thu 01 Sep, 2011 20:44

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

Code: Select all

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

User avatar
HaRT
Moderator
Posts: 9083
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 157 times

Re: prompt()

Post by HaRT » Thu 01 Sep, 2011 20:59

Raistlin wrote:Второй так уж точно - куда переходить по горячей клавише в диалоге, где только одно поле и больше ничего? Ну, конечно, если заодно указать первого кандидата, то появляются еще две (бессмысленные) кнопки - можно, значит, сначала встать на них, а потом вернуться в поле редактирования - по горячей клавише, ага.
В Фаре есть несколько стандартных диалогов именно такого вида: поле ввода с меткой и кнопки OK и Cancel. И как раз меня уже много лет огорчает, что в этих диалогах амперсанд в метке поля ввода не приводит к созданию горячей клавиши. Т.ч. приходится извращаться и добавлять горячую клавишу в заголовок диалога — выглядит зачастую некрасиво, зато позволяет одним фиксированным аккордом перейти в поле ввода.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
Raistlin
Posts: 698
Joined: Wed 16 Mar, 2005 16:01
Location: St. Petersburg
Has thanked: 1 time
Been thanked: 1 time
Contact:

Re: prompt()

Post by Raistlin » Thu 01 Sep, 2011 21:06

Ну, я-то конкретно про prompt() говорю. Тут переходить некуда.
Magically yours
Raistlin

User avatar
John Doe
Бюрократ
Posts: 12457
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 33 times
Been thanked: 188 times

prompt()

Post by John Doe » Tue 12 Dec, 2017 15:31

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

Post Reply

Return to “Обсуждение макросов”