Controle de Botoes
Tenho um PageControl com varias Pages. Dentro de cada Page tenho um painel com botoes (novo,alterar,excluir...), padronizei os nomes desses paineis da seguinte maneira Painel0, Painel1, Painel2, seguindo entao o indice das Pages. Fiz um metodo para varer esses paineis e executar o botao de acordo com tecla a tecla pressionada (F2 = novo, F3 = alterar, ...).
Nesse metodo passo o painel que desejo varer e o botao pressionado, o problema é que eu estou tentando passar o nome do painel de acordo com a Page selecionada sem precisar saber a quantidade de Pages que tenho, entao estou tentando o seguinte:
Como faço para montar o nome do componente painel para poder passar pro metodo, sem ficar colocando:
IF (Page.ActivePageIndex = 0) then
Varer(Painel0,´ALTERAR´)
Porque posso ter um PageControl com variadas quantidades de Pages, gostaria entao de criar um metodo e uma chamada simples.
Obrigado
Nesse metodo passo o painel que desejo varer e o botao pressionado, o problema é que eu estou tentando passar o nome do painel de acordo com a Page selecionada sem precisar saber a quantidade de Pages que tenho, entao estou tentando o seguinte:
declaracao do metodo: procedure Varer(xpainel: TPanel; xbotao: String); chamando (caso tenha digitado F3): Varer(´Painel´+Page.ActivePageIndex, ´ALTERAR´); parte do metodo varer: for i := 0 to xpainel.ControlCount - 1 do Erro obvio: Estou tentando montar o nome do painel concatenando uma string, erro pq o metodo esta esperando um painel.
Como faço para montar o nome do componente painel para poder passar pro metodo, sem ficar colocando:
IF (Page.ActivePageIndex = 0) then
Varer(Painel0,´ALTERAR´)
Porque posso ter um PageControl com variadas quantidades de Pages, gostaria entao de criar um metodo e uma chamada simples.
Obrigado
Felipeiw
Curtidas 0
Respostas
Carlosfim
03/04/2009
felipeiw,
Da mesma forma que você utiliza a coleção de controles que está no painel
você pode usar para ´varrer´ o TabSheet a procura do painel desejado.
Exemplo:
Assim você pode passar toda a página atual para o procedimento
Espero ter ajudado,
Da mesma forma que você utiliza a coleção de controles que está no painel
parte do metodo varer: for i := 0 to xpainel.ControlCount - 1 do
você pode usar para ´varrer´ o TabSheet a procura do painel desejado.
Exemplo:
Procedure Varer(TabAtual: TTabSheet, Acao: String); var i: integer; begin for i:= 0 to TabAtual.ControlCount do begin if TabAtual.Controls[i].ClassName = "TPanel" then begin if TPanel(TabAtual.Controls[i]).Name = ´Nome do Painel´ then begin ...Achou o painel, agora é só fazer o que quiser... end; end; end; end;
Assim você pode passar toda a página atual para o procedimento
chamando (caso tenha digitado F3): Varer(Page.ActivePageIndex, ´ALTERAR´);
Espero ter ajudado,
GOSTEI 0
Felipeiw
03/04/2009
Eu precisaria passar o painel da PAGE selecionada para a funcao. como o nome do painel é padronizado como painel0, painel1... eu achei que sabendo daria para eu ´montar´ o nome do painel e passar para a funcao. Ficaria mais simples.
Abs
Abs
GOSTEI 0
Emarcolongo
03/04/2009
Tente assim:
Varer(TPanel(sender).Name, ´ALTERAR´);
Varer(TPanel(sender).Name, ´ALTERAR´);
GOSTEI 0