Bonjour,

pour la saisie de nombres dans mes TEdit, j'utilise cette fonction (trouvée sur le net) que j'ai dupliquée dans plusieurs Form contenant des TEdit. Par exemple dans l'unité S_Te.pas (Form TF_Te) j'ai :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{ ====================================================================== }
procedure TF_Te.MasqueSaisie(Sender: TObject; var Key: Char);
{ Filtre sur la saisie d'une valeur numérique dans un TEdit }
var
 texte         : String;
begin
   With Sender As  TEdit  Do
      Begin
         texte:=text;
         { La saisie d'une lettre n'est pas acceptée :  }
         if not (Key in ['0'..'9',',','.','-',#8,#13]) then Key := #15;
         {  Interdiction de la saisie de plusieurs virgules successives :
         en outre, la saisie d'un point est remplacée par une virgule :     }
         if (Key = ',') or (Key = '.') then
            if (Pos(',',Texte) > 0) or (Pos('.',Texte) > 0) then
               Key := #15
            else
               Key := DecimalSeparator;
         { un point (une virgule) sera toujours précédé de 0 :    }
         if (Key = ',') or (Key = '.') then
         if length(texte)<1  then
            Begin
               text:='0,';
               selstart:=2;
               Key :=#0;
            end;
         if (Key = ',') or (Key = '.') then
         if ((length(texte)<2) And (copy(texte,1,1)='-'))  then
            Begin
               text:='-0,';
               selstart:=3;
               Key :=#0;
            end;
         {  pas d'espace :     }
         if Key = #32 then Key := #15;
         {  ni de tiret :   }
         if Key = '-' then if ((length(Texte) > 0)And(SelStart >1)) then Key := #15;
         if Key <> #0 then inherited KeyPress(Key);
      End ;
   { Suppression de certaines touches qui sonnent dans le Edit des champs }
   If Ord(Key)=13 Then Key := Chr(0) ;
end;
{ ======================================================================= }
J'aimerais la mettre en commun dans l'unité WinUtil pour éviter de la dupliquer.
Si je la mets dans Winutil en enlevant le préfixe TF_Te. j'ai cette erreur :

[Erreur] Winutil.pas(271): Forme d'appel de méthode autorisée seulement dans les méthodes de types dérivés
Y a t il un moyen pour m'en sortir ?

Merci
A+
Charly