delphi 用dbgrid控件显示memo字段的问题

写程序真得花功夫,想用好delphi7下强大的控件不容易,那可以比较出是否理解程序设计的深入程度。我不认为第三方控件怎么好,想更好进行软件开发,还是要会用原本的控件啊,用好了才能更好地学习别的优秀控件。(因为我并不在软件开发上工作,不知道时间的意义,完全是个人爱好)我个人喜好原生态的东西。下面附上代码,没有测试过字符多的情况,但对于我要做的事已经够用了。

procedure TStdInfo.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var adomemo:Tdbmemo;
begin
   if (column.Field.DataType=ftMemo) or (column.Field.DataType=ftFmtMemo) then
   begin
    adoMemo:=TdbMemo.Create(self);
    try
     adomemo.Parent:=stdInfo;
     adomemo.DataSource:=dm.DS_change;
     dbgrid1.Canvas.Font.Color:=clBlue;
     dbgrid1.Canvas.FillRect(rect);
     DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top,adomemo.DataSource.DataSet.FieldValues['other']);
     adomemo.Free;
    Except
      adomemo.Free;
    end;
end;

 另外,在网上查了一下,有代码是在dbgrid中显示图片的(我是参考他的):

var
Bmp: TBitmap;
begin
if (Column.Field.DataTyp = ftBLOB) or (Column.Field.DataTyp = ftGraphic) then
begin
    Bmp:=TBitmap.Create;
    try
      Bmp.Assign(Column.Field);
      DBGrid1.Canvas.StretchDraw(Rect,Bmp);
      Bmp.Free;
    Except
      Bmp.Free;
    end;
end;
end;

花不少时间调试呢,如果对你有了帮助,请加回复或评论哈! 

posted @ 2012-11-29 17:40  JTeacher  阅读(2260)  评论(0)    收藏  举报