OK, here is what I ended doing:
1. I created two TField OnGetText event handlers (one for each column I wanted to affect)
procedure TTransRevenueBrowser.AdsRevenueTableBROnGetText(Sender: TField; var aText: string; DisplayText: boolean);
begin
aText := BookReverseDesciption(TBookReverse(Sender.AsInteger))
end;
procedure TTransRevenueBrowser.AdsRevenueTableRTOnGetText(Sender: TField; var aText: string; DisplayText: boolean);
begin
aText := RevenueDesciption(TRevenue(Sender.AsInteger))
end;
2. Then in the table's data source DataChange event handler I added the following:
procedure TTransRevenueBrowser.DatasourceRevenueDataChange(Sender: TObject;
Field: TField);
begin
AdsRevenueTable.FieldByName('EntryType').OnGetText:=@AdsRevenueTableBROnGetText;
AdsRevenueTable.FieldByName('RevenueType').OnGetText:=@AdsRevenueTableRTOnGetText
end;
I tried the above code in a number of event handlers, this one seems to work in all cases. I am open to other suggestions.
In the TForm object definition I added:
procedure AdsRevenueTableBROnGetText(Sender: TField; var aText: string; DisplayText: boolean);
procedure AdsRevenueTableRTOnGetText(Sender: TField; var aText: string; DisplayText: boolean);
And that was it. The code replaces the enumerated values with the desired strings. I suspect, but can't figure out, that I should be able to use the Sender and/or the Field in step two rather than the code I used. TField is always nil. My guess is that its because But it is working.
Thanks everyone for your help!
Knipfty