[DUG] ClientDataSet TField Display Format
John Bird
johnkbird at paradise.net.nz
Wed Nov 2 00:48:48 NZDT 2011
I am wishing to use a ClientDataSet for custom data, not read from a database, and with varying formats. This means that field definitions and populating it are all done at run time.
The data has some integer values that are 8 digit dates, and some that are IRD numbers and I want to format them to show in controls – eg IRD numbers as 10-000-033 for example.
The code I am using below does work fine for displaying data on the screen, but not for printing – the printing line in the report (Rave D2007) uses a line in a loop like:
ThisField:=lDBGrid.Columns[colptr].Field;
if not ThisField.IsNull then lText:=lDBGrid.Fields[colptr].asString;
But getting the value asString does not get the Display format – i get 10000033 for example, so pretty useless for a report.
Anyone have an idea what more I can do to get the printing also use the DisplayFormat ?
Below is how I create the Dataset.
(Eventually I would like to add some events to reformat the integer dates, so that instead of displaying as YYYY-MM-DD they can be displayed as DD-MM-YYYY but I am not sure that is possible – so first things first).
ClientDataSet1.Fields.Clear;
with ClientDataSet1 do
begin
with TIntegerField.Create(Self) do
begin
Name := 'ClientDataSet1RNO';
FieldKind := fkData;
FieldName := 'RNO';
DataSet := ClientDataSet1;
end; //FieldName
with TStringField.Create(Self) do
begin
Name := 'ClientDataSet1Alpha1';
FieldKind := fkData;
FieldName := 'Alpha1';
Size := 10;
DataSet := ClientDataSet1;
end; //FieldName
with TDateField.Create(Self) do
begin
Name := 'ClientDataSet1Date1';
FieldKind := fkData;
FieldName := 'Date1';
DataSet := ClientDataSet1;
end; //FieldName
with TFloatField.Create(Self) do
begin
Name := 'ClientDataSet1Float1';
FieldKind := fkData;
FieldName := 'Float1';
DataSet := ClientDataSet1;
end; //FieldName
with TIntegerField.Create(Self) do
begin
Name := 'ClientDataSet1DDate1';
FieldKind := fkData;
FieldName := 'DDate1';
DataSet := ClientDataSet1;
end; //FieldName
with TIntegerField.Create(Self) do
begin
Name := 'ClientDataSetCLIRD1';
FieldKind := fkData;
FieldName := 'CLIRD1';
DataSet := ClientDataSet1;
end; //FieldName
end;
TIntegerField(ClientDataSet1.FieldByName('CLIRD1')).DisplayFormat := '000-000-000';
TIntegerField(ClientDataSet1.FieldByName('DDate1')).DisplayFormat := '0000-00-00';
TIntegerField(ClientDataSet1.FieldByName('CLIRD1')).EditFormat := '#';
ClientDataset1.CreateDataset;
John Bird
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20111101/67e01f2e/attachment.html
More information about the Delphi
mailing list