Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

Как получить список открытых форм в Delphi?   Найти похожие ветки 

 
Viking   (2003-09-18 10:10) [0]

Добрый день!
У меня следующий вопрос:
Как получить список всех открытых форм в Delphi в design time?
Это необходимо для компонента - который должен получать список контролов на произвольной форме в режиме проектирования (design time) и, в общем случае, запоминать его для дальнейшего использования.
Грубо говоря, алгоритм примерно следующий:
есть два ListBox"a, в первом список форм, а во втором список контролов выбранной формы.
Всё это нужно в design time.

Заранее спасибо.


 
Song ©   (2003-09-18 10:25) [1]

Анализируй dpr файл. Формы, создащиеся автоматически, создаются через метод TApplication.CreateForm()


 
Vovchik_A ©   (2003-09-18 10:32) [2]


ComboBox1.Items.Clear;
For J:=0 to Screen.FormCount-1 Do
ComboBox1.Items.Add(Screen.Forms[j].Caption);

Поможет ?


 
Calm ©   (2003-09-18 11:12) [3]


> Поможет ?

Не поможет. Спрашивали про design-time. Да еще открытых форм, а не всех подряд


 
Viking   (2003-09-18 11:18) [4]

В данном случае имеется в виду не режим работы программы,
а режим её разработки.

Для компонента (csDesigning in ComponentState).

Анализ файла проекта DPR не подходит, т.к. в общем случае искомая форма может быть наследована от базовой формы.

Должно быть решение типа -
FindWindow для delphi32.exe
и ищем все дочерние формы, унаследованные от, например, TForm...


 
Song ©   (2003-09-18 11:29) [5]

Ну ты захотел.. :)
В таком случае только на support@borland.com :)


 
Viking   (2003-09-18 12:40) [6]

Ну...
Это не тот ответ, который мне нужен! ;-)


 
Song ©   (2003-09-18 12:43) [7]

Ну раз не тот, значит используй EnumWindows(). Она перечислит тебе все окна верхнего уровня. На них проверяй принадлежность к классу TForm и проверяй IsWindowVisible(), IsIcon() ну и др., которые нужны. Только имей ввиду, что пользователь может изменить свойство Name формы. Изменится ли при этом класс, я не знаю, проверять лень ;)


 
Viking   (2003-09-18 12:49) [8]

Спасибо!
Сейчас попробую...



Страницы: 1 вся ветка

Текущий архив: 2003.09.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-96083
Filat
2003-09-09 20:50
2003.09.29
IBTable.Locate - чем можно заменить?


14-96432
jack128
2003-09-10 13:09
2003.09.29
Именинники 10 сентября


11-96158
nsvi
2003-01-08 03:24
2003.09.29
Опять по Proxies.dcu.


7-96467
АлеКо
2003-07-18 09:36
2003.09.29
Определить ОС


3-96116
P0tia
2003-09-09 10:21
2003.09.29
Как узнать количество листов в Excel