Mar*_*unu 7 delphi controls delphi-2009
我不知道这是一个错误还是什么,但是如果我尝试禁用一个TTreeView控件,所有节点都会被选中(变灰)......可以做任何事情来禁用这个控件的输入而不改变选择? 当然,节点并没有真正被选中,它们只是在视觉上被选中,但这很烦人。
这就是未应用主题时禁用控件的样子。您可以在几乎不干预项目绘制的情况下对其进行修改:
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
if (not TreeView1.Enabled) and
(GetWindowTheme(TreeView1.Handle) = 0) and (Stage = cdPrePaint) then begin
TreeView1.Canvas.Brush.Color := clWindow; // or TreeView1.Color
TreeView1.Canvas.Font.Color := clGrayText;
end;
end;
Run Code Online (Sandbox Code Playgroud)
不幸的是,State从来没有包括 'cdsDisabled' 或 'cdsGrayed'(我没有调查过),所以代码测试是否启用了树视图。