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

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

Странная работа TreeView [D7, WinXP]


Страницы:   1 2

APXi ©   (2007-09-18 08:32:00) 

Есть фрейм с деревом и одной кнопкой, а также внутреннее поле fRootNode.
В конструкторе фрейма создаем fRootNode

constructor TFrame2.Create(AOwner: TComponent);
begin
 inherited;
 fRootNode := TreeView1.Items.AddObject(nil, '111', nil);
 TreeView1.Items.AddChild(fRootNode, '123');
end;

А при нажатии на кнопку выводим

procedure TFrame2.Button1Click(Sender: TObject);
begin
 ShowMessage(fRootNode.Text);
end;

Данный фрейм положен на форму.
При запуске и нажатии кнопки возникает ошибка, либо Access Violation, либо при просмотре в отладчике, всякая ерунда не похожая на fRootNode;
Что может быть?


APXi   (2007-09-18 10:28:00) [21]

> С какого перепугу в конструкторе ты обращаешься к TreeView1, если этот контрол будет создан после завершения конструктора
Он будет создан при вызовет inherited, а после этого я к нему обращаюсь.

Точно косяк при смене Parenta.
Пока вижу решение в передаче Parenta в конструктор.
Может кто еще чего подскажет?


DVM   (2007-09-18 10:26:00) [22]


> APXi   (18.09.07 08:32)  

Твое Create у фрейма и OnCreate формы - это совершенно разные вещи. У формы в момент вызова OnCreate она уже создана и создано все что на ней, у фрейма в Create ничего еще не создано. Отсюда AV.

И вообще, на кой ляд тебе эти фреймы - возьми форму - все то же самое, но удобнее и без глюков, которые у фреймов все же наблюдаются.


Сергей М.   (2007-09-18 09:56:00) [23]


> косяк при присваивании Parent


Фигня какая-то ...

С какого перепугу в конструктореты обращаешься к TreeView1, если этот контрол будет создан послезавершения конструктора ?


APXi   (2007-09-18 09:50:00) [24]

Кажется косяк при присваивании Parent, у формы например меняется Handle, наверное это также влияет и на TreeView с его нодами


APXi   (2007-09-18 09:43:00) [25]

Если сделать кнопку №2 и в ней создавать новую Ноду и записывать ее в другое поле, а при нажатии кнопки № 3 показывать данные из этого поля то все работает нормально.
Такая же фигня, если сделать форму вместо фрейма и присвоить ей например Parent=form1.panel1.


clickmaker   (2007-09-18 09:35:00) [26]


> Возможно, в конструкторе фрейма еще не создано окно TreeView

если б так, то AV бы вылетело уже в Create


MBo   (2007-09-18 08:41:00) [27]

Возможно, в конструкторе фрейма еще не создано окно TreeView, отсюда и ошибка. Для формы подобные проблемы преодолеваются, например,  переносом кода  в перекрытый метод CreateWnd


Страницы:   1 2

Наверх

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