DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by John Doe »

В структуре DI_LISTBOX предусмотрено поле только для верхнего заголовка.

Для того чтобы задать нижний можно использовать DM_LISTSETTITLES, но есть одно неудобство: сообщение отправленное после DialogInit, но до первого вызова DialogRun не подействует, а необходимо в обработчике ловить DN_INITDIALOG.

В общем-то не проблема, но кривовато (и дойти до этого надо экспериментально, т.к. в Энциклопедии о таких подробностях не пишется).

Или может быть стоит в консерватории поправить?
Если да, то как лучше?
а) указывать в Data оба заголовка, разделяя их \0 (при заданном MaxLength)
б) задействовать поле Reserved (интересно почему в FarDialogItem нет StructSize?)
в) Передавать в каком-то поле указатель на FarListTitles
г) позволить использовать DM_LISTSETTITLES до DialogRun.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by zg »

John Doe wrote:В общем-то не проблема, но кривовато
почему?
John Doe wrote:(интересно почему в FarDialogItem нет StructSize?)
потому что в DialogInit передаётся массив этих структур.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by John Doe »

zg wrote: почему?
Заголовки известны заранее, и прямым мог бы называться способ, позволяющий их задать сразу, через FarDialogItem.

Я не утверждаю, что как сейчас это ненормально, но хотелось бы немножно прямее.
Имеет смысл оставить пожелание на мантисе?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by zg »

John Doe wrote:Заголовки известны заранее, и прямым мог бы называться способ, позволяющий их задать сразу, через FarDialogItem.
не вижу какого-либо принципиального выигрыша по сравнению с тем, что есть сейчас.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by John Doe »

Принципиального может и нет, но было бы удобнее. Даже вариант г).
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by zg »

John Doe wrote:Даже вариант г).
вы ж пишете, что вариант г сейчас не работает. значит писали код, проверяли. почему, если вам уж прямо так надо, чтобы было лично вам было удобнее, не позаботится о удобстве того, кто будет реализовывать пункт г, и выложить код, демонстрирующий проблему сразу?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by John Doe »

Code: Select all

local h = far.DialogInit("",0,0,20,6,nil,{{"DI_LISTBOX",3,1,16,5,{},nil,nil,"DIF_NONE",nil}},0)
h:send("DM_LISTSETTITLES",1,{Title="Title",Bottom="Bottom"})
far.DialogRun(h)
h:send("DM_LISTSETTITLES",1,{Title="Title",Bottom="Bottom"})
far.DialogRun(h)
far.DialogFree(h)
Первый раз пробую установить заголовки сразу после DialogInit, безуспешно.
После того как DialogRun возвращает управление пробую ещё раз, уже упешно (как показывает повторный запуск DialogRun).
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DI_LISTBOX: нет простой возможности задать нижний заголовок списка

Post by zg »

как обычно в фаре DialogInit практически ничего не инициализирует, а реально всё происходит в DialogRun. на момент первого DM_LISTSETTITLES листбокса просто нет, поэтому устанавливать нечего.
Post Reply

Return to “Разработка плагинов”