Ir para conteúdo
Fórum Script Brasil
  • 0

Manipulação de parent e controle de telas


Drzin

Pergunta

Boa noite, estou criando uma aplicação com base em uma anterior e preciso que o comportamento fique o mais próximo mais tentando reorganizar tudo e trazer melhorias, preciso que a aplicação tenha um formulário principal que chamo de Shell onde para cada evento abre uma tela dentro dele manipulando o parent por exemplo tenho um painel chamado de pnlconteudo onde tudo e aberto apetando F10 vem uma tela para inserção de itens até aí beleza, mais essa tela também tem eventos no keydown que também e F10 para realizar outra operação mais como eu não tenho showmodal e sim faço um vincular no pnlconteudo toda vez que eu aperto uma tecla ele dispara o evento do Shell ao invez do que eu estou atualmente mais mesmo assim consegui resolver fiz um callback que eu passo o evento de keydown da tela de inserção de itens para o shell e funcionou beleza mesmo tendo que tomar cuidado para não disparar e enventos em 2 forma zerando a Key, mais agora preciso que dentro do form que foi vinculado vincular outro form e controlar também o seu keydown de forma que ele só execute na própria tela, não sei se fui Claro qualquer coisa faço um aplicativo de exemplo. Se alguém puder me ajudar.

Não sei se coloquei no lugar certo, primeiro post

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde não tenho certeza se entendi direito.

Você tem uma página que carrega "paineis" e cada painel tem suas teclas de atalho e as vezes paineis diferentes usam a mesma tecla como F10 por exemplo.

Se for isso mesmo, classes são uma resposta.

Uma classe master que representa a pagina como um todo ela "lê" a tecla apertada pelo usuário e chama métodos nas classes filhas.

Cada classe filha representa um painel e tem um método para cada tecla de atalho.

Ao vincular um novo painel à pnlconteudo a classe master deve alterar a instancia da classe filha dentro de si e quando o usuário usar uma tecla de atalho ela só dispara o método da classe filha.

OU

Você cria uma variável "global" que armazena o nome do painel ativo atualmente e dentro da função f10(), por exemplo, você faz um switch que lê essa variável global e decide qual código deve ser executado.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia amigo, obrigado pela resposta mas consegui resolver com CallBack, coloquei 

TKeyDownCallBack = procedure(Sender: TObject; var Key: Word; Shift: TShiftState) of object;

Em uma unit a parte que é conhecida por todos os forms, já que a unit principal Shell não conhece as telas que são abertas posteriormente dependendo dos eventos por que em alguns casos a responsabilidade de algumas acoes são das próprias telas que foram vinculadas, dessa forma quando eu vinculo uma tela no painel(Shell) eu atribuo o o OnKeyDown a esse CallBack

FKeyDOwnCallBack := self.OnKeyDown;

e no principal sempre chamo o callback antes dele mesmo 

procedure TShell.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Assigned(FKeyDOwnCallBack) then
    FKeyDOwnCallBack(Sender,Key,Shift);

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...