![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
HotTrack в TreeView [D6, Win95/98, WinXP]
Alex870 © (2004-08-27 14:55:00)Здравствуйте!
У меня такая проблема с TreeView: в его свойствах (в дизайнтайме) я поставил Hottrack = true и когда двигаешь по Nod'ам они подсвечиваются как гиперссылки, и я хочу, на событие подсвечивания делать определенное действие
на событие OnAdvancedCustomDrawItem я пишу
type
...
List : TTreeView;
...
procedure TForm1.ListAdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
if (cdsHot in State) then ...действие
end;
так вот если вести мышь вверх по TreeView это работает, а если вниз, то (cdsHot in State) = False; Кто знает почему? Зарание спасибо!
GuAV (2004-08-30 17:39:00) [1]
> из-за которого я поменял 2 версии Delphi, а то бы так до
> сихпор и сидел на 5-й :)
Интересно.
Вообще то имхо это не повод покупать новую версию. Попробую проверить в Д6.
Alex870 (2004-08-30 17:34:00) [2]Поставил Delphi7 и всё отлично заработало! Большое спаибо GuAV!Интересно, кто писал этот удивительный компанент, из-за которого я поменял 2 версии Delphi, а то бы так до сихпор и сидел на 5-й :)
GuAV (2004-08-29 20:19:00) [3]
> Может быть вы пользуетесь версией выше 6-й.
у меня D7.
Alex870 (2004-08-29 20:17:00) [4]Уточните пожалуйста, какой версией Delphi Вы пользуетесь. Дело в том, что я перешел с 5-й на 6-ю только из-за багов в этом компоненте, в 5-й бвли ограничения на TNode.text, по моему, 80 знаков. Может быть вы пользуетесь версией выше 6-й. Но если у вас этот код корректно работает в 6-й Delphi (при перемещении снизу вверх по нодам высвечиваются их параметры, а не надпись "Ничё не выбрано"), значит это я дурак, и буду искать свои ошибки. И ещё, большое спасибо за помощь!!!
GuAV (2004-08-28 14:57:00) [5]Alex870 (28.08.04 10:22) [4]
У меня работает. Точно Ctrl+C, Ctrl+V правильно? var SelNode: TTreeNode; - глобальная?
Alex870 (2004-08-28 10:22:00) [6]Спасибо, отличный пример, однако у меня результат получился тот же. Т.е. ведешь указатель мыши вниз по Nod'ам - всё работает, а вот если снизу вверх, то в Caption 'Ничё не выбрано'.
GuAV (2004-08-27 17:34:00) [7]
var SelNode: TTreeNode;
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
if (cdsHot in State) then
SelNode:=Node
else if SelNode=Node then
SelNode:=nil;
if SelNode=nil then
Caption:='Ничё не выбрано'
else
Caption:=Format('Выбрана №%d ''%s''',
[SelNode.Index,SelNode.Text]);
end;
Alex870 (2004-08-27 16:45:00) [8]Да, я согласен, что Node.Text работает при перемещении и вверх и вниз, однако у меня задача, чтобы в StatusBar выводилась информация о выбранной Nod'e, а если мышь не на одной из Node, то StatusBar должен быть пуст, вот я и хочу поймать момент, когда Note подсвечена, а когда нет. А за внимание к вопросу большое спасибо!
GuAV (2004-08-27 15:13:00) [9]Проверь это:
if (cdsHot in State) then Caption:=Node.Text;
Учти, что он должен перерисовать и ту с которой снят выбор также. Отсюда и False.