Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Design Time


dima_shapkin ©   (2004-09-09 16:17:00) 

Подскажите как в Design Time получить список указателей на все компоненты в проекте или хотя бы на формы?


dima_shapkin   (2004-09-10 13:14:00) [1]

Да я уже все понял, спасибо ToolIntf.pas forever....


FOX   (2004-09-10 12:29:00) [2]

Посмотри описание интерфейса TIToolServices в модуле ToolIntf.pas


dima_shapkin   (2004-09-10 10:50:00) [3]

Вот... Вот...
Так я же и про то :)))) ну вот ищу и не могу ничего путного найти...


Erik1   (2004-09-10 10:35:00) [4]

Тебе совсем другое надо, в delphi есть спецальный интерфейсы для работы с модулями и формами проекта. Название из головы вылетело вобщем посмотри IFormDesigner и пр..


dima_shapkin   (2004-09-10 10:18:00) [5]

Люди, люди...
Не я это придумал, просто нужно средство позволяющее ускорить процесс разработки. Либо просто вызывается пункт меню в Дельфе или просто кидается компонент, где запускается некий код из ObjIns или из конт. меню этого компонента. "Код" просматривает все компоненты в проекте, находит нужные и собирает необходимый код, копируя все это безобразие в буфер, откуда это просто вставляется в нужное место модуля. ВСЕ!!!!
Если компонент лежит на форме, то есенно без проблем
Owner.Components, а вот с другими формами?
Хм, в Run Time то все Easy, но хочется сделать то нормально, что бы все это можно было в Design Time.
Application.Components в Design Time дает все объекты самой среды Delphi, поэтому не могу ничего придумать....


Zeqfreed   (2004-09-09 19:27:00) [6]

2Дима Шапкин:
Можно получить дескрипторы хоть у чего и хоть в какое время. Достаточно либо перебирать все окна EnumWindows / EnumChildWindows либо юзать что-нибудь типа WindowFromPoint / ChildWindowFromPoint... но необходимо учесть, что при запуске проги дескрипторы изменятся. Если требуется что-то сделать с окнами на форме просто для забавы, видимо такой способ подойдет.
Если я неправильно что-то понял, прошу меня извинить.


Mim1   (2004-09-09 19:24:00) [7]

На понт взять пытаешся? Ну чтож, ябычно отвечаю когда меня на понт берут, только в конце ЛМД дописываю, не обессудь.

Вот процедура иницияализации одного из редакторов
procedure TWndRelEdit.Init;
 Procedure AddItems(const n: TTreeNode; const rl:TCkgRel);
 var i:Integer;
     s : string;
     nn:TTreeNode;
 begin
   for i:= 0 to rl.Count -1 do
     begin
       if rl[i].DataSet <> nil then
         s := rl[i].DataSet.name + ' (' + rl[i].DataSet.TableName + ')'
       else
         s := '{[------]}';
       nn := TreeView1.Items.AddChildObject(n,s,rl[i]);
       AddItems(nn,rl[i].SubRelations);
     end;
 end;
 Procedure AddChilds(const c:TComponent);
 var i:integer;
 begin
   for i:= 0 to c.ComponentCount-1 do
     begin
       if c.Components[i] is TCkgDocCtrlBar then
         ComboBox2.Items.AddObject(c.Components[i].Name, c.Components[i]);
       AddChilds(c.Components[i]);
     end;
 end;
var i:Integer;  
begin
 if Relation = nil then exit;
 if cmp = nil then exit;
 TreeView1.Items.BeginUpdate;
 try
   AddItems(nil,Relation);
   TreeView1.FullExpand;
 finally
   TreeView1.Items.EndUpdate;
 end;
 for i:= 0 to cmp.Owner.ComponentCount -1 do
   if cmp.Owner.Components[i] is TCkgDataSet then
     ComboBox1.Items.AddObject(cmp.Owner.Components[i].Name +
       ' (' + TCkgDataSet(cmp.Owner.Components[i]).TableName + ')',
          cmp.Owner.Components[i]);
 AddChilds(cmp.Owner);
end;


LMD


Anton_K   (2004-09-09 19:14:00) [8]

Ню ню, это вам дед мороз сказал?

Такой умный? Тогда ответь на вопрос ("Подскажите как в Design Time получить список указателей на все компоненты в проекте или хотя бы на формы?").


Mim1   (2004-09-09 19:10:00) [9]


> [8] Anton_K ©   (09.09.04 18:56)


Ню ню, это вам дед мороз сказал?


dima_shapkin   (2004-09-09 19:08:00) [10]

А когда кидаешь компонент на форму, это что красивая картинка????


Anton_K   (2004-09-09 18:56:00) [11]

Указатели на объекты можно получить только в Run Time!


dima_shapkin   (2004-09-09 18:32:00) [12]

Запущено приложение delphi32.exe, там загружен некий проект, абсолютно любым способом получить указатели на объекты(компоненты), которые присутствуют в проекте....
Блин, только не спрашивайте зачем это нужно....


dima_shapkin   (2004-09-09 18:22:00) [13]

1. При запуске метода из контекстного меню комопнента в design time
2. Либо при вызове визарда, эксперта, да хоть exe!!!!!!!!!!!!!! какая разница..........................


Erik1   (2004-09-09 17:54:00) [14]

А может стоит задуматся над ответом? Проверочный вопрос задать, где ты собираешся пробегатся и в какой момент?
Варианты:
1) На дереве во время гнездования.
2) В программе во время выполнения
3) В форме во время помещения компонента на форму.
4) В Wizard (спец случай).


dima_shapkin   (2004-09-09 17:39:00) [15]

Причем здесь мой или не мой компонент?
Как "пробежаться" по всем компонентам, которые присутствуют  в проекте в design time????


Erik1   (2004-09-09 17:31:00) [16]

В DesignTime может работать например твой компонент. У него есть конструктор в нем бывает стоит такая проверка:
if (csDesigning in ComponentState) then
Как ты думаеш, что это значить?


dima_shapkin   (2004-09-09 17:04:00) [17]

Гаврила
И как позвольте узнать?


Гаврила   (2004-09-09 16:54:00) [18]

Так же, как и в Run Time


Наверх

Титульная страница Поиск, карта сайта Написать письмо