Fórum Percorrer controles em PageControls que estão dentro de PageControls. #564530
24/10/2016
0
Possuo um PageControl com 10 TabSheets. Dentro de cada TabSheet possuo outro PageControl que possui de 1 a 3 TabSheets. Necessito fazer um loop percorrendo todos os Edits que estão em todos os PageControls internos (justamente nos quais estou com dúvidas).
Comecei a escrever o código mas estou "travado".
Se alguém puder dar uma luz, agradeço.
procedure TfrmPrincipal.TabSheetIterate;
var
i, c: byte;
begin
for i := 0 to pgcPages.PageCount - 1 do
for c := 0 to pgcPages.Pages[i].ControlCount - 1 do
begin
if (pgcPages.Pages[i].Controls[c] is TPageControl) then
begin
end;
end;
;
end;
Adalberto Brasaca
Curtir tópico
+ 0Post mais votado
24/10/2016
Criei um formulário com um PageControl principal chamado PageControl1. Dentro dele criei dez abas. Dentro de cada aba criei mais um PageControl com três abas e dentro de cada aba criei três Edits. Criei um BitBtn e programei este botão assim:
procedure TForm1.PercorrePageControlClick(Sender: TObject);
var
Contador1 : Integer;
Contador2 : Integer;
TabSheetExterno : Integer;
TabSheetInterno : Integer;
Edit : Integer;
begin
for TabSheetExterno := 0 to Pred(PageControl1.PageCount) do
begin
PageControl1.Pages[TabSheetExterno].Caption := FormatFloat('000', TabSheetExterno + 1);
for Contador1 := 0 to Pred(PageControl1.Pages[TabSheetExterno].ControlCount) do
begin
if (PageControl1.Pages[TabSheetExterno].Controls[Contador1] is TPageControl) then
begin
PageControl1.Pages[TabSheetExterno].Controls[Contador1].Hint := FormatFloat('000', TabSheetExterno + 1);
for TabSheetInterno := 0 to Pred(TPageControl(PageControl1.Pages[TabSheetExterno].Controls[Contador1]).PageCount) do
begin
TPageControl(PageControl1.Pages[TabSheetExterno].Controls[Contador1]).Pages[TabSheetInterno].Caption
:= FormatFloat('000', TabSheetExterno + 1) + '-' + FormatFloat('000', TabSheetInterno + 1);
Edit := 0;
for Contador2 := 0 to Pred(TPageControl(PageControl1.Pages[TabSheetExterno].Controls[Contador1]).Pages[TabSheetInterno].ControlCount) do
begin
if (TPageControl(PageControl1.Pages[TabSheetExterno].Controls[Contador1]).Pages[TabSheetInterno].Controls[Contador2] is TEdit) then
begin
Inc(Edit);
TEdit(TPageControl(PageControl1.Pages[TabSheetExterno].Controls[Contador1]).Pages[TabSheetInterno].Controls[Contador2]).Text :=
FormatFloat('000', TabSheetExterno + 1) + '-' +
FormatFloat('000', TabSheetInterno + 1) + '-' +
FormatFloat('000', Edit);
end;
end;
end;
end;
end;
end;
end;
Este código percorre as abas do primeiro PageControl, dentro de cada aba ele percorre os seus componentes filhos, se ele achar um PageControl, vai percorrer as abas deste PageControl, dentro das abas ele vai percorrer os seus componentes procurando edits. Este meu código está alterando o caption das abas e o texto dos edit. Precisei utilizar um recurso chamado cast, para poder alterar as propriedades dos tabsheets e edits encontratos.
vê aí se te atende.
Npi Tecnologia
Gostei + 5
Mais Posts
24/10/2016
Robson Morais
for i := pgcPages.ComponentCount -1 downto 0 do
begin
if (pgcPages.Components[i] is TEdit) then
(pgcPages.Components[i] as TEdit).text := ´´;
end;Gostei + 0
24/10/2016
Adalberto Brasaca
Coloquei um PageControl no form. Criei 10 TabSheets. Em cada TabSheet em coloquei mais um PageControl que podem possuir de 1 a 3 TabSheets cada. Preciso percorrer todos os TqabSheets dos PageControls internos e verificar o que é TEdit (igual a terceira linha do seu código).
Abraço.
Gostei + 0
24/10/2016
Adalberto Brasaca
procedure TfrmPrincipal.TabSheetIterate;
var
i, c, d: byte;
pageControlInterno: TPageControl;
begin
for i := 1 to pgcPages.PageCount - 1 do
for c := 0 to pgcPages.Pages[i].ControlCount - 1 do
if (pgcPages.Pages[i].Controls[c] is TPageControl) then
begin
pageControlInterno := TPageControl(pgcPages.Pages[i].Controls[c]);
for d := 0 to pageControlInterno.PageCount - 1 do
if (pageControlInterno.Pages[c].Controls[d] is TEdit) then
ShowMessage('É Edit');
end;
end;
Gostei + 0
24/10/2016
Adalberto Brasaca
Era isso mesmo... SHOW DE BOLA !!! Muito, mas muito obrigado mesmo pelo retorno. Agora é somente adaptar ao que eu preciso.
Grande abraço.
Gostei + 0
24/10/2016
Npi Tecnologia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)