| Autor | Správa |
jasug
 Užívateľ
 Založený: 05.09.2008 Príspevky: 47
 | Zaslal: So 27.11.10 17:47 |   |
Dobrý den, skúšam prejst pri vstupe reálnych čísiel na dve až pät desatinných miest z komponenty Edit na MaskEdit. Myslel som, že mi to poskytne väčší komfort, ale zatial mám nasledovné problémy a neviem ich vyriešit
- ak zadám plný počet znakov podla masky, napr. podla masky 9999.99 zadám číslo 1234.56 je to ok, ale ak zadám číslo 12 tak mi testovacia funkcia Val na OnExite zahlási neplatný znak na tretej pozícii, náhradný znak mám znak _, pri kontrolnom výpise stringu MaskEdit1.Text mi vypíše 12 .
- či je funkcia, ktorá po získaní fokusu mi nastaví editačný kurzor na prvú číslicu vlavo od desatinnej bodky v maske
Vdaka za Váš čas. |
| |
  |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: So 27.11.10 19:58 |   |
o akej funkcii Val pises ? |
| |
  |
 |
jasug
 Užívateľ
 Založený: 05.09.2008 Príspevky: 47
 | Zaslal: So 27.11.10 20:31 |   |
Ide o funkciu val(string, number, code) kde podla hodnoty code zistím či je konverzia zo stringu na number úspešná. Vdaka. |
| |
  |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: So 27.11.10 20:32 |   |
mozes kod tej funkcie tu uverejnit ? |
| |
  |
 |
jasug
 Užívateľ
 Založený: 05.09.2008 Príspevky: 47
 | Zaslal: So 27.11.10 20:47 |   |
Zdravím, je to vlastne procedura, ktorú takto používam pre Real number
var
code : Integer;
i : Real;
begin
...
Val( MaskEdit1.Text, i, Code);
if code <> 0 then
showmessage('Chyba');
......
end; |
| |
  |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: So 27.11.10 20:53 |   |
pises ze chybu zahlasi tvoja procedura Val, ako ti mam pomocte ked nezverejnis jej obsah ale iba jej aplikovanie ? ako mam vediet co konkretne robis vtej procke a nerobis to spravne ? |
| |
  |
 |
jasug
 Užívateľ
 Založený: 05.09.2008 Príspevky: 47
 | Zaslal: So 27.11.10 21:09 |   |
Nejde o moju proceduru, je to procedura v Delphi a ja ju používam v evente OnExit komponenty MaskEdit aby som si vo fáze ladenia odsúhlasil správnost číselného vstupu, lebo potom budú nasledovat matematické výpočty. |
| |
  |
 |
coldak
 Skúsený užívateľ
 Založený: 29.10.2008 Príspevky: 936
 | Zaslal: So 27.11.10 23:09 |   |
ty si si nevsimol ze mas zaskrtnute "save literal characters" ? v praxi to znamena ze vo vystupe doplni medzery na plnu dlzku formatu. skus pouzit stringreplace na odstranenie medzier a az potom validuj |
| |
  |
 |
jasug
 Užívateľ
 Založený: 05.09.2008 Príspevky: 47
 |
Vdaka za radu, pri nezaskrtnutom "save literal characters" čiže formáte masky 9999.99;0; som nemal žiadny úspech, pri zaskrtnutom "save literal characters" tzn. maske 9999.99;1; a následnom použití stringreplace ja validácia bezchybná. Skoda že Delphi nemá doplnkové funkcie pre MaskEdit, druhý problém si doprogramujem. Ešte raz vdaka. |
| |
  |
 |
|