Zig*_*giZ 6 delphi virtualtreeview tvirtualstringtree
如何使用我自己的自定义按钮(图像)来替换VST中的默认[-]
/ [+]
按钮?
我想用箭头代替(,
),还支持RTL bidi模式(
,
).
编辑:我知道bsTriangle
样式(ButtonStyle).它不尊重RTL.我想使用自己的自定义图像.
这些图像通常不在Windows Vista和Windows 7中吗?当您启用主题时,树控件应自动在这些系统上获取它们.
接近这一点的简单方法是将ButtonStyle
属性设置为bsTriangle
.但这并不完全是问题中显示的图像."减号"箭头将指向正对而不是对角线,"加"箭头将是实心而不是轮廓.
您可以提供自己的位图.将VT_XPBUTTONMINUS和VT_XPBUTTONPLUS资源更改为您想要的任何图像,并将ButtonFillMode
属性设置为fmShaded
.
不过,我认为没有基于bi-di模式改变图像的功能.您可以创建一个覆盖的后代类,PaintNodeButton
然后绘制您想要的任何内容.从父类复制放置代码.
IIRC你可以通过在PaintOptions中包含toUseExplorerTheme来获得它.然而,这也改变了选择外观(更好的IMNSHO)和可能更多.
例如,如果我TVirtualStringTree
在表单上删除并添加以下事件处理程序:
procedure TForm1.FormCreate(Sender: TObject);
begin
VT.RootNodeCount := 10;
VT.TreeOptions.PaintOptions := VT.TreeOptions.PaintOptions + [toUseExplorerTheme];
VT.OnInitNode := VTInitNode;
VT.OnInitChildren := VTInitChildren;
end;
procedure TForm1.VTInitChildren(Sender: TBaseVirtualTree;
Node: PVirtualNode; var ChildCount: Cardinal);
begin
ChildCount := 3;
end;
procedure TForm1.VTInitNode(Sender: TBaseVirtualTree;
ParentNode, Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);
begin
Include(InitialStates, ivsHasChildren);
end;
Run Code Online (Sandbox Code Playgroud)
我明白了
编辑:不幸的是,设置Form1.BiDiMode
为bdRightToLeft
收益率
在我的德语Windows 7上.我不知道这在阿拉伯语或希伯来语系统上是否更好.
归档时间: |
|
查看次数: |
1920 次 |
最近记录: |