| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 217 人关注过本帖
标题:树控件失去焦点时背景色变灰了,有办法不变色吗?
只看楼主 加入收藏
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:309
专家分:38
注 册:2010-12-23
结帖率:56.63%
收藏
 问题点数:10 回复次数:8 
树控件失去焦点时背景色变灰了,有办法不变色吗?
请教,树控件失去焦点时背景色变灰了,有办法不变色吗?
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
5 天前 13:48
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:877
专家分:1362
注 册:2021-10-13
收藏
得分:0 
失去焦点变灰不是正常的吗?你的应用程序界面只能有一个焦点,根据你选择的功能切换焦点,很符合逻辑啊。

你是想获得焦点时返回刚才那个节点吧?可以在失去焦点时,记录index,在获得焦点时,在设置回这个index。。。
5 天前 16:05
easyppt
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:346
专家分:843
注 册:2021-11-24
收藏
得分:0 
估计楼主的意思是:如何设置TreeView 失去焦点后的背景色,因为默认灰底看不清
4 天前 09:59
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:309
专家分:38
注 册:2010-12-23
收藏
得分:0 
回复 3楼 easyppt
对,因为看不清,想把失去焦点时的背景色改成亮色
4 天前 10:10
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:877
专家分:1362
注 册:2021-10-13
收藏
得分:0 
回复 4楼 laibinhua
你可以搜索一下,以前有贴讨论如何修改背景色的,好像是要用到api的sendmessage。
4 天前 17:25
shizi0
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:159
专家分:428
注 册:2012-10-2
收藏
得分:0 
sendmessage我没有搞定。
我是从LostFocus着手的,先备份选中的颜色,lost后保持该项颜色。这段代码是lostFocus的:
程序代码:
** 失去焦点后,保持选中突出色,涉及其他3处:HideSelection=.f.;Refresh装载时初始化3属性;NodeClick恢复原选中项的颜色
If Type([This.SelectedItem])=[O] And (Type([])#[C] Or This.SelectedItem.Key#)  &&Key比对比Node比对稳定
    ThisForm.LockScreen=.t. &&SelectedItem改颜色会闪屏
    =This.SelectedItem.Key
    =This.SelectedItem.BackColor  &&备份原颜色
    =This.SelectedItem.ForeColor
    This.SelectedItem.BackColor=Rgb(0,120,215)
    This.SelectedItem.ForeColor=Rgb(255,255,255)
    ThisForm.LockScreen=.f.
Endif
收到的鲜花
  • csyx3 天前 04:42 送鲜花  3朵   附言:另辟蹊径,真心不错的思路
4 天前 18:59
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:309
专家分:38
注 册:2010-12-23
收藏
得分:0 
回复 6楼 shizi0
你好,谢谢回复,用你的代码直接放在lostfocus里运行还是没有效果,是不是什么地方还要有代码?
我用下面这段代码放入lostfocus里也不行
LOCAL loNode
loNode = This.SelectedItem
IF !ISNULL(loNode)
   this.nodeClick(loNode)
   this.SetFocus()   
   This.Refresh()
ENDIF
4 天前 20:05
my2318
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:14
帖 子:301
专家分:656
注 册:2014-3-18
收藏
得分:0 
是否可以换个思路,选中与非选用不同图标,比如选中用彩色图标,未选用黑白图标
3 天前 07:06
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:740
专家分:2965
注 册:2018-3-13
收藏
得分:0 
以下是引用laibinhua在2025-3-30 20:05:52的发言:
我用下面这段代码放入lostfocus里也不行

理解错了吧,shizi0 给出的就是 LostFocus 事件的代码,你只要按照他第一行注释中的说明完成剩下的工作即可。
如果树有 CheckBoxes 的话,还要在 NodeCheck 事件中添加与 NodeClick 同样逻辑的代码

另 @shizi0
我验证的结果是要不厌其烦的在 LosstFocus 里设置 HideSelection,原因可能是我用的是 XtremeSuiteControls.TreeView 而非 M$ 的 TreeView
程序代码:
If Type([This.SelectedItem])=[O] And ...
    ThisForm.LockScreen=.t.
    ....
    This.HideSelection = .t.   && ***
    ThisForm.LockScreen=.f.
Endif


这家伙很懒,啥也没留下
3 天前 07:37
快速回复:树控件失去焦点时背景色变灰了,有办法不变色吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020166 second(s), 12 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved