[Delphi] Parcours des composant d'une fiche

Parcours des composant d'une fiche [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 16-12-2005 à 12:07:46    

Bonjour  :hello:  
 
Je rencontre un petit problème dans le parcours de composant d'un fiche
 
Extrait du code concerné
 

for I := 0 to ComponentCount - 1 do
begin
   if Components[i] is TEdit then
   begin
     TEdit(Components[i]).ReadOnly := True;
     TEdit(Components[i]).Color    := ClInfoBk;
   End;
 
   if Components[i] is TFrmExpression then
   Begin
     TFrmExpression(Components[i]).SynEdit_Saisie.ReadOnly := True;
     TFrmExpression(Components[i]).SynEdit_Saisie.Color    := ClInfoBk;
   End;
 
   if Components[i] is TComboBox then TComboBox(Components[i]).Enabled := False;
   if Components[i] is TCheckBox then TCheckBox(Components[i]).Enabled := False;
 
end;


 
 
Le code passe bien par les TEdit et TComboBox mais je détecte pas les TFrmExpression qui sont des form créés dynamiquement et imbriqué dans des panels de la fiche que je parcours.
 
Une idée ?


Message édité par TenjO TengE le 16-12-2005 à 12:12:43

---------------
[ Team CDM 2018 ]
Reply

Marsh Posté le 16-12-2005 à 12:07:46   

Reply

Marsh Posté le 16-12-2005 à 14:40:08    

Il faut plutôt parcourir la propriété Controls, mais le problème c'est que tu n'accèderas pas à tes forms imbriquées depuis la Form principale si elles sont dans des panels.
 
Sinon tu peux aussi tenter un InsertComponent lorsque tu crées tes forms dynamiquement (attributer le Parent rajoute à la liste des Controls mais pas à celle des Components). Il faut aussi utiliser RemoveComponent si tu veux l'enlever avant destruction de la Form.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-12-2005 à 14:47:22    

Merci de ta réponse , Je vennais juste de trouver la solution a mon problème  :D . mes forms étaient en effet dans des panels et avait comme OWner ces memes panels. j'ai résolu ce problème en utilisant une fonction récursive qui se rapelle si le composantCount du composant n'est pas nul.
 

Procedure InitComponent ( CompToParcours : TComponent );
Var
  I : Integer;
Begin
  for i := 0 to CompToParcours.ComponentCount - 1 do
    begin
      if CompToParcours.Components[i] is TEdit then
      begin
        TEdit(CompToParcours.Components[i]).ReadOnly := True;
        TEdit(CompToParcours.Components[i]).Color    := ClInfoBk;
      End;
 
      if CompToParcours.Components[i] is TFrmExpression then
      Begin
        TFrmExpression(CompToParcours.Components[i]).SynEdit_Saisie.ReadOnly := True;
        TFrmExpression(CompToParcours.Components[i]).SynEdit_Saisie.Color    := ClInfoBk;
      End;
 
      if CompToParcours.Components[i] is TComboBox then TComboBox(CompToParcours.Components[i]).Enabled := False;
      if CompToParcours.Components[i] is TCheckBox then TCheckBox(CompToParcours.Components[i]).Enabled := False;
 
      if CompToParcours.Components[i].ComponentCount > 0 Then
      begin
        InitComponent ( CompToParcours.Components[i] );
      end;
 
    end;
End;


Message édité par TenjO TengE le 16-12-2005 à 14:59:05

---------------
[ Team CDM 2018 ]
Reply

Marsh Posté le 16-12-2005 à 15:30:40    

Pourquoi mettre ton code dans des spoiler ? Il n'est pas si catastrophique, il n'y a pas à en avoir honte [:petrus75]

Message cité 1 fois
Message édité par antp le 16-12-2005 à 16:03:49

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-12-2005 à 15:59:33    

antp a écrit :

Pourquiu mettre ton code dans des spoiler ? Il n'est pas si catastrophique, il n'y a pas à en avoir honte [:petrus75]


 
l'habitude de certains forum ou, quand on met en spoiler , celui ci ne prend pas la taille du texte dedans.Ca évite les messages de 15 km de long .Ici ca sert a rien en effet  :D


---------------
[ Team CDM 2018 ]
Reply

Marsh Posté le 16-12-2005 à 16:03:55    

Ha ouais pas bête comme idée... :D Dommage que ça ne marche pas ici en effet


Message édité par antp le 16-12-2005 à 16:04:12

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed