Transtypage de classe incorrect [Résolu]

pierrotk10d 102 Messages postés mardi 13 novembre 2007Date d'inscription 19 août 2018 Dernière intervention - 2 oct. 2016 à 16:43 - Dernière réponse : pierrotk10d 102 Messages postés mardi 13 novembre 2007Date d'inscription 19 août 2018 Dernière intervention
- 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

5 réponses

papyvore 159 Messages postés samedi 15 novembre 2003Date d'inscription 1 août 2018 Dernière intervention - Modifié par papyvore le 2/10/2016 à 17:35
0
Merci
salut essais ça
if TEdit(FindComponent('Edit' + IntToStr(i))).Text <> '' then


papyvore
Commenter la réponse de papyvore
pierrotk10d - 2 oct. 2016 à 17:53
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
korgis 424 Messages postés samedi 17 mai 2003Date d'inscription 4 août 2018 Dernière intervention - 2 oct. 2016 à 20:15
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 424 Messages postés samedi 17 mai 2003Date d'inscription 4 août 2018 Dernière intervention - 4 oct. 2016 à 17:27
"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 102 Messages postés mardi 13 novembre 2007Date d'inscription 19 août 2018 Dernière intervention > korgis 424 Messages postés samedi 17 mai 2003Date d'inscription 4 août 2018 Dernière intervention - 5 oct. 2016 à 22:03
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.