Transtypage de classe incorrect

Résolu
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 - 2 oct. 2016 à 16:43
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 - 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;

3 réponses

papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
Modifié par papyvore le 2/10/2016 à 17:35
salut essais ça
if TEdit(FindComponent('Edit' + IntToStr(i))).Text <> '' then


papyvore
0
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;
0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
2 oct. 2016 à 20:15
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;


0
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
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 ?
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3 > korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019
5 oct. 2016 à 22:03
Merci Korgis. C'est OK
0
Rejoignez-nous