Newsgroup: it.comp.lang.delphi
Titolo: Urgente, componente Edit o Maskedit per numeri reali

Scusate,
è una cosa molt urgente, ho fatto delle ricerche ma non ho trovato niente,
ma non dovrebbe essee difficile,
ho necessità di utilizzare un campo Edit oppure Maskedit
destinato a contenere solo numeri reali,
come fare per dichiararlo tale?
E' necessario per forza ricorrere a componenti ad ok,
in tal caso quali?
Grazie, ciao
A.L.

 come fare per dichiararlo tale?
Non ho ben capito cosa intendi per numeri reali , comunque nelle rx library
(ora JEDI) trovi dei bei componenti per edit di numeri con settagio dei
decimali, edit di date con calendario eccetera (anche dbedit).
per le Jedi vedi 
http://homepages.borland.com/jedi/jvcl/
Giulio

 destinato a contenere solo numeri reali,
Potrebbe essere un'idea mettere un semplice try...except nell'OnExit della
Edit, che ti fa una conversione StringToFloat (non ricordo precisamente la
funzione), e nel caso ci sia un'eccezione, quel numero non è un reale
(decimale, giusto?)
-- 
Jax
====
Quanto più senti d'esser uomo, tanto più ti avvicini agli dei. (Goethe)

l'idea non č male, sarebbe come dire aggirare l'ostacolo, proverň probabile
che funzioni
perň sicuramente esiste un modo piů diretto, per esempio devo inserire
valori tipo:
-0,123
0,02324
2,94354
mentre non vanno bene cose del tipo:
+0,,0003
a0,98484
1,9494.030
1,0  9443
1,00,847abc
ecc..ecc..
posibile che non ci hanno pensato alla borland?


grazie
librerie molto succulente

 probabile che funzioni
IMHO le try..except usate in questo modo non sono affatto un workaround...
mi pare di aver visto una cosa del genere anche nel codice di delphi, e
direi che è un ottimo modo, che ha il solo svantaggio di generare
un'exception visibile a design-time.
-- 
Jax
====
Quando i ceci diventano verdi dalla rabbia si chiamano piselli.

A.L.
	Ciao
	MassimoB
 
---------------------------
http://www.massimobeschi.it/

Ti ringrazio per i suggerimenti,
effettivamente mi si è presentato il problema indicato,
considerazione:
possibile che la Borland si sia dimenticata dei maskedit per i numeri reali?

Ti ringrazio per i suggerimenti,

Il TMaskEdit ha delle caratteristiche molto ristrette
ed è mirato a un inserimento su una mashera impostata
appunto e non prevede un numero variabile di caratteri
o una ripetizione "infinita" di gruppi di caratteri
come si può fare con le espressioni regolari, che, tra
l'altro, delphi mi sa che non ha ... ho letto un pò in
giro e soprattutto da help non le vedo, forse mi
sbaglio ... tutti ricorrono a componenti di terze
parti. Comunque io fino ad oggi mi sono sempre limitato
ad uase i Tedit e permettere la digitazione solo di
questi caratteri ['0'..'9','-',#13,#8]  e poi
controllavo in uscita la validità del Text con un
TryStrToFloat.
Ora che mi ci hai fatto pensare ho tirato giù due righe
che dovrebbero redere il controllo più solido ... spero
;) ... e tipo "maschera senza maschera" (scusate
l'espressione l'ora e tarda).
L'evento che ho scelto è il KeyPress
----------------------------------------------------------
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Var
  txt: String;
  Edit: TEdit;
begin
  Edit := TEdit(Sender);
  txt := Edit.Text;
  if
        //Solo caratteri consentiti
        (Not(Key In ['-','0'..'9',',',#13,#8]))
        //Se c'è la virgola non la aggiunge
        Or ((Key = ',') And (Pos(',',txt)>0))
        //Se il caratterre è un - e c'è già il -
        //o non si è all'inizio, non lo aggiunge
        Or ((Key = '-') And ((Pos('-',txt)>0) Or (Edit.SelStart>0)))
        //Davanti al meno non accetta caratteri
        Or (Not(Key In [#13,#8])
                And (Pos('-',txt)>0)
                And (Edit.SelStart=0))
  Then
    Key := #0;
end;
----------------------------------------------------------
oppure ti affidi a componenti che introducano le
espressioni regolari su un edit o che siano già
costruiti per accettare solo decimali.
Bè vado a nanna ... comunque mi ha sconvolto il fatto
che delphi (ho cercato su D6) non ha le espressioni
regolari ... spero che qualcuno mi smentirà. 0_o
... con D8.Net cambia tutto, mi sa tanto che ci sono
... almeno ... nel Framework .Net ci sono. :)
