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

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

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

Post by John Doe »

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

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

Post by NightRoman »

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

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

Post by Shmuel »

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

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

Post by DrKnS »

А
John Doe wrote: Есть потребность
Зачем?
User avatar
John Doe
Бюрократ
Posts: 12997
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

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

Post by John Doe »

Элементы хотелось обработать в обратном порядке, например передать фокус последнему.
User avatar
Xerox
Posts: 392
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.
buniak_a_h
Posts: 2285
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

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

Post by buniak_a_h »

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

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

Post by zg »

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

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