Показать сообщение отдельно
  #3  
Старый 13.02.2011, 20:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Pilot_Red
дк в событии Change в параметр Node передается выбраная пользователем ветка. А уже из Node.Data вытаскиваешь нужную строку запроса ...или как ты там делаешь.

Тут, как я понял, проблема не в определении момента смены выбранного узла дерева, а в том, как "положить" некоторые данные в узел, что бы потом их можно было считать и использовать.

У TTreeNode есть свойство Data. В принципе, оно имеет тип TObject, т.е. в него можно "положить" любой объект. Однако, еси у нас тип дпнных Integer, то можно воспользоваться следующим фокусом. Т.к. TObject это указатель, то по размеру он совместим с Integer (оба 32bit). Тогда можно "сказать", что мы кладем в это свойство объект, находящийся по адресу, указанному в Integer-переменной. Для чтения нужно сделать обратное преобразование.

Код:
var
  Idx : Integer;
  ANode : TTreeNode;
begin
   // Запись:
   Idx := 123;
   ANode.Data := TObject(Idx);

   // Чтение:
   Idx := 0;
   Idx := Integer(ANode.Data);
   ShowMessage(IntTostr(Idx));
Ответить с цитированием