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

Dll Com Mdichild


Ricardo_PF

Pergunta

Olá, estou com um probleminha com um formulário que fiz utilizando dll.

Seguinte: fiz uma função onde a aplicação chama o formulário de uma dll e abre passando por parâmetro a própria applicãção. Esse formulário recebe a applicação e ele é do tipo MDIChild. O problema é que não consigo colocar o foco nos componetnes de dentro do formulário dll que foi aberto. É como se a aplicação perdesse o foco. Tentei utilizar a tecla tab para passar os campos, mas é como se o teclado não pudesse ser utilizado pela aplicação.

Alguém tem alguma sugestão?!

Vlw,

Ricardo.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Daew... é uma função que é chamada sempre q c quer abrir uma dll.

Eu chamo e ela verifica se o form (dakela dll) já não tah aberto. Caso não esteja há uma função dentro da biblioteca dll que é chamada. Essa função cria o formulário e retorna por parâmetro o mesmo. A primeira função (a que chama a dll) recebe o formulário por parâmetro e dá um Show nele. A função da dll que cria o formulário recebe a Aplicação por parâmetro e cria o formulário em cima da aplicação passada, ou seja, o formulário criado pela dll é criado como formulário da aplicação que chama a dll. Ai vem o problema: depois de dar o Show no formulário o foco da aplicação continua no formulário principal (aquele que chamou a função da dll). Tentei por várias funções existentes na hora de criar o formulário ou na hora de dar o Show colocar o foco no formulário que está sendo aberto, mas não consegui. Se puder me ajudar agradeço!

Ah... não coloquei o código porque é muito grande...

Obrigado,

Ricardo.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Ricardo, crio MDIChilds em dlls e o foco fica na MDIChild. Não sei o que pode estar ocorrendo, mas lá vai o código básico que é utilizado:

function Cria_MDIChild(App:TApplication):Boolean;
begin
  Result := false;
  try
    Application := App; // atribui o TApplication do .exe
    Form1 := TForm1.Create(Application); // Cria o MDIChild
    Form1.Show; // Após o Show, o foco fica no MDIChild
    Result := true;
  except
    begin
      // bla bla bla
    end;
  end;
end;
initialization
  OldApp := Application; // Salva o TApplication da dll
finalization
  Application := OldApp; // Restaura o TApplication

Link para o comentário
Compartilhar em outros sites

  • 0

cara olha só... coloquei o código que me passou... só fiquei com uma dúvida... onde coloca akela parte que diz...

initialization

...

finalization

...

coloquei o código sem essa parte e o foco não foi para o formulário da dll... acho que isso deve influenciar, não é??!...

Vlw,

Ricardo.

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você utiliza forms MDIChilds, eles tem que ter um form MDI pai que deve ser o Main Form de TAppilication. Com isso, você tem que dizer p/ sua dll que o Application dela é o Application do executável, senão dará erro no MDIChild. Quando você finaliza a dll, você tem que voltar o TApplication original dela, senão poderá dar algum erro de Windows.

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...