| | |
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Autor | Správa |
---|
Registrovaný: 20.06.09 Prihlásený: 20.01.13 Príspevky: 24 Témy: 8 | Napísal SVD: 28.02.2010 3:10 | |
|
Pekný deň.
Mohol by mi niekto prosím napísať alebo poradiť ako by som ošetril vstup nejakej premennej z políčka Edit tak aby sa do neho nedal napísať iný znak ako len definovaný?
Potrebujem aby sa v políčku Edit zobrazovali len reálne čísla (0-9) a desatinná čiarka ",".
Videl som to v nejakých programoch (aj v programoch tvorených delphi) že vstupy boli krásne ošetrtené tak že sa do nich v podstate ani nedal zapísať znak ktorý tam nemal čo robiť. Určite viete čo myslím.
Ja načítavam vstup takto:
Kód: y_min:=(StrToFloat(form1.Edit1.Text));
Nedalo by sa to spraviť nejako cez if (tu je príklad čo myslím) if StrToFloat(form1.Edit1.Text) = "0" or "1" .... or "9" then else form1.Edit1.clear;
Alebo nebolo by to nejak vhodné cez vlastnosti editu: onChange a pod? Ja vstupy ošetrujem cez funkciu try (pretože som to inak nevedel ) Kód: try . . **vznik chyby pri čítaní string a zaposovaní float** **klasická chyba ak vo vzorci bude do premennej načítaný znak*** . except on EConvertError do ShowMessage('Do políčka: "Zmena o x násobok" musíte zadať kladné reálne číslo od 0 do 99.'); end;
(A mohli by ste mi ešte pomôcť z odkazom na internetovú stránku (vietew čo myslím, ak kliknem na nejaký lebel1.caption; z nápisom napr.: "www.adresa.sk" že mi otvorí prehliadač z tou stránkou. A niečo podobné len z odkazom na napísanie e-mailu. )
Vopred ďakujem veľmi by mi to pomohlo.
(Som len začiatočník v Delphi)
|
|
Registrovaný: 11.01.09 Prihlásený: 22.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 28.02.2010 11:56 | |
|
Ošetrenie TEditu:
Kód: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin
if not (Key in ['0'..'9', ',',#8]) then key := #0;
end; Odoslanie e-mailu (tento postup ho odošle cez prednastavený program - v mojom prípade Outlook - teda nie priamo cez protokol SMTP): Kód: procedure TForm1.Label1Click(Sender: TObject); begin
ShellExecute(0, 'open', 'mailto: uzivatel@gmail.com?subject=Tuto pride subjekt spravy&body=a tu text nachadzajuci sa v tele emailu', NIL, NIL, SW_SHOWNORMAL);
end;
|
|
Registrovaný: 20.06.09 Prihlásený: 20.01.13 Príspevky: 24 Témy: 8 | Napísal autor témy SVD: 28.02.2010 16:39 | |
|
Ďakujem Fico krásne funguje to ošetrenie editu. A nedalo by sa to ešte ošetriť tak aby som do Edit mohol zapísať iba jednu čiarku? Pretože teraz sa tem dá napísať mnoho. Ak nie tak aj tak ďakujem funguje to ako som chcel.
Čo sa týka toho e-mailu tú funkciu: ShellExecute mi píše, že nemám, deklarovanú a neviem ako by som ju mal deklarovať pretože ani jej typ nepoznám.
|
|
Registrovaný: 11.01.09 Prihlásený: 22.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 28.02.2010 18:36 | |
|
Tak tie dve čiarky by sa dalo pomocou premennej, ktorá by počítala ich výskyt, napríklad takto:
Kód: var commaCount: integer = 0;
...
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin
if (Key = ',') then begin if (commaCount >= 1) then key:= #0; inc(commaCount); end; if not (Key in ['0'..'9', ',',#8]) then key := #0;
end;
// potom ale netreba zabudnúť vynulovať obsah premennej commaCount - napr pri vymazaní editu; prípadne sa može použiť algoritmus, ktorý pri každom zadaní znaku bude počítať počet čiarok. To je asi aj lepší spôsob
A k tomu e-mailu: zabudol som napísať, že do uses treba pripojiť knižnicu ShellAPI, tak sa ospravedlňujem
|
|
Registrovaný: 20.06.09 Prihlásený: 20.01.13 Príspevky: 24 Témy: 8 | Napísal autor témy SVD: 28.02.2010 19:42 | |
|
Vďaka Fico, krásne to ide. Tú premennú načítavania som deklaroval ako celkovú v programe a každé načítanie nového znaku ukladám do tej premennej i:
Kód: if (length(edit1.Text) = 0) then i:=0;
if (Key = ',') then begin i:=(i+1); if (i > 1 ) then begin key:=#0; end; end;
if not (Key in ['0'..'9', ',',#8]) then key := #0;
********************* i:=0; sa nachádza v onActivate form1.
A ten email ide krásne. Ešte raz dik.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 5 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Delphi: Pomoc s Edit v Delphi, Visual Basic | 8 | 1413 | 20.06.2009 20:22 SVD | | Delphi - prázdny edit v Delphi, Visual Basic | 2 | 524 | 08.09.2013 1:29 nBXXL | | Delphi : Edit nacitanie cisel v Delphi, Visual Basic | 5 | 756 | 05.10.2011 12:40 Memorex88 | | Delphi pomoc v Delphi, Visual Basic | 4 | 623 | 12.01.2017 15:55 void | | pomoc v delphi v Delphi, Visual Basic | 4 | 1510 | 18.11.2006 13:30 p55p | | Prosím o menšiu pomoc s Delphi v Delphi, Visual Basic | 4 | 591 | 07.10.2018 19:08 peto145 | | Pomoc s programovaním programu v Delphi 7 v Delphi, Visual Basic | 6 | 1177 | 02.12.2007 12:11 MANIAC | | delphi zapis cisla do editu v delphi v Delphi, Visual Basic | 3 | 1107 | 11.05.2008 12:02 p360t | | TV s pc vstupom v Monitory, televízory a projektory | 4 | 250 | 06.07.2014 14:51 tarezni | | Repro s optickym vstupom v Ostatné | 5 | 834 | 16.04.2012 11:46 MakeLove | | Rekordér s HDMI vstupom v Ostatné | 3 | 528 | 02.01.2017 19:50 michalesku | | LCD monitor so SCART vstupom v Monitory, televízory a projektory | 3 | 2099 | 26.05.2008 23:18 a4000 | | Zakladna doska s HDMI vstupom? v Intel čipové sady | 2 | 782 | 18.06.2008 11:56 Jaro | | Tablet, alebo smartfón s audio vstupom. v Mobilné zariadenia | 0 | 228 | 13.01.2014 2:19 Pavol.F | | Externý TV tuner pre NTB s CINCH vstupom v Notebooky a netbooky | 2 | 489 | 17.08.2008 21:12 Spirit | | Tlačítko EDIT [ Choď na stránku: 1, 2 ] v Správy pre vedenie fóra | 38 | 4773 | 19.05.2007 0:12 JanoF |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|