bonjour, je voudrais que l'utilisateur puisse choisir la couleur d'un edit,listbox, combobox. existe-t-il une propriété de la form pour appliquer le choix a tous les composants ou dois-je le faire pr chaque composant ?
merci
bonjour, je voudrais que l'utilisateur puisse choisir la couleur d'un edit,listbox, combobox. existe-t-il une propriété de la form pour appliquer le choix a tous les composants ou dois-je le faire pr chaque composant ?
merci
Salut,
Je ne sais pas
s'il existe ou pas une fonctio déjà tout faite, mais sinon un parcourt de ta form avec un truc du style :
Le je sais pas trop quoi c'est parce que je sais plus vraiment quel type il faut définir .. Quelqu'un devrait ocmpléter je pense ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 For i := 0 to TaForm.ControlCount-1 do (TaForm.Controls[i] as je sais pas trop quoi).Color:=TaCouleur;
Evidemment ceci n'est qu'une approche, après y'a quelques vérifications à faire ... (notemment que le control en cours soit bien du bon Type => cf. is )
Si besoin fais signe, je te donnerais le type qu'il faut et une fonction plus complète ...
Bon dev'![]()
pour les Edits par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if Taform.Controls[x] is TEdit Then (Taform.Controls[x] as TEdit).Color := clCouleur
ok merci bcp je testerai tt ca ce soir et je vous tiens au courant![]()
ok ca marche mais il n'a pas l'air de prendre les tdbgrid tcombobox tdbmemo ni les tdbedit, je vais regarder a ca et je poste si je trouve
Un petit bout de code pour nous aider pour t'aider =)
ok merci, de fait si j'utilise des composants d'une autre form je dois les declarer ds les uses![]()
Oui tout à fait ... En tout cas c'est une solution (Envoyé par Mihalis
Propre ???
) ... ou alors, a toi de faire une fonction dans l'unit de ta form qui est appelé depuis la create de l'autre (attention à l'ordre des create dans ce cas) pour mettre tes champs à jour ...
Je m'explique :
Form1 + Unit1 :
Form2 (contient tes tDBGrid)+ Unit2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Uses ..., Form2; ... Procedure Form1.Create(...) Begin ... MyColor:=StringToColor(...); Form2.UpdateColor(MyColor); ...
Ah mon avis là tu as tout ce qu'il te faut ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 TForm2 = Class(...) ... Public Procedure UpdateColor(Color : TColor); ... Implementation Procedure Form2.UpdateColor(Color : TColor); var i : Integer; Begin For i := 0 to form1.ControlCount-1 do begin if form2.Controls[i] is TDBGrid Then (form2.Controls[i] as TDBGrid).Color:=Color; end else if form2.Controls[i] is TEdit Then (form2.Controls[i] as TEdit).Color:=Color; else if .... End;
Bon dev'![]()
cpeut etre une idée intéressante, j'y regarderai demain avec les yeux plus ouvertsen attendant je suis dépanné mais ma solution ne me plait pas bcp.
j'ai fait un autre poste pr parcourir ttes les forms d'un projet et dedans j'y mettrais une boucle pr parcourir les composants, je n'ai pas encore testé mais en théorie ca ne serait pas mal![]()
bonjour, je reviens avec un vieux post mais je rencontre un problème
je m'explique
j'ai 2 groupbox dans un groupbox
j'ai donc une fonction récursive pour faire mes traitements mais au lancement du programme j'ai une erreur stack overflow
voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Procedure tx.ChangeColor(Group : Tgroupbox); var k : Integer; Begin for k := 0 to Group.ControlCount-1 do Begin if (Group.Controls[k] is Tjvcaptionpanel) then ChangeColor(Group.Controls[k] as Tjvcaptionpanel); if group.Controls[k] is TEdit Then (group.Controls[k] as tedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if group.controls[k] is Tcombobox Then (group.Controls[k] as tcombobox).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if group.controls[k] is tlistbox then (group.controls[k] as tlistbox).color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if (group.Controls[k] is tdatetimepicker) then (group.Controls[k] as tdatetimepicker).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if group.Controls[k] is Tdbgrid Then (group.Controls[k] as tdbgrid).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if group.controls[k] is tdbedit then (group.controls[k] as tdbedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if group.controls[k] is tdbmemo then (group.controls[k] as tdbmemo).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring); if (controls[k] is tjvcaptionpanel) then changecolor(controls[k] as tjvcaptionpanel); if (controls[k] is tgroupbox) then changecolor(controls[k] as tgroupbox); end;
personne n'a d'idée ?![]()
Erreur typique d'une boucle infinie.Envoyé par Mihalis
Verifie bien tes conditions d'arret de ta recursivitée.
Partager