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

(Resolvido) focar janela filha (MDI)


vms

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Olá Vms...

Adicione no menu do seu form principal um menu Janela;

Adicione na uses do seu form filho a clausula Menus;

Adicione na uses do form filho a unit do form principal, porque é dele que será puxado o menu;

No OnCreate do seu form filho coloque o seguinte código:

procedure TForm1.FormCreate(Sender: TObject);
var MyMenu: TMenuItem;
begin
  FrmPrincipal.Janela1.Tag := FrmPrincipal.Janela1.Tag + 1;
  Mymenu := TMenuItem.Create(FrmPrincipal.Janela1);
  MyMenu.Caption := Caption;
  MyMenu.OnClick := FormToFront;
  MyMenu.Tag := FrmPrincipal.Janela1.Tag;
  Tag := MyMenu.Tag;
  FrmPrincipal.Janela1.Add(MyMenu);
end;
Esse evento fará aparecer o nome do form filho no menu. Onde Janela1 é o nome do Menu que você criou. No evento OnDestroy do form filho coloque o seguinte código:
var I: Integer;
begin
  for I := 0 to FrmPrincipal.Janela1.Count - 1 do
  begin
    if FrmPrincipal.Janela1.Items[i].Tag = Tag then
    begin
      FrmPrincipal.Janela1.Delete(I);
      Break;
    end;
  end;
end;
Este código irá excluir do menu caso o form seja fechado. Adicione este procedimento, que irá fazer ativar a janela clicada no menu
procedure TForm1.FormToFront(Sender: TObject);
begin
  BringToFront;
end;

Para esete código funcionar você terá que declarar ele junto com os procedimentos que o delphi declara automaticamente...

É isso ai, qualquer dúvida posta ai

Abraços

Editado por Micheus
Substituída tag QUOTE por CODE. Por favor utilize a tag adequada.
Link para o comentário
Compartilhar em outros sites

  • 0

Opa Vms

Basta você colocar no evento OnDeactivate do form filho este código:

procedure TFrmClientes.FormDeactivate(Sender: TObject);

begin

MyMenu.Checked := False;

end;

Este código irá desmarcar o menu quando este não estiver ativo.

Pegue a variável var MyMenu: TMenuItem; que está no OnCreate e coloque ela como variável global, porque o procedimento acima irá usar ela também.

O seu OnCreate irá ficar da seguinte forma:

procedure TFrmClientes.FormCreate(Sender: TObject);

begin

FrmPrincipal.Janela1.Tag := FrmPrincipal.Janela1.Tag + 1;

Mymenu := TMenuItem.Create(FrmPrincipal.Janela1);

MyMenu.Caption := Caption;

MyMenu.OnClick := FormToFront;

MyMenu.Tag := FrmPrincipal.Janela1.Tag;

Tag := MyMenu.Tag;

FrmPrincipal.Janela1.Add(MyMenu);

end;

O procedimento que traz o form clicado no menu para frente, deixe ele da seguinte forma:

procedure TFrmClientes.FormToFront(Sender: TObject);

begin

BringToFront;

MyMenu.Checked := True;

end;

No Evento OnActivate do form filho coloque este código para que quando você abrir o form ele já esteja marcado no menu.

procedure TFrmContasReceber.FormActivate(Sender: TObject);

begin

MyMenu.Checked := True;

end;

O evento OnDestroy ficará da mesma forma.

Qualquer dúvida posta ai.

Abraços

Editado por Vivendo&Aprendendo
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,4k
×
×
  • Criar Novo...