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

Вниз

Интересные факты о TreeView   Найти похожие ветки 

 
tazik ©   (2004-12-18 19:13) [0]

Всем привет!

Я пишу такую штуку: Создаю на форме объекты и одновременно создаю Node"ы в TreeView. В качестве надписи для node я использую имя создаваемого объекта. Потом я хочу обратиться к объекту по его имени, используя дерево.


node := TreeView1.selected;
...
TButton(FindComponent(treeView1.items[node.index].text)).free;


Или


Edit1.text := Button(FindComponent(treeView1.items[node.index].text)).name;


Но возникает Access violation. Почему? как избежать этой ситуации?


 
Palladin ©   (2004-12-18 19:42) [1]

во первых selected может быть nil, во вторых компонент может быть не найден...


> как избежать этой ситуации?

думать иногда


 
begin...end ©   (2004-12-18 21:50) [2]

> tazik ©   (18.12.04 19:13)

> как избежать этой ситуации?

Писать с проверками, чтобы не допустить случаев, описанных в [1]. Например, так:

var
 Node: TTreeNode;

begin
 Node := TreeView.Selected;
 if Assigned(Node) then
   ...
end.


Если находимый компонент нужно уничтожить (Free), то в этом случае, думаю, не обязательно проверять, нашёлся компонент или нет, т.к. метод Free сам делает проверку на NIL. Т.е. можно сразу написать:

FindComponent(TreeView.Items[Node.Index].Text).Free.

В случае, когда нужно обращаться к каким-нибудь свойствам или методам (НЕ методам класса) находимого компонента, то проверка необходима, например:

var
 Comp: TComponent;

begin
 ...
 Comp := FindComponent(TreeView.Items[Node.Index].Text);
 if Assigned(Comp) then
   if Comp is TButton then
     TButton(Comp).Default := True
end.


 
tazik ©   (2004-12-18 22:13) [3]

Огромное спасибо, гуру!!!!!



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

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

Наверх




Память: 0.47 MB
Время: 0.07 c
1-1103122513
Erik1
2004-12-15 17:55
2005.01.02
Как получить свойство ReadOnly в неизвестном наследнике?


14-1102515188
CainikDenis
2004-12-08 17:13
2005.01.02
Где поить пивом Easy???


14-1102704932
Hypercube
2004-12-10 21:55
2005.01.02
Лицензионные соглашения


14-1103106994
}|{yk
2004-12-15 13:36
2005.01.02
От курения глупеют, доказали ученые


1-1102996265
OnEvent
2004-12-14 06:51
2005.01.02
Как отловить сообщение OnMouseWheel которое происходит над моим