CARREGAR FORM EM FRAME
Srs, estou a 11 anos sem programar vb6.
E, eis que do nada, a empresa onde fiz um sistema, me requisitou serviços, pelo menu conhecimento operacional.
Bem, estou a uma semana me reambientando ao VB6.
O maior dos problemas, é que muitos dos códigos que fiz, de forma profissional, à época, foram mantidos, e aos novos códigos,
adicionaram as tais de ferramentas amigáveis (de terceiros), e já passou tanta gente pela empresa, que eles não se entendem mais
com os códigos.
O que acontece.
O sistema (à época era em 3 camadas), hoje percebe-se que isto não mais é necessário, então foi criado
um executável e uma série de dlls, algumas só códigos de validações, outras com forms.
Eu havia startado uma versão onde dentro do executável havia um frame principal, e dentro dele, eram mostrados
e processados os forms (dlls), só que pela descontinuidade da minha nova versão, grande parte dela foi perdida.
Então hoje eu preciso refazer estes códigos, só que estou tão atrapalhado e exausto de pesquisar, que só me resta
recorrer a uma comunidade tão tradicional e fiel ao VB6, como vocês.
encontrei um fragmento de código onde há uma .bas contendo
Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Declare Function MoveWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
e em resto de projeto sobrevivente
If Mid(TV.SelectedItem.Key, 1, 3) = [Ô]PR\[Ô] Then
Me.Tag = Mid(TV.SelectedItem.Key, 4)
Load PrcStrMain
SetParent PrcStrMain.hwnd, Me.FraBox.hwnd
Me.ScaleMode = vbPixels
MoveWindow PrcStrMain.hwnd, 0, 0, FraBox.Width, FraBox.Height, True
PrcStrMain.Inicio (este método está dentro da .cls, e ativa o form de acordo com os parametros recebidos)
End If
Realmente agradeço se puderem me dar uns pitocos, para eu acordar.
Vlw.
E, eis que do nada, a empresa onde fiz um sistema, me requisitou serviços, pelo menu conhecimento operacional.
Bem, estou a uma semana me reambientando ao VB6.
O maior dos problemas, é que muitos dos códigos que fiz, de forma profissional, à época, foram mantidos, e aos novos códigos,
adicionaram as tais de ferramentas amigáveis (de terceiros), e já passou tanta gente pela empresa, que eles não se entendem mais
com os códigos.
O que acontece.
O sistema (à época era em 3 camadas), hoje percebe-se que isto não mais é necessário, então foi criado
um executável e uma série de dlls, algumas só códigos de validações, outras com forms.
Eu havia startado uma versão onde dentro do executável havia um frame principal, e dentro dele, eram mostrados
e processados os forms (dlls), só que pela descontinuidade da minha nova versão, grande parte dela foi perdida.
Então hoje eu preciso refazer estes códigos, só que estou tão atrapalhado e exausto de pesquisar, que só me resta
recorrer a uma comunidade tão tradicional e fiel ao VB6, como vocês.
encontrei um fragmento de código onde há uma .bas contendo
Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Declare Function MoveWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
e em resto de projeto sobrevivente
If Mid(TV.SelectedItem.Key, 1, 3) = [Ô]PR\[Ô] Then
Me.Tag = Mid(TV.SelectedItem.Key, 4)
Load PrcStrMain
SetParent PrcStrMain.hwnd, Me.FraBox.hwnd
Me.ScaleMode = vbPixels
MoveWindow PrcStrMain.hwnd, 0, 0, FraBox.Width, FraBox.Height, True
PrcStrMain.Inicio (este método está dentro da .cls, e ativa o form de acordo com os parametros recebidos)
End If
Realmente agradeço se puderem me dar uns pitocos, para eu acordar.
Vlw.
O que exatamente você tem que implementar novo? Dependendo o que for, não vale a dor de cabeça de fazer em VB6...
tem muita coisa a ser modificada.
é um sistema com muito código e complexo.
refazê-lo em outra linguagem irá tomar muito tempo (mas muito mesmo) .
tudo o que preciso é abrir os módulos chamados pelo menu, dentro de um frame, tipo:
form do exe
|------------------|-------------------------------------|
|treeviewmenu| frameX a receber um form |
|------------------|-------------------------------------|
no form do exe
tv.onclick()
set dll = tv.key
sendo que esta dll, deverá ser exibida dentro do frameX.
[Ô]não tenho nenhuma outra alternativa[Ô] de fazer outra coisa que não seja isto, mas infelizmente, como já disse,
não encontro mais nada do código que realiza esta operação.
é um sistema com muito código e complexo.
refazê-lo em outra linguagem irá tomar muito tempo (mas muito mesmo) .
tudo o que preciso é abrir os módulos chamados pelo menu, dentro de um frame, tipo:
form do exe
|------------------|-------------------------------------|
|treeviewmenu| frameX a receber um form |
|------------------|-------------------------------------|
no form do exe
tv.onclick()
set dll = tv.key
sendo que esta dll, deverá ser exibida dentro do frameX.
[Ô]não tenho nenhuma outra alternativa[Ô] de fazer outra coisa que não seja isto, mas infelizmente, como já disse,
não encontro mais nada do código que realiza esta operação.
Se não tem nada no código que faz isto, então não é isto que está fazendo, certo? Pois se está, significa que tem alguma coisa que faz isso sim. Você já depurou o código para ver o que acontece?
é... não é isto o que esta acontecendo.
hoje, ao abrir o exe, abre os forms (das dlls) em vb modal.
lembro que havia resolvido esta questão, mas como não conclui
o que estava fazendo, os [Ô]piás[Ô] que começaram a trabalhar na empresa
não deram sequencia as implementações (suponho porque precisa
programar mais, xD).
enfim... acho que vou ter que dar um tempo, esfriar a cabeça e garimpar mais
informações sobre estas duas apis (que resolveram a situação)
Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Declare Function MoveWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
hoje, ao abrir o exe, abre os forms (das dlls) em vb modal.
lembro que havia resolvido esta questão, mas como não conclui
o que estava fazendo, os [Ô]piás[Ô] que começaram a trabalhar na empresa
não deram sequencia as implementações (suponho porque precisa
programar mais, xD).
enfim... acho que vou ter que dar um tempo, esfriar a cabeça e garimpar mais
informações sobre estas duas apis (que resolveram a situação)
Declare Function SetParent Lib [Ô]user32[Ô] (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Declare Function MoveWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Faça seu login para responder