[ Divjak @ 30.04.2005. 03:08 ] @
Vec sat vremena trazim resenje...
U MySQL bazi fieldovi tipa Decimal(10,2) i tako se i vide u MySQL Query Browseru ali u DBGridu se nule skrate... kako to spreciti, odnosno kako formatirati polja u Dbgridu da budu 0.## ?

edit: e da ne verujes, sad se nule vide dok designiram formu ali kad pokrenem app. onda se ne vide...
[ engineer @ 30.04.2005. 09:27 ] @
Designtime:
- podesi DisplayFormat property Dataset Field-a na #.00 ili 0.## (truncate ili round decimala - pogledaj "DisplayFormat property (TNumericField)" u Help-u)

ili runtime:
- koristi OnGetText event Dataset Field-a da formatiraš tekst koji će biti prikazan
[ Divjak @ 30.04.2005. 12:59 ] @
DataSet koji koristim (zeos ZQuery) nema DisplayFormat parametar u DataSetField-u kao ni evenet OnGetText, a nisu sva polja numericka...

Nije mi jasno kako se u bazi vide nule, i u DBGridu se vide dok ne pokrenem program...
Kako da nateram dataset da fetchuje podatke kao text?
[ Divjak @ 01.05.2005. 02:01 ] @
Resio sam tako sto sam formatirao polja u bazi kao VARCHAR... ne znam da li ovim nesto gubim, ali ja drugo resenje ne vidim... ako neko zna neka kaze...
[ engineer @ 01.05.2005. 10:21 ] @
Citat:
Divjak: DataSet koji koristim (zeos ZQuery) nema DisplayFormat parametar u DataSetField-u kao ni evenet OnGetText
Hm, baš čudno, obično su 3rd party komponente nasleđuju TDataSet, a samim tim i TField klasu. Nemam Zeos komponente tako da ti tu ne mogu pomoći

Citat:
Divjak: a nisu sva polja numericka...
DisplayFormat imaju samo naslednici TNumericField klase, kao što su TIntegerField ili TFloatField.
OnGetText event postoji kod svih naslednika TField klase.
[ Divjak @ 01.05.2005. 12:54 ] @
Da u pravu si za OnGetText event, ipak postoji kod TFielda...
I kako bi onda to trebalo da izgleda?

nesto ovako:
Code:

DBGrid1.Fields[2].OnGetText(DBGrid1.Fields[2], formatfloat(',.##' , ZQuery1.FieldByName('NUMERICKOPOLJE').asfloat)),true);

Ovo nece da prodje jer constant object cannot be passed as parameter...
[ engineer @ 01.05.2005. 16:08 ] @
Ma ne, OnGetText je event i to TDataSet-a, znači nešto ovako:

Napišeš svoju OnGetText proceduru...
Code:
procedure TForm1.MojOnGetTextEvent(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  Text := FormatFloat(',.##', Sender.AsFloat);
end;

... i obavestiš svoj ZQuery1 o gorepomenutoj...
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  ZQuery1.FieldByName('NUMERICKOPOLJE').OnGetText := MojOnGetTextEvent;
  ...
end;