标题:TreeView设置背景色后,CheckBox边缘还有白色,如何处理
只看楼主
reakal
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:8
注 册:2014-8-13
 问题点数:0 回复次数:13 
TreeView设置背景色后,CheckBox边缘还有白色,如何处理

如上图,表单运行后,再设置背景色,似乎复选框背景色还是白色,有办法解决吗

如何给 CheckBox复选框发送更改背景色消息?

可以确认,CheckBox复选框背景色来自 ImageList.backcolor(因为在INIT时是有效的),但运行后,更改 ImageList.backcolor后,图标能生效,但CheckBox复选框未能生效,所以如果能给 CheckBox复选框发小消息刷新背景色,或设置背景色,应该可以做到,但相关的API我不会。

谢谢!

[此贴子已经被作者于2021-12-6 00:12编辑过]

搜索更多相关主题的帖子: TreeView 边缘 复选框 CheckBox 背景色 
2021-12-05 22:20
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
印象中,以前在CSDN看过都市夜猫改造Treeview的文章:
https://blog.

不过我没那地方的“下载币”。谁若能下载CSDN的附件,不妨上传一个到这里,让大伙儿也学习一下:
http://download.
http://download.

2021-12-06 22:24
reakal
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:8
注 册:2014-8-13
得分:0 
哎,6.0这个BUG,有解吗
貌似这个白块, 其它语言也存在,这个帖子是不是可以解决,哪位会VB的翻译成VFP,可以吗:https://

 


[此贴子已经被作者于2021-12-6 23:02编辑过]

2021-12-06 22:41
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 

看了一下你引用的VB帖子,Treeview改背景色,无非就是调用WinApi:
SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, sColor)    &&注:TVM_SETBKCOLOR = 4381,sColor = 想要的背景色

然后,用循环将每一个节点Node的BackColor,全部设置为sColor(想要的背景色):
SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
For Each iNode In TreeView1.Nodes
    iNode.BackColor = sColor
Next

这段VB代码,跟VFP几乎完全对应,“翻译”起来不难。不过,问题是:
假设Treeview有成千上万个节点,且已展开了一大部分,这样子遍历节点循环一遍,效率恐怕会狠低,可以想象的结果是,一改Treeview背景色,鼠标指针漏斗转不停,你的程序几乎完全停止响应。

现在,又回到了2楼的建议:
都市夜猫改造的Treeview 5.0,看上去很华丽。我们知道,Treeview 5.0自身没有CheckBox复选框,看他的说明,他自己画了一个,调用WinApi“粘”上去了。
楼主,为什么要自己瞎琢磨,而不站在大侠的肩膀上学习一下子?

当然,若能将原帖附件上传过来,让我们也沾光跟着学习一下子精妙的WinApi调用,那敢情也是极好的。哈哈哈哈。
2021-12-07 08:02
reakal
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:8
注 册:2014-8-13
得分:0 
回复 4楼 cssnet
你说的有道理!
通过研究发现,方向可能确实偏了。
如果要改变背景色和使用ChcekBox复选框,恐怕只有 都市夜猫的 5.0改造版 可以了,要么就不改变背景色的形式使用6.0版本

CSDN下载不了,会员太贵了。

正应为TreeView的这些问题,这些年我都是用的CTtree,但CTtree会因为RunTime问题 一些年后就不能用了,所以我又再次捡起了MS TreeView

另外,那个VB帖子下方有回复,说用背景图,感觉好像能解决似的。
2021-12-07 10:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
API函数可以实现(源码找不到了)

坚守VFP最后的阵地
2021-12-07 12:27
shenlancwz
Rank: 2
等 级:论坛游民
威 望:3
帖 子:36
专家分:43
注 册:2018-11-7
得分:0 
回复 3楼 reakal
我也遇到此问题,最后一个节点展开变白,如您解决了的话麻烦给讲一下解决方法。
2021-12-12 15:06
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用sdta在2021-12-7 12:27:09的发言:
API函数可以实现(源码找不到了)


前些天无意中看到一个VB网站的代码(可惜网址没记下来),这才知道:
都市夜猫并非原创,只不过是将人家鬼佬1998年(年份我倒是印象特别深刻,呵呵)的VB代码,“翻译”成VFP,且未标明出处而已。
很感慨:人家二十多年前就早已解决的问题,可怜我们胡子一大把了,还在讨论且无解。
呵呵。VB6轻轻松松就能吊打VFP9……唉,咱可真够落后的!
2022-03-10 23:05
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
tree.setall('backcolor',...)
不知这样是否好使
2022-03-11 08:21
sych
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:179
专家分:183
注 册:2019-10-11
得分:0 
回复 6楼 sdta
抓紧时间把你的宝贝都分享出来吧,免得以后再找不到了
2022-03-11 08:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507768-1-1.html




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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055674 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved