Transtypage de classe incorrect [Résolu]

Signaler
Messages postés
106
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 octobre 2020
-
Messages postés
106
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 octobre 2020
-
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

Messages postés
211
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
10 juin 2021
10
salut essais ça
if TEdit(FindComponent('Edit' + IntToStr(i))).Text <> '' then


papyvore
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;
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
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;


Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
"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 ?
Messages postés
106
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
25 octobre 2020
3 >
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019

Merci Korgis. C'est OK