TControl et propriete color

lelahel08
Messages postés
36
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
24 octobre 2005
- 19 oct. 2005 à 10:59
Niki2001
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
- 22 oct. 2005 à 13:11
Bonjour a tous !

Voilà je voudrais changer la couluer de différents composant et plutot que de créé différentes fonction avec différents cast je voudrais faire quelque chose comme ceci :

TControl(Sender).Color := clRed;

Mais bien que la propriété Color de TControl existe il n'y accède pas .... elle est protected mais je devrais l'atteindre pourtant ....

Merci merci !!

PS : Je suis en Delphi 5

3 réponses

Niki2001
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
1
19 oct. 2005 à 13:59
Si tu utilise des composants, ne passe pas par TControl, mais change directement la propriété Color.
0
lelahel08
Messages postés
36
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
24 octobre 2005

19 oct. 2005 à 14:09
Impossible ca !!!



Je ne sais pas quel est le type du composant et le but de ma question
est justement d'éviter 36 methode pour gérer 36 type de composant, et
de tout centraliser.



TComponent(Sender).Color => n'existe pas

Sender.Color => non plus



et faire des test du style



TEdit(Sender).Color

TMaskEdit(Sender).Color



c'est lourd ! actuellemnt si je rentre dans un TEdit je lance :



procedure TfR.ChgColorEnter(Sender: TObject);

begin

if TPageControl((TEdit(Sender)).Parent.Parent).Name = 'tsAgence' then

TEdit(Sender).Color := ColorSaisiPln

end;



quand je rentre dans un maskedit je lance



procedure TfR.ChgColorEnterMask(Sender: TObject);


begin


if TPageControl((TMaskEdit(Sender)).Parent.Parent).Name = 'tsAgence' then


TMaskEdit(Sender).Color := ColorSaisiPln


end;



... lourd ....



le but final :



procedure TfR.ChgColorEnter(Sender: TObject);


begin


if TPageControl(Sender.Parent.Parent).Name = 'tsAgence' then


Sender.Color := ColorSaisiPln


end;
0
Niki2001
Messages postés
85
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
17 décembre 2005
1
22 oct. 2005 à 13:11
Cé que tu demandes est, à mon sens, impossible. Selon les compsants, la propriété Color n'est pas implémentée, donc inutilisable. La seule solution est donc, à priori, de faire 36 tests, comme tu dis.
0