TStringGrid的界面是普通3D形状,我想改成Flat样式的,怎么改?(50分)

  • 主题发起人 主题发起人 Mow
  • 开始时间 开始时间
M

Mow

Unregistered / Unconfirmed
GUEST, unregistred user!
大家用过DBGridEh吧?它的表格就是flat的,我想知道它是怎样“画”出来的。
 
还是找找有没有现成的控件吧;或者参考它源码自已来做。
 
把Ctl3D改为False就可以了!
 
修改单元格控件,给它添加Mouse_Enter 和Mouse_Level消息,然后就在这两个消息里重绘单元格。OK
 
TO cnkk :我正在研究DBGridEH的源码,可是觉得千头万绪不知如何下手,诸位大侠能不能给点提示?
TO 康凌 : 我虽然不是高手,但也不要把我想得那么......
TO Dark Angel :能不能详细点?
 
改不了,以下语句都不起作用:

TCustomControl(stringgrid1).controlstyle:=tcustomcontrol(stringgrid1).controlstyle-[csFramed];
 
TO jsxjd :既然此路不通,就另想办法啊!不要在一棵树上吊死嘛![:)]

我原想在OnDrawCell事件中进行自绘操作,可是我不知怎么去“绘画”出来。[:(!]
大家想想办法吧!
 
不好意思,我没有用过 DBGridEH,但我觉得主要是从画(paint/draw)入手。
 
TO cnkk:我也知道是从画着手,但是关键是怎么画啊?
 
首先把Ctl3D改为False,
然后在FormCreate中执行 InitializeFlatSB(StringGrid1.Handle);(在uses加上flatsb)
可以达到平面效果。

 
>>在uses加上flatsb
我加上了,可是Delphi提示说找不到flatsb。为什么?
 
你分析dbgrid是怎么画的,然后修改之
 
我用的DELPHI6,
你查看一下../delphi6/source/rtl/win/FlatSB.pas是否有这个文件。
 
TO gonghh:
我用的是delphi5......而我又不想升为6!
TO flysand:
dbgrid也不是flat的。我正在分析dbgrideh,不过限于水平,不知如何下手,哪位高手能指点一二?

 
真的没有人知道吗?我感觉这个问题应该不是很难啊(不要骂我懒[:)])。
 
你把TCustomDBGrid类中的以下两句去掉试一下:
DrawEdge(Canvas.Handle, TitleRect, BDR_RAISEDINNER, BF_BOTTOMRIGHT);
DrawEdge(Canvas.Handle, TitleRect, BDR_RAISEDINNER, BF_TOPLEFT);
 
TMS控件有好多表格控件
 
to 晓鹤:我试试再说
 
我觉得还是应该在OnDrawCell中进行,可是无论我用canvas怎么画都不满意[:(!]
大家想想办法吧!
 
后退
顶部