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

Вниз

Как узнать всех наследников TForm и TDataModule в проекте?   Найти похожие ветки 

 
Doma ©   (2006-11-28 19:04) [0]

Всем привет!

Создал компонет, сделал к нему дизайнер. В дизайнере хочу вывести список форм и датамодулей с их компонентами. Но изначально знаю, только владельца компонента, а вот как узнать о других формах и датамодулях проекта (название класса и название модуля) ?

Спасибо за помощь!


 
Юрий Зотов ©   (2006-11-28 23:28) [1]

$(Delphi)\Source\ToolsAPI\ToolsAPI.pas

Там список интерфейсов, предоставляемых IDE.

Берем (BorlandIDEServices as Нужный_Интерфейс) - и вперед.


 
Doma ©   (2006-11-29 10:42) [2]

Спасибо конечно, но никакого ответа я для себя не получил :(
ToolsAPI - использую давно... но сделать конкретно то, что хочу не получилось... знаю, как до всех модулей проекта добраться... но неужели надо в исходнике искать строку " = class(TForm)", если кто знает более простой способ, может метод какой-нибудь... в интерфейсах... буду очень признателен!


 
icWasya ©   (2006-11-29 14:40) [3]

IOTAProject.GetModule(I).FormName ??


 
Doma ©   (2006-11-29 16:18) [4]

>> IOTAProject.GetModule(I).FormName ??
Этот метод возвращает название формы, а мне нужен класс...


 
icWasya ©   (2006-11-29 16:37) [5]

А если вспомнить, как называбтся формы в проекте ?
type
 TMainForm=class(TForm)
 ..
end;
var
 MainForm:TMainForm;

а в  Object Inspector показывается
в заголовке
MainForm:TMainForm;
среди свойств
Name : MainForm

и при попытке заменить Name на что-нибудь другое меняется и название класса


 
Doma ©   (2006-11-29 17:14) [6]

Да, действительно... теперь остается вопрос, как из названия класса получить объект?


 
DrPass ©   (2006-11-29 17:58) [7]


> теперь остается вопрос, как из названия класса получить
> объект?

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


 
Doma ©   (2006-11-29 18:10) [8]

Дезайнер не видит компонент шире, чем модуль в котором открык...
GetComponent на объект друго модуля выдает nil.
Может я и ошибаюсь, но у меня не получилось... :(


 
doma ©   (2006-11-29 18:13) [9]

Designer.FindRootAncestor выдал вроде что-то похожее на правду...


 
Doma ©   (2006-11-29 18:29) [10]

Теперь возникает вопрос, а как из дезайнкра одного модуля, получить доступ к дизайнеру другого т.е. опишу свою ситуацию:
Бросил свою компоненту на форму, открываю дезайнер компонеты, там у меня список форм и датамодулей проекта с их событиями... мне нужно чтобы по клику на событие создавался обработчик (Designer.CreateMethod), но чтобы это работало и в других модулях...


 
Юрий Зотов ©   (2006-11-29 20:38) [11]

> как из дезайнкра одного модуля, получить доступ к дизайнеру другого

Видимо, никак. Надо получить другой дизайнер не через первый, а так же, как был получен первый.

А в чем проблема? Разве там не цикл по модулям? Вот с каждым модулем и работаем - GetModule(I).



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
2-1197278553
malyar
2007-12-10 12:22
2008.01.06
stringgrid какая яцейка находится под курсором мыши


5-1164729857
Doma
2006-11-28 19:04
2008.01.06
Как узнать всех наследников TForm и TDataModule в проекте?


15-1196676079
Cerber
2007-12-03 13:01
2008.01.06
adsl и соеденение через сотовый телефон


9-1163873357
Masterok
2006-11-18 21:09
2008.01.06
delphix - undeclared identifier angle


2-1196876199
greg123
2007-12-05 20:36
2008.01.06
Изменение цвета, кот. подсвечивается выделенный текст в RichEdit