Сохраняют ли новые версии Delphi поведение выбора дерева? - PullRequest
0 голосов
/ 27 января 2020

У меня есть старая Delphi 6 программа с множеством древовидных представлений. Когда древовидная структура теряет фокус, любой выбранный узел перекрашивается в плохо видимый светло-серый. Экспериментируя с использованием CustomDrawItem, чтобы всегда отображать выбранные узлы как полностью выделенные, даже когда они не сфокусированы (например, списки в той же программе), я попытался сделать следующее:

procedure TMainForm.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then Sender.Canvas.Brush.Color := clHighlight
end;

Выше все равно закрашивает выделенные узлы светом серый, когда не сфокусирован, так же, как и CustomDrawItem. Однако использование ColorToRGB() для изменения системной цветовой константы на цвет RGB следующим образом оставляет узел, окрашенный в цвет подсветки, даже когда древовидная структура не сфокусирована!

procedure TMainForm.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then Sender.Canvas.Brush.Color := ColorToRGB(clHighlight)
end;

Это делает то, что я хочу, но был неожиданный. Не является ли выбор в последнем случае ошибкой VCL, или не является ли она умышленной? Сохраняют ли новые версии Delphi такое поведение?

...