![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обратиться к объекту, если еасть его имя. [D7, WinXP]
tazik © (2005-01-25 21:01:00)Здравствуйте!
Пишу такую прогу. Есть уменя на форме объекты определенных типов. Хочу составить дерево этих объектов, подобно Object Explorer
пример кода:
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
var Comp: TComponent;
begin
Comp := TComponent(FindComponent(node.Text));
if Assigned(Comp) then
begin
if Comp.ClassName = 'TTabSheet' then (*)
showMessage(comp.name);
...
Но когда выполяется (*) выскакивает Access violation. Что делать?
Gero (2005-01-25 21:51:00) [21]> procedure TreeView1Change
Ты уверен, что в твоем исходнике все именно так?
Gero (2005-01-25 21:50:00) [22]
> tazik © (25.01.05 21:48)
И ты уверен, что у тебя имеется компонент с именем Tab1?
tazik (2005-01-25 21:48:00) [23]> Gero
У меня Node.text := TabSheet.name;
В конкретном случае Node.text := 'Tab1';
Gero (2005-01-25 21:46:00) [24]Node.text
tazik (2005-01-25 21:44:00) [25]> Gero
Значение какого свойства, вы хотете узнать?
Gero (2005-01-25 21:43:00) [26]
> tazik © (25.01.05 21:42)
Ответь на [18].
tazik (2005-01-25 21:42:00) [27]> Gero
Дерево строю посредством процедур, выписанных в отдельном файле.
Gero (2005-01-25 21:39:00) [28]
> tazik © (25.01.05 21:35)
Я не знаю, как ты строишь дерево, зато вижу что FindComponent возвращает nil.
tazik (2005-01-25 21:35:00) [29]> to Gero.
Подождите, дерево я строю по имеющимся объектам. Потом, когда щелкаю по node в treeView, пытаясь получить инфу об объекте, получаю такие новости, типа AV.
begin...end (2005-01-25 21:32:00) [30]> [17] tazik © (25.01.05 21:30)
Эта проверка НУЖНА , понимаете?
Gero (2005-01-25 21:32:00) [31]
> tazik © (25.01.05 21:30)
У тебя нет объекта с именем Node.text, если ты еще не понял.
Gero (2005-01-25 21:30:00) [32]
> tazik © (25.01.05 21:28
Значение свойства какое?
tazik (2005-01-25 21:30:00) [33]> to begin...end
Ситуация изначально такая. Если проверку поставить, то av не возникает. Если не поставить, то возникает.
tazik (2005-01-25 21:28:00) [34]Node.text - имя объекта.
begin...end (2005-01-25 21:27:00) [35]> [12] tazik © (25.01.05 21:24)
Теперь уже я ничего не понимаю. Сначала (Ваш первый пост) Вы говорили, что AV в строке '*' возникает, если есть проверка на Assigned. Теперь говорите, что в случае наличия проверки AV не возникает. Как это понимать?
Gero (2005-01-25 21:26:00) [36]
> Если поставить проверку, то AV не возникает.
На мысли не наталкивает?
Смотри [1] в общем.
Gero (2005-01-25 21:26:00) [37]Проще говоря, скажи чему у тебя равно node.Text.
tazik (2005-01-25 21:24:00) [38]Нет, не совсем. Если поставить проверку, то AV не возникает.
begin...end (2005-01-25 21:23:00) [39]> [9] tazik © (25.01.05 21:21)
Т.е. что с проверкой, что без проверки - AV на одной и той же строчке?
tazik (2005-01-25 21:22:00) [40]пробовал и так:
Comp := FindComponent(node.Text)
Разницы нет. Всеравно AV!