Fórum Controle de Botoes #369605

03/04/2009

0

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:



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

Felipeiw

Responder

Posts

04/04/2009

Carlosfim

felipeiw,

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,


Responder

Gostei + 0

06/04/2009

Felipeiw

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


Responder

Gostei + 0

20/04/2009

Emarcolongo

Tente assim:

Varer(TPanel(sender).Name, ´ALTERAR´);


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar