Как узнать количество элементов в диалоге?

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

Как узнать количество элементов в диалоге?

Post by John Doe »

Есть потребность в ProcessDialogEvent получить общее количество элементов.
Не нашёл другой возможности, кроме как вызывать DM_GETDLGITEM(SHORT) до тех пор, пока для очередного ID не вернётся FALSE.
Я что-то упускаю? Или это нормальная практика?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Как узнать количество элементов в диалоге?

Post by NightRoman »

Делаю так же, другого способа не нашел. Вряд ли это нормальная практика. Наверное, просто мелкая недоработка.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Как узнать количество элементов в диалоге?

Post by Shmuel »

far.MacroExecute("return Dlg.ItemCount")[1] :)
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Как узнать количество элементов в диалоге?

Post by DrKnS »

А
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:

Как узнать количество элементов в диалоге?

Post by John Doe »

Элементы хотелось обработать в обратном порядке, например передать фокус последнему.
User avatar
Xerox
Posts: 395
Joined: Sun 20 Oct, 2019 15:50
Has thanked: 354 times
Been thanked: 9 times

Как узнать количество элементов в диалоге?

Post by Xerox »

Shmuel wrote: Wed 22 Jul, 2015 12:08 far.MacroExecute("return Dlg.ItemCount")[1]
при инициализации диалога:

Code: Select all

evt == far.Flags.DE_DLGPROCINIT and fde.Msg == far.Flags.DN_INITDIALOG
количество элементов всегда 0 (ноль).
Но они есть, если обращаться по индексу:

Code: Select all

far.GetDlgItem(hDlg, i)
Нужно для увелeчения размера диалога, т.е. перестроения элементов:
Динамическое или заданное изменение размеров ВСЕХ диалогов, меню, списков в зависимости от размера консоли, а ткж сдвиг
Ну лично я обошелся workaround-м, но отмечаю что хотелось бы получать все что нужно более консистентно
Если же прогонять ваш кода в макросе (не в евенте), то там да,
все будет уже хорошо, но уже поздно и не нужно :)
Last edited by Xerox on Tue 10 Dec, 2019 21:05, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Как узнать количество элементов в диалоге?

Post by buniak_a_h »

Хотя тема старая, но вдруг кто-то наткнётся поиском .
Ответ на первое сообщение темы - Dlg.ItemCount
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Как узнать количество элементов в диалоге?

Post by zg »

buniak_a_h wrote: Tue 10 Dec, 2019 22:40 Хотя тема старая, но вдруг кто-то наткнётся поиском .
Ответ на первое сообщение темы - Dlg.ItemCount
этот ответ есть в третьем сообщении.
Post Reply

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