A jelzett formátumhoz szerintem nem létezik egy közös formátum string, kettőt kellene variálni hozzá ('0' és '0.0000').
Ha pl a DBGrid OnPrepareCanvas metódusában vizsgálod a DataSet értékét, és annak értékétől függően változtatod a Column.DisplayFormat értékét, akkor nálam sajnos eléggé leterhelődik az alkalmazás.
Más lehetőség volna, ha a DataSet szövegként tartalmazná már a megjelenítendő számokat, tehát a formázás logikáját az SQL-re bíznád.
Harmadik lehetőség az lehetne, ha a a DBGrid OnDrawColumnCell metódusában a Canvas-t módosítod:
uses StrUtils, ...
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: integer; Column: TColumn; State: TGridDrawState);
var aValue: double;
begin
if Column.DisplayFormat = '0#0#0#' then // Ezt a mintát lenne szükséges beírnod ahhoz az oszlophoz, ahol ezt a formázást szeretnéd használni
begin
aValue := SQLQuery.Fields[DataCol].AsFloat;
with TDBGrid(Sender).Canvas do
begin
FillRect(Rect);
TextOut(Rect.Left + 3, Rect.Top + 2, FormatFloat(IfThen(aValue = Trunc(aValue), '0', '0.0000'), aValue));
end;
end;
end;
Biztos vannak további lehetőségek is, de egyelőre ez a három jutna eszembe.