hur.cn - 华软网

 热门搜索

数据窗口:选中某行后,该行的背景色不能改变

  作者:未知    来源:网络    更新时间:2018/1/1
外部数据源窗口(External),自由表格格式(Freeform):

数据窗口的 Clicked 事件中,加入代码
     this.SelectRow(0, FALSE)
     this.SelectRow(Row, TRUE)
当选中某行时,该行背景色变为白色(默认的应该是蓝色),导致看不见该行的数据。
现象参见附图:

    http://tzs120.com/files/jpg/hxz.jpg


------华软网友回答------
FUNCTION ulong SetSysColors(ulong nChanges,ref ulong lpSysColor,ref ulong lpColorValues) LIBRARY "user32.dll"
FUNCTION ulong GetSysColor(ulong nIndex) LIBRARY "user32.dll"

ulong  COLOR_HIGHLIGHT = 13
ulong nchanges=1
ulong lcolor=rgb(255,0,0)

setsyscolors(nchanges,COLOR_HIGHLIGHT,lcolor)//设置选择行的背景色为红色
If row < 1 Then return
This.SelectRow(0, False) 
This.SelectRow(row,TRUE) 

你这样设置整个操作系统的颜色都会被改掉了,所以用setsyscolors前先用
ulong color_old=GetSysColor(COLOR_HIGHLIGHT)取出设置成公用变量,以便退出程序或者退出该窗口还原

----------------------------------------------------------------------
常数定义 Windows对象 常数定义 Windows对象 
COLOR_ACTIVEBORDER 活动窗口的边框 COLOR_ACTIVECAPTION 活动窗口的标题 
COLOR_APPWORKSPACE MDI桌面的背景 COLOR_BACKGROUND windows桌面 
COLOR_BTNFACE 按钮 COLOR_BTNHIGHLIGHT 按钮的3D加亮区 
COLOR_BTNSHADOW 按钮的3D阴影 COLOR_BTNTEXT 按钮文字 
COLOR_CAPTIONTEXT 窗口标题中的文字 COLOR_GRAYTEXT 灰色文字;如使用了抖动技术则为零 
COLOR_HIGHLIGHT 选定的项目背景 COLOR_HIGHLIGHTTEXT 选定的项目文字 
COLOR_INACTIVEBORDER 不活动窗口的边框 COLOR_INACTIVECAPTION 不活动窗口的标题 
COLOR_INACTIVECAPTIONTEXT 不活动窗口的文字 COLOR_MENU 菜单 
COLOR_MENUTEXT 菜单正文 COLOR_SCROLLBAR 滚动条 
COLOR_WINDOW 窗口背景 COLOR_WINDOWFRAME 窗框 
COLOR_WINDOWTEXT 窗口正文 COLOR_3DDKSHADOW 3D深阴影 * 
COLOR_3DFACE 3D阴影化对象的正面颜色 * COLOR_3DHILIGHT 3D加亮颜色(win95) 
COLOR_3DLIGHT 3D阴影化对象的浅色 * COLOR_INFOBK 工具提示的背景色 * 
COLOR_INFOTEXT
 工具提示的文本色 *     
*:带 * 号的常数未获NT 3.51的支持 


------华软网友回复------
狗狗真厉害!
------华软网友回复------
如果是系统的颜色方案被修改了,就要使用楼上的方法,把颜色改成你想要的.

但是楼主的这种情况也有可能是程序中用了其它修改DW的代码造成的,因为如果仅仅是白色的话,字体应该仍然会显示出来,但你这里根本没有看见任何字体
首先,检查dw object中是否设置了一些图片或其它控件, 并看其visible及backcolor等属性内是否有表达式
2.看看字体的字体颜色内是否加了表达式设置了字体颜色 

3.看看dw control 的事件有没有其它代码修改了DW
------华软网友回复------
注意如果是系统的默认颜色被修改了,一般PB以外的程序都会有相同的症状

我怀疑你的数据窗口动态创建了控件,把选中的行盖住了      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。