Главная страница
    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.48 MB
Время: 0.033 c
14-1094329805
Viking
2004-09-05 00:30
2004.09.26
Практичный программист - ???


1-1095061651
kukuikar
2004-09-13 11:47
2004.09.26
Как FlashGet или Net Transport


14-1094238166
KilkennyCat
2004-09-03 23:02
2004.09.26
Предложение модераторам.


1-1095000503
Gear
2004-09-12 18:48
2004.09.26
Как сделать, чтобы форму нельзя было закрыть и уничтожить пока


14-1094098942
Viking
2004-09-02 08:22
2004.09.26
О браузере...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский