Переключение диалогов в макросе

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Переключение диалогов в макросе

Post by Smitis »

Понадобилось в макросе рисовать разные диалоги и переключаться между ними. Иерархия - одноранговая, т.е. не из одного открыли другой, потом третий и закрыли в обратном порядке, а из любого можно открыть любой другой. Как оказалось, в ФАРе нет возможности удалить все элементы диалога и перерисовать его с другими, что бы обойтись одним диалогом (или я ошибся?).

Пока пришло в голову два решения:
1. При переключении закрывать диалог и переоткрывать его с другими items. Плохо, что при переключении всё мелькает на фоне панелей. Да и иницилизируется диалог каждый раз.
2. Создать несколько диалогов, открыть один и из диалоговой процедуры открывать другие. Для двух работает нормально. Для большего получается какая-то заумная логика переключения и, боюсь, будет опять мелькание на фоне первого диалога.

Есть ещё какие-нибудь варианты?
Разум когда-нибудь победит.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Переключение диалогов в макросе

Post by zg »

создать один диалог со всеми возможными элементами. при переключении нужные показывать, ненужные — скрывать.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: Переключение диалогов в макросе

Post by Alexey Samlyukov »

угу, в advcmp так и сделал. и в netbox, наверно, похоже.
на мантисе были иде про di_page, но оптимальных реализаций так и не было вроде.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Переключение диалогов в макросе

Post by Smitis »

Значит, придётся скрывать/показывать. Это же можно делать сразу после DialogInit до DialogRun?
Разум когда-нибудь победит.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Re: Переключение диалогов в макросе

Post by zg »

Smitis wrote:Значит, придётся скрывать/показывать. Это же можно делать сразу после DialogInit до DialogRun?
это можно даже до DialogInit делать: DIF_HIDDEN.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Переключение диалогов в макросе

Post by Smitis »

Пока остановился на невидимых элементах. Хотя, конечно, скорость прорисовки удручает - на глаз видно, как по диалогу проходит "волна" изменений.
Разум когда-нибудь победит.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Переключение диалогов в макросе

Post by Shmuel »

Smitis wrote:Пока остановился на невидимых элементах. Хотя, конечно, скорость прорисовки удручает - на глаз видно, как по диалогу проходит "волна" изменений.
Скорее всего это из-за того, что происходит перерисовка после прятания/показа каждого элемента. Перерисовку нужно запрещать во время замены элементов и разрешать только после её окончания, тогда "волны" не будет.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Re: Переключение диалогов в макросе

Post by Smitis »

О, с DM_ENABLEREDRAW теперь нормально. Не подумал :oops: Спасибо.
Разум когда-нибудь победит.
Post Reply

Return to “Нужна помощь”