[ sdejan @ 21.11.2006. 19:03 ] @
dakle, ćelije u u DBGridu u kojima bi se inače prikazala nula treba da budu prazne...

pokušao sam da napravim generičko rešenje u OnDrawColumnCell, i to tako da se
font u ćelijama koje sadrže nulu izjednači sa pozadinom; problem je u tome što se
nula ipak iscrtava kada preko polja pređe selekcija, te sam odustao od tog rešenja
usled nedostatka vremena...


pritisnut sam zahtevima, svaka pomoć / savet / lepa reč je dobrodošla :)

[ delalt @ 21.11.2006. 20:04 ] @
Citat:
sdejan:
...pokušao sam da napravim generičko rešenje u OnDrawColumnCell, i to tako da se
font u ćelijama koje sadrže nulu izjednači sa pozadinom;...

Mislim da možeš i tako, samo nemoj da mijenjaš font, nego postavi da je

Text := '';

kad je izjednačeno sa nulom (ili nekako slično, možda sam lupio, ne mogu sad da probam).
Ako to ne može, pogledaj malo u Delphi helpu za DisplayFormat ili
za TField.OnGetText. Mislim da ima i primjera.
[ badam @ 21.11.2006. 22:06 ] @
ideja:
posto koristis DBGrid, DataSetu njegovog DataSourcea dodaj calculated field tipa string koji ce se racunati:

Code:

procedure TForm1.ADOTable1CalcFields(DataSet: TDataSet);
begin
  if ADOTable1Field1.Value=0 then
    ADOTable1NoviField.Value:=''
  else
    ADOTable1NoviField.Value:=FloatToStr(ADOTable1Field1.Value)      // ili FormatFloat pa lepo napravis Mask
end;


onda iz DBGrid-a izbacis Field1 i ubacis NoviField.

Pozdrav
[ dogriz @ 22.11.2006. 07:10 ] @
Ako koristiš ClientDataSet, može i ovako:
Code:

procedure TForm1.ClientDataSet1AAAGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  if Sender.AsInteger=0 then
    Text:=''
end;


Trebalo bi da radi i za ADO (ali neću da tvrdim jer koristim DBExpress)
[ sdejan @ 22.11.2006. 07:58 ] @

i ja koristim DBExpress, zaboravio sam to da pomenem :)

rešenja mi se dopadaju, hvala na pomoći svima !