Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Numerički unos u DBEdit . i ,

[es] :: Pascal / Delphi / Kylix :: Numerički unos u DBEdit . i ,

[ Pregleda: 3325 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.so-sombor.com.

Sajt: dogriz.blogspot.com


+6 Profil

icon Numerički unos u DBEdit . i ,12.01.2005. u 13:37 - pre 233 meseci
WinXP, Regional Settings je podešen na Serbian (Latin), kao i non-unicode programs...
Delphi 7 sp1

Kod unosa decimalnih vrednosti na numeričkoj tastaturi Delphi-ev DBEdit nije u stanju da pravilno prepozna decimalni separator. Mislim da je ovo generalno problem u Delphi-u, tj. da se ne odnosi samo na DBEdit. Ima li rešenja?

Treba da funkcioniše isto kao kod npr. MS Calculator-a.
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.vdial.verat.net.



+1 Profil

icon Re: Numerički unos u DBEdit . i ,12.01.2005. u 14:01 - pre 233 meseci
Probaj sa EditFormat property-em TField objekta. Postavi ga 0.00 since edit format string je region independant. U stvari stavi i EditFormat i DisplayFormat na 0.00, a ako ne uspe probaj 0,00 , nisam nikad radio sa non-us regional settingom, zna da pravi GOMILU problema svuda, pogotovu sa starijim programima.
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.nat-pool.so.sbb.co.yu.

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Numerički unos u DBEdit . i ,12.01.2005. u 19:22 - pre 233 meseci
Ako npr. unosim vrednost u običan EditBox, prikazuje mi . umesto , pa se javlja greška kad konvertujem - StrToFloat.
Mogu da na OnKeyPress za EditBox uradim sledeće
Code:

if Key='.' then
  Key=','

ali mi to ne rešava problem nekog drugog Locale setovanja, tj. Decimal/Currency simbola.

Kako pomoću GetNumberFormat f-je mogu da izvučem parametar lpDecimalSep? Kad bih to mogao (znao) da uradim, mogao bih umesto one sporne tačke u OnKeyPress da ubacim uvek odgovarajući separator.
 
Odgovor na temu

Riste Pejov
Team Leader/Senior Software Developer @
Ein-Sof ltd Skopje
Skopje, Macedonia

Član broj: 128
Poruke: 571
217.16.84.*

Jabber: richie@bagra.net.mk
ICQ: 154236769
Sajt: riste.softver.org.mk


Profil

icon Re: Numerički unos u DBEdit . i ,12.01.2005. u 23:47 - pre 233 meseci
Mozes da na pocetku programa postavis globalnu varijablu DecimalSeparator na koju zelis vrednost. Znaci pokusaj nesto kao:

DecimalSeparator := ',';
People who think they know everything tend to irritate those of us who do.
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.nat-pool.so.sbb.co.yu.

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Numerički unos u DBEdit . i ,13.01.2005. u 01:14 - pre 233 meseci
To i hoću da uradim, ali ne da ja određujem koji je to separator (",") već da iskoristim Windowsov Number/Currency decimal separator.
Ono što ne znam je da upotrebim GetNumberFormat funkciju da bi dobio željeni znak.

(ili možda postoji neki drugi način za čitanje vrednosti iz Control Panel/Regional and Language Options/Customize/Decimal Symbol?)
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.verat.net.



+1 Profil

icon Re: Numerički unos u DBEdit . i ,13.01.2005. u 01:52 - pre 233 meseci
Delphi Help za format string FormatFloat f-je:
Code:

.            Decimal point. The first '.' character in the format 
             string determines the location of the decimal 
             separator in the formatted value; any additional 
             '.' characters are ignored. The actual character 
             used as a the decimal separator in the output 
             string is determined by the DecimalSeparator global 
             variable.


Ako ti FormatFloat('0.00', 1) daje [,] a ne [.] vadi sa copy, mozda nije najbolje resenje al' je neko resenje..

Btw., ako ti neko odgovori a to ti ne pomogne, ili si vec probao ili onaj koji ti je odgovorio nema pojma sta prica, bar odgovoris na post, valjda je to neka opsta kultura...
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.so-sombor.com.

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Numerički unos u DBEdit . i ,13.01.2005. u 07:40 - pre 233 meseci
Citat:
Ako ti FormatFloat('0.00', 1) daje [,] a ne [.] vadi sa copy, mozda nije najbolje resenje al' je neko resenje..

Btw., ako ti neko odgovori a to ti ne pomogne, ili si vec probao ili onaj koji ti je odgovorio nema pojma sta prica, bar odgovoris na post, valjda je to neka opsta kultura...


Sorry, evo odgovora - na konto ovoga:

Citat:
_v!rus_: Probaj sa EditFormat property-em TField objekta. Postavi ga 0.00 since edit format string je region independant. U stvari stavi i EditFormat i DisplayFormat na 0.00, a ako ne uspe probaj 0,00 , nisam nikad radio sa non-us regional settingom, zna da pravi GOMILU problema svuda, pogotovu sa starijim programima.


DisplayFormat i EditFormat ne pomažu, inače kao decimalni separator se kod ovih property-a uvek koristi '.', kako i piše u
Citat:
Delphi Help za format string FormatFloat f-je:
Code:

.            Decimal point. The first '.' character in the format 
             string determines the location of the decimal 
             separator in the formatted value; any additional 
             '.' characters are ignored. The actual character 
             used as a the decimal separator in the output 
             string is determined by the DecimalSeparator global 
             variable.


ali to lepo ne radi. ',' se koristi kao Thousand separator.

Ako nekog interesuje kako efikasno koristiti DisplayFormat za prikaz numeričkih vrednosti, evo nekih primera:
,0.00 prikazuje broj 123456789 u obliku 123.456.789,00
,0.## u obliku 123.456.789 a ako iza decimalnog separatora nije nula, prikazuje do dve decimalne cifre, npr. 123456.78 -> 123.456,78 ili 123456.50 -> 123.456,5
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.so-sombor.com.

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Numerički unos u DBEdit . i ,13.01.2005. u 07:55 - pre 233 meseci
Citat:
_v!rus_: Ako ti FormatFloat('0.00', 1) daje [,] a ne [.] vadi sa copy, mozda nije najbolje resenje al' je neko resenje..



Daje mi ',' što mi i treba.

Zahvaljujem


ps. I dalje me interesuje kako da to izvučem iz GetNumberFormat f-je
 
Odgovor na temu

dogriz
Sombor

Član broj: 29744
Poruke: 259
*.so-sombor.com.

Sajt: dogriz.blogspot.com


+6 Profil

icon Re: Numerički unos u DBEdit . i ,13.01.2005. u 08:44 - pre 233 meseci
EVO REŠENJA!

ovako:
Code:

procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key='.' then
    Key:=DecimalSeparator;
end;


Sasvim slučajno sam nabasao na DecimalSeparator. Ima ga u SysUtils.
Za to mi je trebalo 3 (slovima: TRI) dana lupanja glavom u zid...

no comment
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Numerički unos u DBEdit . i ,

[ Pregleda: 3325 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.