Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как обратиться к объекту, если еасть его имя. [D7, WinXP]


Страницы:   1 2 3

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!


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо