请教,ClientDataSet开发问题(50)

  • 主题发起人 主题发起人 火焰领主打伞
  • 开始时间 开始时间

火焰领主打伞

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOQuery1连接SQLSERVER数据库,然后链接到ClientDataSet上,然后链接到DATASOURCE,最后链接到dbgrid上面。比如数据库存在这个一个字段A A 有1,2,3,4等4种类型,要是在dbgrid上面分别对应显示成东,南,西,北应该怎么处理。
 
补充一下,要实现的效果不是让字段A的1,2,3,4分别对于东南西北,而是解析A这个的这个字符串。比如 A:‘121’ DBGRID对应显示的就是‘东南东’。在线等待中。。。。
 
双击adoquery,add all fields点击字段A在ongettext事件里写字符串判断sender.text是数据库的实际内容,text是显示内容你只需要做个函数把1,2,3,4分别对于东南西北然后赋给text即可
 
TForm1 = class(TForm) DBGrid1: TDBGrid; ADOQuery1: TADOQuery; DataSource1: TDataSource; procedure ADOQuery1AfterOpen(DataSet: TDataSet); private { Private declarations } procedure DoGetText(Sender: TField; var Text: string; DisplayText: Boolean); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DoGetText(Sender: TField; var Text: string; DisplayText: Boolean);begin Text := TField(Sender).Value; if Trim(Text) <> '' then begin Text := StringReplace(Text, '1', '东', [rfReplaceAll, rfIgnoreCase]); Text := StringReplace(Text, '2', '南', [rfReplaceAll, rfIgnoreCase]); Text := StringReplace(Text, '3', '西', [rfReplaceAll, rfIgnoreCase]); Text := StringReplace(Text, '4', '北', [rfReplaceAll, rfIgnoreCase]); end;end;procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);var I: Integer;begin for I := 0 to DBGrid1.FieldCount -1 do if DBGrid1.Fields.FieldName = 'A' then DBGrid1.Fields.OnGetText := DoGetText;end;
 
谢谢啦,哈哈,我先不结账,先挂两天,让有类似问题的同志们看看正确的答案。
 
多人接受答案了。
 
后退
顶部