Newsgroup: it.comp.lang.delphi
Titolo: [delphi]passare una tedit ad una funzione

Salve!
Ho una piccola funzione per la formattazione delle TEdit, per la 
digitazione di soli numeri.
Ora visto che esistono piu TEdit vorrei fare in modo di avere un unica 
funzione, e per ogni TEdit una chiamata a questa funzione.
Il problema è che devo passare l'oggetto e non so come si fa!
Ecco una parte del codice:
procedure TFrmForm.txImportoKeyPress(Sender: TObject; var Key: Char);
begin
SOLONUMERI(????????);//qui passo l'oggetto
end;
function SOLONUMERI(oggetto: TEdit):string;
begin
.......
.......
.......
if not (Key in [#8, '0'..'9', '-', DecimalSeparator]) then
  begin
   Key := #0;
  end
  else if ((Key = DecimalSeparator) or (Key = '-')) and (Pos(Key, 
txImporto.Text) > 0) then
    begin
      Key := #0;
    end
  else if (Key = '-') and (txImporto.SelStart <> 0) then
    begin
      Key := #0;
    end;
  SOLONUMERI:=Key 
end;
Grazie
--- posted by geoForum on 
http://www.delphiedintorni.it

 end;
procedure TFrmForm.txImportoKeyPress(Sender: TObject; var Key: Char);
begin
   If (Sender is TEdit) then SOLONUMERI(Sender As TEdit);
end;
(Sender is TEdit) ritorna true se l'oggetto Sender e' un TEdit, mentre 
Sender As TEdit esegue il TypeCast
ovviamente l'altra funzione deve accettare un TEdit come parametro
ma, invece di complicarti la vita, definisci la funzione 
txImportoKeyPressed come funzione richiamata dall'evento OnKeyPress di 
tutti i TEdit e sposta all'interno di essa i vari controlli



Esatto era quello che volevo fare, ma non essendo pratico ho delle 
difficoltà.
Ho creato una unit dove concentro tutte le procedure e funzioni comuini, 
e anche per questa volevo fare la stessa cosa.
Io infatti ho piu di una casella e volevo avere un unica funzione, ma ho 
visto che quando eseguo, il controllo su i caratteri digitati vengono 
fatti, ma dopo il controllo inserisce ugualmente il carattere!!!!!


 fatti, ma dopo il controllo inserisce ugualmente il carattere!!!!!
Ricorda che tutte le funzioni evento (OnKeyPressed, OnShow, OnClose, 
eccetera) devono essere contenute dentro l'oggetto.
Il "Raggruppare" funzioni va benissimo ma, di solito, non per gli eventi.
Ora, venendo al tuo caso, fai puntare i vari TEdit ad un'unica funzione 
e risolvi la tua situazione che dovrebbe essere una cosa tipo:
Procedure TFrmForm.EditxKeyPressed(Sender : TObject; Var Key : Char);
Begin
   if (not (Key in [#8, '0'..'9', '-', DecimalSeparator])) Or
      (((Key = DecimalSeparator) or (Key = '-')) and (Pos(Key, 
txImporto.Text) > 0)) Or
      ((Key = '-') and (txImporto.SelStart <> 0))
   then
     Key := #0;
end;


Veramente Non sono riuscito a centralizzare la funzione.
Se non ti dispiace mi fai un esempio?
Se io ho un editPippo nel form1 e un editPluto nel form2 e la funzione in 
un altra unit, come faccio?
Procedure TForm1.EditPippoKeyPressed(Sender : TObject; Var Key : Char);
Begin
chiamaFunction(....);
end;
Procedure TForm2.EditPlutoKeyPressed(Sender : TObject; Var Key : Char);
Begin
chiamaFunction(....);
end;


 end;
Capito. Allora la procedura dovrebbe essere:
Procedure ControllaCarattere(Sender : TEdit; Var Key : Char);
Begin
   if (not (Key in [#8, '0'..'9', '-', DecimalSeparator])) Or
      (((Key = DecimalSeparator) or (Key = '-')) and (Pos(Key, 
Sender.text) > 0)) Or
      ((Key = '-') and (Sender.SelStart <> 0))
   then
     Key := #0;
End;
e, ovviamente, negli eventi OnKeyPressed ti bastera' richiamarla 
passandogli il parametro Key (che e' tra quelli dell'evento stesso) e 
l'oggetto sender con typecast.
per esempio: ControllaCarattere(Sender As TEdit, Key);


GRAZIE ORA E' OK!!!!!!!!!!!!!!!!!!
