Текущий архив: 2004.09.12;
Скачать: CL | DM;
Вниз
HotTrack в TreeView Найти похожие ветки
← →
Alex870 (2004-08-27 14:55) [0]Здравствуйте!
У меня такая проблема с 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-27 15:13) [1]Проверь это:
if (cdsHot in State) then Caption:=Node.Text;
Учти, что он должен перерисовать и ту с которой снят выбор также. Отсюда и False.
← →
Alex870 (2004-08-27 16:45) [2]Да, я согласен, что Node.Text работает при перемещении и вверх и вниз, однако у меня задача, чтобы в StatusBar выводилась информация о выбранной Nod"e, а если мышь не на одной из Node, то StatusBar должен быть пуст, вот я и хочу поймать момент, когда Note подсвечена, а когда нет. А за внимание к вопросу большое спасибо!
← →
GuAV © (2004-08-27 17:34) [3]
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-28 10:22) [4]Спасибо, отличный пример, однако у меня результат получился тот же. Т.е. ведешь указатель мыши вниз по Nod"ам - всё работает, а вот если снизу вверх, то в Caption "Ничё не выбрано".
← →
GuAV © (2004-08-28 14:57) [5]Alex870 (28.08.04 10:22) [4]
У меня работает. Точно Ctrl+C, Ctrl+V правильно? var SelNode: TTreeNode; - глобальная?
← →
Alex870 (2004-08-29 20:17) [6]Уточните пожалуйста, какой версией Delphi Вы пользуетесь. Дело в том, что я перешел с 5-й на 6-ю только из-за багов в этом компоненте, в 5-й бвли ограничения на TNode.text, по моему, 80 знаков. Может быть вы пользуетесь версией выше 6-й. Но если у вас этот код корректно работает в 6-й Delphi (при перемещении снизу вверх по нодам высвечиваются их параметры, а не надпись "Ничё не выбрано"), значит это я дурак, и буду искать свои ошибки. И ещё, большое спасибо за помощь!!!
← →
GuAV © (2004-08-29 20:19) [7]
> Может быть вы пользуетесь версией выше 6-й.
у меня D7.
← →
Alex870 (2004-08-30 17:34) [8]Поставил Delphi7 и всё отлично заработало! Большое спаибо GuAV!Интересно, кто писал этот удивительный компанент, из-за которого я поменял 2 версии Delphi, а то бы так до сихпор и сидел на 5-й :)
← →
GuAV © (2004-08-30 17:39) [9]
> из-за которого я поменял 2 версии Delphi, а то бы так до
> сихпор и сидел на 5-й :)
Интересно.
Вообще то имхо это не повод покупать новую версию. Попробую проверить в Д6.
Страницы: 1 вся ветка
Текущий архив: 2004.09.12;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.025 c