DBGrid中实现换行显示数据(30分)

  • 主题发起人 主题发起人 liaotw
  • 开始时间 开始时间
L

liaotw

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个数据表,其中有一项字段我需要写入比较多的字符,在GIRD中,我知道怎么样可以
换行,但是,在DBGRID中,我却无法换行,哪位大侠知道怎么样实现,请多指教!
 
对于 TDBGrid 来说,需要写的是 OnDrawColumnCell 事件!
TDBGrid 也是 TCustomGrid 的后代,参考这个问题对你应该有意义!
<a href="DispQ.asp?LID=388616">如何解决StringGrid控件中文本换行问题</a>
 
我就是尝试着用在GRID中的方法进行实验,发现根本编译都通不过啊!
哪位大侠能够附上代码,那就感激不尽了!
 
procedure DBGrid1.OnDrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumn; State: TGridDrawState);
begin
with DBGrid1 do
if (gdSelected in State) and (Windows.GetFocus <> Self.Handle) then
begin
Canvas.Brush.Color := FHighLightColor;
Canvas.Font.Color := FHighLightTextColor;;
DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;
一个改变格子字体和背景颜色的例子,自己仿照写一个吧。
 
bakubaku:
好!
对于您举的例子,我是经常使用的,好象无法通过相关的改动达到目的喔!就算将字体
设置的非常小,恐怕也不可能。因为我的有一个字段,宽度为200,却可能要显示7行才能显
示下。我不想将之作为MEMO型,因为它大多数只有10——20字符,最多时却可能有150——200
字符。
再想一想!
 
建议用ip2000的wwdbgrid,对字段超过列宽的可以hint的形式显示,也支持换行。
 
To yangkee:
你用ip2000的wwwdbgrid,太好了,它好像没有OnDrawColumnCell事件,我要实现象
BaKuBaKu例子代码的类似功能,怎么办?
 
我不要飞跃提示显示方式,我需要想NOTES一样,在编辑时,超过宽度就自动折行,在
显示时直接反映为多行显示。
用IP系列的控件,有时速度有点不对劲。而且对于飞跃提示,我坚决反对。
各位大侠,再想想,小弟嗷嗷待哺啊!我想了很久,都没有实现之。
 
可以看《DELPHI高级开发指南》。在ONDRAWCOLUMNCELL事件里用TMEMO控件来显示。
 
rxlib217有相关构件,
或者使用#13#10
 
adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列
使用#13#10也行.
 
liaotw:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部