有关DBGrid(50分)

  • 主题发起人 主题发起人 fxingf
  • 开始时间 开始时间
F

fxingf

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样把DBGrid中的数据(现显示"(MEMO)")显示出来.应改些什么设置,请各位大侠速告之,谢谢!
 
设置是没有用的,
可以通过编程实现双击它,然后弹出一个窗口显示它的内容
 
DBGrid没有办法显示的[:(],只能用别的办法,就象dhl2001说的。
 
方法一:
为Table建立永久字段,比如tblTemp的Memo字段,然后为此永久字段OnGetText事件添加代
码:
procedure Form1.tblTempMemoGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
Text := (Sender as TField).AsString;
end;
此方法代码简单,但如果多个表的多个字段需要如此处理,就需要为每个表的这些字段指定
OnGetText事件为这个事件,比较分散,维护起来不太方便。

方法二:
为Table建立永久字段,比如tblTemp的Memo字段,然后为DBGrid的OnDrawColumnCell事件
添加代码:
procedure TfrmChild.dbgChildGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (column.Field = tblTempMemo) then
begin
dbgChildGrid.Canvas.TextRect(rect, rect.left, rect.top, column.field.asstring);
end;
end;
此方法的优点是当有多个表中的多个字段要如此处理时,只需要建立好永久字段后,在
if...then...里面添加即可,集中管理,便于维护。
 
to coolqiang
我试了方法一,无效!
方法二还未试.
 
不可能吧?你用的什么数据库?BDE还是ADO?
我在Access+BDE+Delphi5下没问题!
 
to coolqiang
ACCESS
运行后报错 'Invaild fields descriptor.'
 
不过我已查了,数据库可能有点问题,别的数据库的数据都能显示(不用任何方法).
 
to coolqiang
不过我还是打算把分给你.这毕竟是我第一次给分.谢谢你!
 
你用的是ADO吧,用BDE不用任何方法是没法显示的!
按你的情况,那就不是我的代码能解决的了。它是在BDE下的解决方法。既然你其它的能正
常显示,这个不行,应该是数据库的问题。
呵呵,没帮到你,拿分有些惭愧!
 

Similar threads

回复
0
查看
819
不得闲
回复
0
查看
867
不得闲
D
回复
0
查看
926
DelphiTeacher的专栏
D
D
回复
0
查看
718
DelphiTeacher的专栏
D
后退
顶部