Понадобилось в макросе рисовать разные диалоги и переключаться между ними. Иерархия - одноранговая, т.е. не из одного открыли другой, потом третий и закрыли в обратном порядке, а из любого можно открыть любой другой. Как оказалось, в ФАРе нет возможности удалить все элементы диалога и перерисовать его с другими, что бы обойтись одним диалогом (или я ошибся?).
Пока пришло в голову два решения:
1. При переключении закрывать диалог и переоткрывать его с другими items. Плохо, что при переключении всё мелькает на фоне панелей. Да и иницилизируется диалог каждый раз.
2. Создать несколько диалогов, открыть один и из диалоговой процедуры открывать другие. Для двух работает нормально. Для большего получается какая-то заумная логика переключения и, боюсь, будет опять мелькание на фоне первого диалога.
Есть ещё какие-нибудь варианты?
Переключение диалогов в макросе
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Переключение диалогов в макросе
создать один диалог со всеми возможными элементами. при переключении нужные показывать, ненужные — скрывать.
- Alexey Samlyukov
- Posts: 1765
- Joined: Tue 15 Mar, 2005 17:28
- Been thanked: 7 times
- Contact:
Re: Переключение диалогов в макросе
угу, в advcmp так и сделал. и в netbox, наверно, похоже.
на мантисе были иде про di_page, но оптимальных реализаций так и не было вроде.
на мантисе были иде про di_page, но оптимальных реализаций так и не было вроде.
- zg
- zero-gravity
- Posts: 6035
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Re: Переключение диалогов в макросе
это можно даже до DialogInit делать: DIF_HIDDEN.Smitis wrote:Значит, придётся скрывать/показывать. Это же можно делать сразу после DialogInit до DialogRun?
- Smitis
- Posts: 1709
- Joined: Fri 18 Mar, 2005 12:51
- Location: Питер
- Has thanked: 23 times
- Been thanked: 55 times
Re: Переключение диалогов в макросе
Пока остановился на невидимых элементах. Хотя, конечно, скорость прорисовки удручает - на глаз видно, как по диалогу проходит "волна" изменений.
Разум когда-нибудь победит.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Переключение диалогов в макросе
Скорее всего это из-за того, что происходит перерисовка после прятания/показа каждого элемента. Перерисовку нужно запрещать во время замены элементов и разрешать только после её окончания, тогда "волны" не будет.Smitis wrote:Пока остановился на невидимых элементах. Хотя, конечно, скорость прорисовки удручает - на глаз видно, как по диалогу проходит "волна" изменений.