Bonsoir à toutes et à tous
J'ai besoin dans mon application de parcourir les controls d'un conteneur exemple un TPanel.
Ce Panel peut comporter soit des simples TEdit ou des Tabsheet (sous Tpagecontrol) qui comportent eux mêmes des TgroupBox incluant des TcomboBox. Pour faire simple j'ai besoin de tout parcourir pour récupérer la valeur du TAG de ces composants afin de les comparer non pas entre eux mais les comparés par rapport a un TStringList préalablement rempli.
voici ma procédure
Existe-il une méthode moins comliquée ?
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 EnumDroits.Clear; EnumDroits.Delimiter := ','; EnumDroits.DelimitedText := Gauche(':FsPanelBas',Droite('DsPanelBas:',logiciel.Droits)); for x := 0 to EnumDroits.Count - 1 do begin for i := 0 to sPanelBas.ControlCount - 1 do begin if (sPanelBas.Controls[i] is TsPanel) then begin for j := 0 to (sPanelBas.Controls[i] as TsPanel).ControlCount - 1 do begin if ((sPanelBas.Controls[i] as TsPanel).Controls[j] is TsPageControl) then begin for y := 0 to ((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).ControlCount - 1 do begin if (((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y] is TsTabSheet) then begin for z := 0 to (((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y] as TsTabSheet).ControlCount - 1 do begin if (((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y] as TsTabSheet).Controls[z].tag = StrToIntDef(EnumDroits.Strings[x],-1) then begin (((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y] as TsTabSheet).Controls[z].Enabled := False; (((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y] as TsTabSheet).Controls[z].ShowHint := False; end; end; end; if ((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y].Tag = StrToIntDef(EnumDroits.Strings[x],-1) then begin ((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y].Enabled := False; ((sPanelBas.Controls[i] as TsPanel).Controls[j] as TsPageControl).Controls[y].ShowHint := False; end; end; end; if (sPanelBas.Controls[i] as TsPanel).Controls[j].Tag = StrToIntDef(EnumDroits.Strings[x],-1) then begin (sPanelBas.Controls[i] as TsPanel).Controls[j].Enabled := False; (sPanelBas.Controls[i] as TsPanel).Controls[j].ShowHint := False; end; end; end; if sPanelBas.Controls[i].Tag = StrToIntDef(EnumDroits.Strings[x],-1) then begin sPanelBas.Controls[i].Enabled := False; sPanelBas.Controls[i].ShowHint := False; end; end; end;
@Merci.
Partager