Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: tiberi72 - Gennaio 14, 2012, 12:26:58 am

Titolo: dbedit con float
Inserito da: tiberi72 - Gennaio 14, 2012, 12:26:58 am
So che con questa domanda dimostrero' tutta la mia esperienza!!!
Ho un database firebird con una tabella dove ho dichiarato un campo float ed ho inserito il valore 0,15
Quando vado su Lazarus leggo questo valore con un campo DbEdit ma il campo mi propone il valore 0,150000005960465
Cosa mi proponete di fare, e meglio cercare di controllare il valore nell'istruzione SQL della TSQLQuery o inserisco una mask edit sul campo?
Mi potreste aiutare a crearne una che gestisca solo 2 decimali?
Titolo: Re:dbedit con float
Inserito da: xinyiman - Gennaio 16, 2012, 08:20:19 am
Hai già visto questo?

http://www.freepascal.org/docs-html/rtl/sysutils/formatfloat.html
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 17, 2012, 09:51:41 am
Chiedo scusa per la mia ingnoranza, ma quindi non c'e' la possibilita' in lazarus di inserire direttamente un campo dbedit associandolo a una qualsiasi formattazione in visualizzazione?
Pensavo ci fosse qualcosa simile all'editmask solo che applicato anche alla visualizzazione e non solo all'edit del campo.
Secondo te posso inserire la funzione formatfloat  in qualche evento del campo dbedit leggendo il campo come se fosse formato da solo 2 decimali?
Titolo: Re:dbedit con float
Inserito da: xinyiman - Gennaio 17, 2012, 10:18:21 am
Sull'evento OnExit oppure meglio sull OnChange esegui la formatfloat sul valore del campo!  :)
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 10:47:51 am
Chiedo scusa ma ancora non sono riuscito a scrivere correttamente l'istruzione
Premesso che il campo e' un tdbedit gia collegato al rispettivo datafield, sull'evento onchange del campo DbMaut ho scritto:

DbMaut.Field.CurValue=FORMATFLOAT('0,00',DBMAUT.Field.AsFloat); 

Pero' visualizzo ancora il campo con un sacco di decimali
Titolo: Re:dbedit con float
Inserito da: xinyiman - Gennaio 18, 2012, 10:55:14 am
Prova a mettere lo stesso codice in OnEnter e in OnExit!
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 10:58:38 am
Niente, stessa cosa
Titolo: Re:dbedit con float
Inserito da: Legolas - Gennaio 18, 2012, 11:03:31 am
Forse è sbagliato il mask. Prova questo:

Codice: [Seleziona]
DbMaut.Field.CurValue=FORMATFLOAT('0.00',DBMAUT.Field.AsFloat);  
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 11:09:25 am
Non e' cambiato nulla...
Titolo: Re:dbedit con float
Inserito da: Legolas - Gennaio 18, 2012, 11:53:20 am
Il mask che ti ho indicato è comunque quello giusto per la formattazione che ti serve. Prova a mettere questo nell'evento onChange del dbedit:

Codice: [Seleziona]
var
  f: double;
begin
  f := StrToFloat(DbMaut.text);
  DbMaut.text := formatfloat('0.00', f);
end;

Tra l'altro la proprietà CurValue dovrebbe essere read-only, quindi non capisco come riesci ad assegnarle un valore senza ottenere errori  :o
Titolo: Re:dbedit con float
Inserito da: xinyiman - Gennaio 18, 2012, 11:54:27 am
Prova ad eseguire questo dopo l'apertura della query

    TFloatField(NomeDatasource.dataset.FieldByName('NomeCampo')).DisplayFormat:='0.00';

E fammi sapere
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 11:57:58 am
Il mask che ti ho indicato è comunque quello giusto per la formattazione che ti serve. Prova a mettere questo nell'evento onChange del dbedit:

Codice: [Seleziona]
var
  f: double;
begin
  f := StrToFloat(DbMaut.text);
  DbMaut.text := formatfloat('0.00', f);
end;

Tra l'altro la proprietà CurValue dovrebbe essere read-only, quindi non capisco come riesci ad assegnarle un valore senza ottenere errori  :o
SI, cosi' funziona grazie mille :)
Titolo: Re:dbedit con float
Inserito da: xinyiman - Gennaio 18, 2012, 12:00:05 pm
Quale funziona?
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 12:03:08 pm
Quale funziona?
Indendevo la soluzione proposta da legolas
ora provo ad applicare la tua poi ti faccio sapere
Titolo: Re:dbedit con float
Inserito da: Legolas - Gennaio 18, 2012, 12:04:57 pm
In effetti la mia, anche se funziona, è una "pezza". Non sono molto esperto di database, ma quella di  xinyiman dovrebbe essere più corretta perché agisce a monte del problema
Titolo: Re:dbedit con float
Inserito da: tiberi72 - Gennaio 18, 2012, 12:13:16 pm
Si, funzionano entrambe, grazie mille!!  :D :D :D