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

Вниз

Design Time   Найти похожие ветки 

 
dima_shapkin   (2004-09-09 16:17) [0]

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


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

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


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

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


 
Erik1   (2004-09-09 17:31) [3]

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


 
dima_shapkin   (2004-09-09 17:39) [4]

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


 
Erik1   (2004-09-09 17:54) [5]

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


 
dima_shapkin   (2004-09-09 18:22) [6]

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


 
dima_shapkin   (2004-09-09 18:32) [7]

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


 
Anton_K ©   (2004-09-09 18:56) [8]

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


 
dima_shapkin   (2004-09-09 19:08) [9]

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


 
Mim1 ©   (2004-09-09 19:10) [10]


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


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


 
Anton_K ©   (2004-09-09 19:14) [11]

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

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


 
Mim1 ©   (2004-09-09 19:24) [12]

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

Вот процедура иницияализации одного из редакторов
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


 
Zeqfreed ©   (2004-09-09 19:27) [13]

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


 
dima_shapkin   (2004-09-10 10:18) [14]

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


 
Erik1   (2004-09-10 10:35) [15]

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


 
dima_shapkin   (2004-09-10 10:50) [16]

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


 
FOX ©   (2004-09-10 12:29) [17]

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


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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.091 c
4-1092800776
FastByte
2004-08-18 07:46
2004.09.26
Имя пользователя


4-1092140092
serg128
2004-08-10 16:14
2004.09.26
Как программно выключить аппаратное ускорение экрана?


14-1093947919
Труп Васи Доброго
2004-08-31 14:25
2004.09.26
Как работать с TIBUpdateSQL?


4-1092129289
BorH
2004-08-10 13:14
2004.09.26
Как узнать, есть ли птичка у ListItem у чужого ListView


3-1093431748
lehich
2004-08-25 15:02
2004.09.26
ADOQuery подскажите plz