编程论坛
注册
登录
编程论坛
→
VFP论坛
树控件失去焦点时背景色变灰了,有办法不变色吗?
laibinhua
发布于 7 天前 13:48, 223 次点击
请教,树控件失去焦点时背景色变灰了,有办法不变色吗?
只有本站会员才能查看附件,请
登录
只有本站会员才能查看附件,请
登录
8 回复
#2
sam_jiang
7 天前 16:05
失去焦点变灰不是正常的吗?你的应用程序界面只能有一个焦点,根据你选择的功能切换焦点,很符合逻辑啊。
你是想获得焦点时返回刚才那个节点吧?可以在失去焦点时,记录index,在获得焦点时,在设置回这个index。。。
#3
easyppt
6 天前 09:59
估计楼主的意思是:如何设置TreeView 失去焦点后的背景色,因为默认灰底看不清
#4
laibinhua
6 天前 10:10
回复 3楼 easyppt
对,因为看不清,想把失去焦点时的背景色改成亮色
#5
sam_jiang
6 天前 17:25
回复 4楼 laibinhua
你可以搜索一下,以前有贴讨论如何修改背景色的,好像是要用到api的sendmessage。
#6
shizi0
6 天前 18:59
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
#7
laibinhua
6 天前 20:05
回复 6楼 shizi0
你好,谢谢回复,用你的代码直接放在lostfocus里运行还是没有效果,是不是什么地方还要有代码?
我用下面这段代码放入lostfocus里也不行
LOCAL loNode
loNode = This.SelectedItem
IF !ISNULL(loNode)
this.nodeClick(loNode)
this.SetFocus()
This.Refresh()
ENDIF
#8
my2318
5 天前 07:06
是否可以换个思路,选中与非选用不同图标,比如选中用彩色图标,未选用黑白图标
#9
csyx
5 天前 07:37
以下是引用
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
1