Transtypage de classe incorrect [Résolu]

Messages postés
102
Date d'inscription
mardi 13 novembre 2007
Dernière intervention
19 août 2018
- - Dernière réponse : pierrotk10d
Messages postés
102
Date d'inscription
mardi 13 novembre 2007
Dernière intervention
19 août 2018
- 5 oct. 2016 à 22:03
Bonjour,
Je voudrait savoir si tous les TEdit de ma fiche sont renseigné avant de lancer un calcul.
Avec l'instruction: " if Form1.Components[i].Text" je reçoit le message d'erreur "Transtypage de classe incorrect" alors que la même instruction avec la propriété Tag fonctionne correctement lorsque la ligne qui pose problème est en REM //.
Merci de m'aider à résoudre ce problème.
Voici ce que j'ai écrit:
procedure TForm1.Button1Click(Sender: TObject);
Var i: Integer;
begin
for I := 0 to Form1.ComponentCount - 1 do begin
if (Form1.Components[i] is TEdit) or (Form1.Components[i] is TMaskedit) then begin
If (Form1.Components[i].Text) <> '' then
Somme := Somme + (Form1.Components[i].Tag);
end;
end;
showMessage('Checksum = ' + IntTostr(Somme));
end;

Afficher la suite 

Votre réponse

3 réponses

Messages postés
161
Date d'inscription
samedi 15 novembre 2003
Dernière intervention
10 décembre 2018
0
Merci
salut essais ça
if TEdit(FindComponent('Edit' + IntToStr(i))).Text <> '' then


papyvore
Commenter la réponse de papyvore
0
Merci
Bonjour,
J'ai trouvé. Si je supprime le OR dans la ligne if (fMaint.Components[[i] is TEdit) or (.... is TMaskEdit) ça marche.
Comme je n'ai n'ai qu'un TMaskEdit je récupère la valeur du Tag dans un OnExit;
Si un membre a une solution avec le OR je serai content de la connaitre.
Je vais tester votre solution. Merci
  for I := 0 to fMaint.ComponentCount - 1 do begin
if (fMaint.Components[i] is TEdit) then begin
if (fMaint.Components[i] as TEdit).Text <> '' then
Somme := Somme + (fMaint.Components[i].Tag);
end;
Commenter la réponse de pierrotk10d
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
0
Merci
Salut,

TEdit et TMaskEdit héritent de TCustomEdit qui possède une propriété "text", donc :

for i := 0 to Form1.ComponentCount - 1 do
  begin
     if (Form1.Components[i] is TEdit) or (Form1.Components[i] is TMaskEdit) then
     begin
        if (Form1.Components[i] as TCustomEdit).Text <> '' then
          Somme := Somme + (Form1.Components[i].Tag);
     end;
  end;


korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
-
"Si un membre a une solution avec le OR je serai content de la connaitre"
Ben voilà, la réponse est au-dessus.
Un petit retour, voir si ça convient ?
pierrotk10d
Messages postés
102
Date d'inscription
mardi 13 novembre 2007
Dernière intervention
19 août 2018
> korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
-
Merci Korgis. C'est OK
Commenter la réponse de korgis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.