让dbgrid连接复杂sql语句时显示正常值

lazarus的dbgrid连接数据集后,如果数据集的sql使用了一些复杂的select子句,显示数据会出现MeMo字样,可以这样修正:

1、在窗口类中定义事件句柄:

private
procedure DBTableDataGetText(Sender: TField;var AText: String;DisplayText: Boolean);
public

2、写句柄:

procedure TOfficeFM.DBTableDataGetText(Sender: TField; var aText: String;

begin

    aText:=Sender.AsString;

end;

 3、给显示Memo字段赋值:

FDQDhJN.FieldByName('S1').OnGetText:=@DBTableDataGetText;      

4、赋值后,想字段显示小数:

procedure TOfficeFM.DBTableDataGetText(Sender: TField; var aText: String;
DisplayText: Boolean);
var
    AStr:string;
    AInt:Integer;
   AFlo:Double;
begin
   AStr:=Sender.AsString;
   IF TryStrToInt(Astr,AInt) then  aText:= Astr+'.00'
  Else IF TryStrToFloat(Astr,AFlo) then
    begin
        AStr:=FormatFloat('0.00',AFlo);
       aText:=AStr;
   end
Else
   aText:=AStr ;
end;

posted @ 2023-02-14 18:45  仙侣步惊云  阅读(50)  评论(0)    收藏  举报