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

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

TTreeView + event


Алексей Иванов ©   (2009-05-26 07:58:00) 

Добрый день, Мастера!

При попытке назначить, хотя скорее, при попытки выполнения процедуры, указанной в качестве события TTreeView.OnCollapsing вылетает ошибка: аксес виолэйшн. Не могу понять, что ему не нравится. Делаю так:
var
 MyTV:TMyTreeView;
implementation

procedure OnColl(Sender: TObject; Node: TTreeNode;
   var AllowCollapse: Boolean);
begin
 Node.ImageIndex:=2;
end;

...
MyTV:=TMyTreeView.Create(Form1);
MyTV.Parent:=Form1;
@MyTV.OnCollapsing:=@OnColl; // Здесь все проходит гладко

Теперь если пытаемся сжать ветку, то происходит ошибка.

Пока писал свой вопрос - появилась мысль )))
Видимо в процедуре OnColl не передается параметр Node:TTreeNode.
Как в этом случае его правильно передать? И вообще не поняно как с этими eventam'и работать. Если предложите через глобальные переменные или, например, MyTV.Selected - не принимается, т.к. для чего все evevnt имеют типы типа Proc(Sender:TObject, ... , ..., ...), если их нельзя как-то автоматически передавать???
Прошу прощения, накипело.


Amoeba   (2009-05-26 11:03:00) [1]

А вот и ссылка на эту статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


KSergey   (2009-05-26 10:32:00) [2]

ааа, блин, я как всегда просмотрел половину :(

Автор, наберите в гугле "жизнь и смерть в режиме run-time" (прямо так, с кавычками) и почитайте эту статью с королевства.
Много вопросов отпадет.


Алексей Иванов   (2009-05-26 08:50:00) [3]

Ну вот так бы сразу!
Спасибо!


Сергей М.   (2009-05-26 08:42:00) [4]


> Здесь все проходит гладко


Ребенок кричит-надрывается, мамкину сиську просит, а ему соску заткнули да еще и скочем примотали..

Жесть, но ассоциация самая что ни на есть прямая)


Сергей М.   (2009-05-26 08:38:00) [5]


> OnCollapsing - это стандартное свойство TTreeView


Это не просто свойство. это свойство-событие.
А свойству-событию может быть присвоено значение типа процедурный методобъекта.
А ты что пытаешься присвоить ? Ты пытаешься присвоить отнюдь не метод, а регулярную процедуру.


Алексей Иванов   (2009-05-26 08:06:00) [6]

>Выделенное - зачем?

Дабы не было такого сообщения:
[Pascal Error] Unit1.pas(51): E2010 Incompatible types: 'TTVCollapsingEvent' and 'Pointer'

>и еще. Видимо ошибка внутри OnCollapsing возникает, но оно держится в секрете, почему?

Не понял, что значит в секете???
OnCollapsing - это стандартное свойство TTreeView


KSergey   (2009-05-26 08:01:00) [7]

> @ MyTV.OnCollapsing:=@OnColl;

Выделенное - зачем?

и еще. Видимо ошибка внутри OnCollapsing возникает, но оно держится в секрете, почему?


Наверх

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