Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];

Вниз

Как узнать всех наследников 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
2-1197368702
В. Алексей
2007-12-11 13:25
2008.01.06
Сдвиговый регистр в delphi


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


2-1197204556
istok
2007-12-09 15:49
2008.01.06
Запись в файл на winapi


2-1197112580
Петр
2007-12-08 14:16
2008.01.06
семитировать ввод в поле с клавиатуры


2-1197120040
dim
2007-12-08 16:20
2008.01.06
Ввод в поле TEdit1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский