关于TreeView的问题?!!!!!

jxc163 2003-04-25 10:21:39
我想自定义一个TreeView的节点输出文本的样式,在用下面的代码实现这个功能后,出现一个问题,就是:当选择了这个节点下面一个节点后,紧随着再选择这个节点,则先选择的那个节点的样式就回不到原来的样式,有一台电脑是会变大,有一台电脑上是变成粗体,各位大侠帮忙看一看出错在哪里。
procedure TFodagl.TVCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with tv.Canvas do
begin
if node.Text='系统用户管理员' then
begin
font.Color:=clred;
// font.Style:=[fsbold];
// brush.Color:=clblue;
end;
defaultdraw:=true;
if defaultdraw then
if cdsselected in state then
if node.Text='系统用户管理员' then
begin
font.Color:=clyellow;
// font.Style:=font.Style+[fsitalic];
brush.Color:=clgreen;
fillrect(node.DisplayRect(true));
end;
end;

end;
...全文
65 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc163 2003-05-10
  • 打赏
  • 举报
回复
一周同有上网了,我回去试一试。
先谢了
hhaibin 2003-05-04
  • 打赏
  • 举报
回复
你把最后一句:fillrect(node.DisplayRect(true));注释掉就可以了
jxc163 2003-05-04
  • 打赏
  • 举报
回复
第一节点是红色字,粗体,字体不同与其它,我可以实现这些,用上面的方法,但点这个节点下面一个节点,然后再点这个节点,先点的那个节点的字就会变粗体,这不是我想要.怎么办
hhaibin 2003-05-01
  • 打赏
  • 举报
回复
你要得到的效果是什么?
jxc163 2003-05-01
  • 打赏
  • 举报
回复
帝王将相
jxc163 2003-04-27
  • 打赏
  • 举报
回复
————ahjoe,有好的办法吗?
ahjoe 2003-04-27
  • 打赏
  • 举报
回复
自绘节点是有点麻烦的。最麻烦是还要绘节点左边的虚线
jxc163 2003-04-27
  • 打赏
  • 举报
回复
这个函数好像是把所有点的字体都变了吧。
STYun 2003-04-26
  • 打赏
  • 举报
回复
要让TreeView的节点变粗体字应该这样
给你一个函数
procedure SetNodeBoldState(Node: TTreeNode; Value: Boolean);

var

TVItem: TTVItem;

begin

if not Assigned(Node) then Exit;

with TVItem do

begin

mask := TVIF_STATE or TVIF_HANDLE;

hItem := Node.ItemId;

stateMask := TVIS_BOLD;

if Value then state := TVIS_BOLD

else

state := 0;

TreeView_SetItem(Node.Handle, TVItem);

end;

end;


jxc163 2003-04-26
  • 打赏
  • 举报
回复
没有人知道这个问题吗?
还是太简单了!

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧