CARREGAR FORM EM FRAME

MILLU 24/08/2017 14:08:53
#475990
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.





KERPLUNK 24/08/2017 17:01:58
#475995
O que exatamente você tem que implementar novo? Dependendo o que for, não vale a dor de cabeça de fazer em VB6...
MILLU 25/08/2017 13:17:02
#476015
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.
KERPLUNK 25/08/2017 13:29:37
#476017
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?
MILLU 25/08/2017 13:43:28
#476020
é... 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

Faça seu login para responder