В структуре DI_LISTBOX предусмотрено поле только для верхнего заголовка.
Для того чтобы задать нижний можно использовать DM_LISTSETTITLES, но есть одно неудобство: сообщение отправленное после DialogInit, но до первого вызова DialogRun не подействует, а необходимо в обработчике ловить DN_INITDIALOG.
В общем-то не проблема, но кривовато (и дойти до этого надо экспериментально, т.к. в Энциклопедии о таких подробностях не пишется).
Или может быть стоит в консерватории поправить?
Если да, то как лучше?
а) указывать в Data оба заголовка, разделяя их \0 (при заданном MaxLength)
б) задействовать поле Reserved (интересно почему в FarDialogItem нет StructSize?)
в) Передавать в каком-то поле указатель на FarListTitles
г) позволить использовать DM_LISTSETTITLES до DialogRun.
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
почему?John Doe wrote:В общем-то не проблема, но кривовато
потому что в DialogInit передаётся массив этих структур.John Doe wrote:(интересно почему в FarDialogItem нет StructSize?)
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
Заголовки известны заранее, и прямым мог бы называться способ, позволяющий их задать сразу, через FarDialogItem.
Я не утверждаю, что как сейчас это ненормально, но хотелось бы немножно прямее.
Имеет смысл оставить пожелание на мантисе?
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
не вижу какого-либо принципиального выигрыша по сравнению с тем, что есть сейчас.John Doe wrote:Заголовки известны заранее, и прямым мог бы называться способ, позволяющий их задать сразу, через FarDialogItem.
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
Принципиального может и нет, но было бы удобнее. Даже вариант г).
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
вы ж пишете, что вариант г сейчас не работает. значит писали код, проверяли. почему, если вам уж прямо так надо, чтобы было лично вам было удобнее, не позаботится о удобстве того, кто будет реализовывать пункт г, и выложить код, демонстрирующий проблему сразу?John Doe wrote:Даже вариант г).
- John Doe
- Бюрократ
- Posts: 13853
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
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)
После того как DialogRun возвращает управление пробую ещё раз, уже упешно (как показывает повторный запуск DialogRun).
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
DI_LISTBOX: нет простой возможности задать нижний заголовок списка
как обычно в фаре DialogInit практически ничего не инициализирует, а реально всё происходит в DialogRun. на момент первого DM_LISTSETTITLES листбокса просто нет, поэтому устанавливать нечего.