Transtypage de classe incorrect [Résolu]

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

5 réponses

Répondre au sujet
papyvore 155 Messages postés samedi 15 novembre 2003Date d'inscription 5 avril 2018 Dernière intervention - Modifié par papyvore le 2/10/2016 à 17:35
0
Utile
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
Utile
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 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 2018 Dernière intervention - 2 oct. 2016 à 20:15
0
Utile
2
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 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 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 101 Messages postés mardi 13 novembre 2007Date d'inscription 16 mars 2018 Dernière intervention > korgis 411 Messages postés samedi 17 mai 2003Date d'inscription 16 mars 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.