|
Тема |
Достигане до всички форми във DesignTime |
|
Автор | LSS (Нерегистриран) | |
Публикувано | 16.09.05 14:57 |
|
|
Здравейте народе!
Слбъсках се с едно на пръв поглед нестрашно проблемче, но ето, че вече камара часове ровя в помощната система на Delphi-то и в нета и не намирам нищо по въпроса.
Първо, ако засягам коментирана тема, моля да ме извините, но наистина не мога преровя всички постинги.
Ето и какъв е проблема. Във връзка с изискванията на една компонента над която се мъча в момента се наложи, да се сдобия с референции на всички обекти от тип TForm, TDataModule, TFrame и така нататък, в DesignTime времето . Разбира се логично е човек да се захване с приятеля Designer на TPropertyEditor или TComponentEditor. Логично но не върши работа. Успях да се сдобия със списък с имената на всички форми добавени в проекта, като използвам callback функция викана от Designer.GetProjectModules(Proc) и съответно се надявах да получа и референции към самите форми като да кажем обходя тоя списък и поискам Designer.GetComponent(ComponentName).
Оказа се, че последната функция ми връща валидна референция, само за тази форма, за която в момента се е Hook-нал IDesigner-а. За всички останали форми са Getcomponent(ComponentName) връща nil.
И така... реших, че валидно копие се потдържа само за текущо редактираната форма в Designer-а (вече не мисля така) и реших, че мога да си създавам сам референциите за формите които ме интересуват... За целта реших да използвам низовата променлива DesignClass на callback функцията дето я подавам на Designer.GetProjectModules(Proc) и после да направя нещо от рода:
Designer.CreateComponent(TForm(GetClass(DesignClass)), nil)
за да се с сдобия с така желаната референция, ама уви низа DesignClass се оказа празен за всяка една форма дето присъства в проекта. Дори и за Текущата...
Друго което ми хрумна, е по някакъв начин да сменям Root-а на Designer последнователно с всяка една форма (нали имам все пак списък с имената им), ама не намерих начин да го направя... Първо Root е само за четене и второ все още не съм намерил начин да разбера коя форма от кой клас е.
Та това ми е проблема.
Благодаря на всички дето имаха търпение да изчетат до тук, както и на всички, които евентуално могат да помогнат с нещо по въпроса.
Ако трябва да го обобщим, проблема се свежда до намирането на refereances на всички обекти TPersistent и TComponent в текущо редактиран проект в Delphi IDE, кото ще рече че говорим за DesignTime.
Благодаря предварително.
ПП. Става дума за Delphi 6
|
| |
|
|
|