在数据表中的某些字段出于性能或数据规范化的考虑,会用组编号代替,就像学生有学号,员工有员工ID一样,但我们看的时候如果直接输入这样的编号看的人可能就会头痛了,这时就可用TField中的GetText转成我们方便看的信息(其中可能涉及查表的操作,如根据学号从学生信息表(如果有)中获取姓名)。SetText完成相反过程。
如下图的SEX字段实际上是NUMBER类型。
***************************************************************************************
主要操作:
***************************************************************************************
DBGrid1.DataSource->DataSource1.DataSet->ClientDataSet1.ProviderName->DataSetProvider1.DataSet->
SQLDataset1.SQLConnection->SQLConnection1具体数据库(这里连接的是oracle中的PERSONS表);
SQLDataSet1.CommandText:=SELECT * PERSONS;ClientDataSet1.Active:=true;
DBNavigator1.DataSource->DataSource1。
*************************************************************************************
主要代码:
*************************************************************************************
procedure TForm4.ClientDataSet1SEXGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin //可以使用查表操作这里没必要,非0表示男,0表示女 if Sender.Value<>0 then begin Text:='男'; end else begin Text:='女'; end; end; procedure TForm4.ClientDataSet1SEXSetText(Sender: TField; const Text: string); begin //可以使用查表操作这里没必要 if Text='男' then begin Sender.Value:=1; end else begin Sender.Value:=0; end; end; procedure TForm4.FormCreate(Sender: TObject); begin //连接事件 ClientDataSet1SEX.OnGetText:=ClientDataSet1SEXGetText; ClientDataSet1SEX.OnSetText:=ClientDataSet1SEXSetText; //这里是添加SEX字段的下拉选择选项 DBGriD1.Columns[4].PickList.DelimitedText:='男,女'; end;
对象检视器中连接事件:
对象检视器中添加下拉选项: