![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FindComponent :(
Sam Stone © (2002-08-18 09:21:00)В библиотеке Classes есть метод FindComponent. Он мне очень помог. А есть ли подобное в KOL? А то Classes 100 кило к экзешнику прилепляет :(
Gandalf (2002-08-18 19:00:00) [1]>Не, просто я не очень понял то, что ты мне написал :(. Я не >очень силен в Delphi :(
Так вот, вообще-то у компонентов в KOL нет свойства Name (в режиме запуска - run-time). Потому найти его (по имени) НЕВОЗМОЖНО.
Но есть имя класса и текст окна. Тут пример поиска по тексту окна (ну несовсем поиска - просто колекционирование)
Извини друг, но может тогда рано еще KOLnMCK - переходить?
Только не обижайся.
Sam Stone (2002-08-18 11:51:00) [2]Не, просто я не очень понял то, что ты мне написал :(. Я не очень силен в Delphi :(
Gandalf (2002-08-18 11:42:00) [3]А ты FindComponent видел? Куда уж проще? Обычная рекурсия.
Sam Stone (2002-08-18 11:00:00) [4]а че-нить по-проще?
Gandalf (2002-08-18 10:23:00) [5]Попробуй типа этого.
TIfaceItem=record
Control:PControl;
Name:String;
end;
var
ControlList:array of TIfaceItem;
procedure EnumControls(Owner:PControl);
var
i:Integer;
TMPStr:array [0..255] of Char;
begin
For i:=0 to Owner.ChildCount-1 do
begin
SetLength(ControlList,Length(ControlList)+1);
with ControlList[Length(ControlList)-1] do
begin
Control:=Owner.Children[i];
GetWindowText(Owner.Children[i].Handle,@TMPStr,SizeOf(TMPStr));
// SendMessage(Owner.Children[i].Handle,WM_GETTEXT,SizeOf(TMPStr),DWord(@TMPStr));
Name:=String(TMPStr);
EnumControls(Owner.Children[i]);
end;
end;
end;
EnumControls(Form1.Form).
Только сбор информации замени на сравнение и выход из перебора.