USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Chamar MDIChild a partir do MDI de uma CLASSE ?
orlandomb
PORTO ALEGRE
RS - BRASIL
Postada em 31/10/2005 06:35 hs         
Olá,
Estou com um problema, tenho uma aplicação que possui um form MDI, a apartir do MDI eu chamo um form MDIChild até aqui tudo bem, só que estou mudando meu sistema para classes, ou seja o form mdichild que é chamado agora a partir de uma classe, mas agora eu não posso configurar o form como mdichild pois dentro da classe não existe um form MDI. Alguém tem alguma idéia de como posso chamar um form MDIchild de uma classe a partir do MDI do projeto principal?
Abraços
     
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 02/11/2005 09:33 hs            
Olha... eu tô um pouco confuso com o q vc quer mas vamos ver se entendi...
Pra resumir é assim: entendi q vc quer chamar um mdichild a partir de uma classe certo??
 
Bom, não sei se é essa sua dúvida mas a solução é vc fazer uma procedure (uma sub) q chama o form mdichild dentro da sua classe:
 
Public Sub Formcall()
Form2.Show
End Sub
 
no  MDIForm (mdiprincipal) vc faria assim:
 
Dim a As Class1
 
Private Sub MDIForm_Load()
Set a = New Class1 'Seta o objeto a como a classe em questão
End Sub
 

Private Sub Command1_Click()
a.Formcall 'chama o form mdichild a partir da classe
End Sub
 
 
Este é um exemplo simples... usei um botão mas vc pode usar um menu, bom ai vc sabe como partir daqui pra frente...
 
Desculpe se não é isso q vc queria, mas foi o q entendi.... tentei hehehe
 
qq dúvida é só postar
 
t+
 
 
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 03/11/2005 07:08 hs            
Orlando,
Reveja seus conceitos de OOP...
Me parece ilogico vc chamar o form MDIChild dentro de uma classe... o proprio form é uma classe... e vc nao precisa encapsular ele em outra classe para adaptar seu sistema...
 
Qto ao q vc quer fazer, eu ja tentei (apenas pra testes) e nao consegui fazer naum... me parece que o MDIChild precisa existir no mesmo escopo do MDIForm... se vc encapsula o MDIChild na classe, ele deixa de existir no escopo do MDIForm...
 
Flw!


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
orlandomb
PORTO ALEGRE
RS - BRASIL
Postada em 04/11/2005 00:16 hs         
Obrigado pessoal pela ajuda, mas eu já achei uma solução, achei uma API que muda as propriedades de um form para mdichild em tempo de execução, para quem interessar aí vai o código, um grande abraço a todos.
 
'-- Inicio: API para chamar form MDIChild de uma dll
Const GWL_STYLE = -16
Const WS_CHILD = &H40000000
Const WS_EX_MDICHILD = &H40
Const GW_CHILD = 5
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
 
Public Sub ShowF(hwnd As Long, oFormChild As Object)
    Dim Estilo As Long
    Dim MDI As Long
   
    'Pega a janela filha do MDI (MDI client)
    MDI = GetWindow(hwnd, GW_CHILD)
   
    'Pega o estilo do form da DLL
    Estilo = GetWindowLong(oFormChild.hwnd, GWL_STYLE)
   
    'Coloca estilo WS_CHILD para que a janela seja filha do MDI
    'SetWindowLong oFormChild.hwnd, GWL_STYLE, (Estilo Or WS_CHILD Or WS_EX_MDICHILD)
    SetWindowLong oFormChild.hwnd, GWL_STYLE, Estilo
   
    'Coloca o form da DLL como filho do MDI
    SetParent oFormChild.hwnd, MDI
   
    oFormChild.Show
End Sub
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página