Форматирования вывода в ячейках DBGrid

FullZero
Дата: 12.06.2009 16:32:42
Колонка DBGrid-а подключена к Currensy-полю таблицы. Если значение этого поля не равно нулю - нужно выводить его в вормате "# ##0.00", если же значение нулевое - ничего не должно выводиться в ячейке.
На данный момент решил так:
procedure TForm1.Table1Field1GetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
  if DisplayText then
  begin
    if (Sender as TField).AsCurrency<>0
      then Text:=trim(format('%15.2f', [(Sender as TField).AsCurrency]))
      else Text:='';
  end;
end;
Получается то что нужно. Но... Для того, что бы воспользоваться этим способом, предварительно я должен создать TCurrencyField для этого поля, а прицепом и для всех остальных полей датасета. В моем случае это не очень удобно, т.к. все это в некоторой универсальной форме, в которой заранее неизвестно с каким датасетом будем работать.

Существуют ли другие решения этой задачи?
wellwell
Дата: 12.06.2009 16:52:15
Повесь на DataSet.OnAfterOpen:

DataSet.FieldByName('MY_FIELD').OnGetText := Table1Field1GetText
(или пробегай по всем полям и смотри у кого тип Currency, вешай этот обработчик)
wellwell
Дата: 12.06.2009 16:55:28
И это безсмысленно, Sender и так TField.
(Sender as TField)