USAR FORM COMPARTILHADO ENTRE 2 PROJETOS

AMELINHACODE 05/07/2022 21:08:22
#500166
Boa noite pessoal

Possuo 2 projetos distintos... alguns formÂ's uso os mesmo nos 2 projetos... e alguns formÂ's são exclusivo aquele projeto especifico.

Possuo um form chamado Parcelas que é compartilhado em ambos os projetos
Possuo um form chamado PDV que é exclusivo do projeto PDV.vbp

exemplo:
1. Abro o projeto PDV.vbp que vai iniciar o form PDV automaticamente.
2. Cliente chega, precisa pagar uma parcela, chamo o form Parcelas (que eles esconde o form PDV) e abre o form Parcelas....
3. Faço a tarefa que preciso fazer, quando eu fechar o form Parcelas ele deve reabrir o for PDV (codigo abaixo)
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If vChamouCaixa = "PDV" Then
Parcelas.Hide
PDV.Show 1
Else
Parcelas.Hide
End If
End Sub


Até aqui tudo ok

No outro projeto chamado Principal.vbp.... cliente chega e quer pagar uma parcela... abro normal, dou baixa na parcela do cliente, mais quando fecho a janela de parcelas dar erro: (marquei de vermelho o erro é o motivo)
Quando fechar vai chamar o seguinte contigo:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If vChamouCaixa = "PDV" Then
Parcelas.Hide
[txt-color=#e80000]PDV[/txt-color].Show 1 [txt-color=#e80000]"erro acontece aqui pq o PDV.frm não faz parte do projeto Principal.vbp... então não tem como citar ele aqui[/txt-color]
Else
Parcelas.Hide
End If
End Sub


Então alguma duvidas sugiram:
1. Como usar o mesmo form nos 2 projetos sem ter o form citado em um dos projetos.
2. Caso eu crie um variável e coloque num modulo separado de cada projeto citando o projeto que chamou aquele form parcelas... e caso os 2 projetos estejam aberto ao mesmo tempo.

Fiquei meio perdida como fazer isso no vb6

JABA 06/07/2022 00:11:05
#500167
Como se trata do VB6, eu duplicaria os forms e jogava um para cada projeto, fazendo as devidas mudanças. Assim fica cada coisa no seu devido lugar e não será necessário ter qualquer gambiarra.
AMELINHACODE 06/07/2022 07:35:20
#500169
Citação:

:
Como se trata do VB6, eu duplicaria os forms e jogava um para cada projeto, fazendo as devidas mudanças. Assim fica cada coisa no seu devido lugar e não será necessário ter qualquer gambiarra.



Fica meio inviável...
Exemplo: Faço correções ou melhorias no form Parcelas de um projeto... ai vou ter q fazer no form Parcelas do outro projeto (ou ter q ficar copiando form entre pastas, correndo o risco de por descuido substituir o form errado)
SAMUKA 06/07/2022 07:55:50
#500170
Existe uma outra forma, que é colocar esse form que voce não quer duplicar dentro de um projeto ActiveX DLL, e depois relacionar essa DLL nos dois projetos.
Mas precisa ver se realmente compensa, porque as vezes o form, pode estar usando funções de módulos do projeto.

Voce também pode relacionar o mesmo arquivo Parcela.frm em dois projetos diferentes. Só é preciso ter cuidado pra que a mudança dentro de um projeto, não cause problema no outro.
ALTAFIN 06/07/2022 08:00:01
#500171
Alguns anos atrás (12 anos ) o Marcelo-Treze me ajudou nessa dúvida. Eu precisava colocar um formulário dentro de uma DLL para compartilhar ele com outros projetos, achei na internet o MDIExtend mas ele foi descontinuado. No link abaixo tem a conversa e o arquivo que voce pode baixar para estudar e verificar se ajuda voce. Esse projeto utiliza MDI Form.
Tópico do VBMania sobre component MDIExtend

A outra dica do SAMUKA também acho que funciona, de referenciar o mesmo Form em dois projetos diferentes, nunca testei assim mas teoricamente funcionaria.
KERPLUNK 06/07/2022 18:35:46
#500172
Resposta escolhida
Voce pode simplesmente referenciar o form em dois(ou mais) projetos e verificar se o form que voce quer esconder está carregado. Algo tipo:

If PDV Not Is Nothing Then
PDV.hide
end if
AMELINHACODE 07/07/2022 09:10:58
#500177
Citação:

:
Existe uma outra forma, que é colocar esse form que voce não quer duplicar dentro de um projeto ActiveX DLL, e depois relacionar essa DLL nos dois projetos.
Mas precisa ver se realmente compensa, porque as vezes o form, pode estar usando funções de módulos do projeto.

Voce também pode relacionar o mesmo arquivo Parcela.frm em dois projetos diferentes. Só é preciso ter cuidado pra que a mudança dentro de um projeto, não cause problema no outro.



O problema é que o projeto PDV possui outros forms e módulos somente dele... ficaria enviável jogar todos
AMELINHACODE 07/07/2022 09:15:12
#500178
Citação:

:
Voce pode simplesmente referenciar o form em dois(ou mais) projetos e verificar se o form que voce quer esconder está carregado. Algo tipo:


If PDV Not Is Nothing Then
PDV.hide
end if



o problema está na hora de criar o executável.... ele verificar que o form pdv nao encontra-se no projeto Principal
SAMUKA 07/07/2022 10:24:24
#500179
Citação:

o problema está na hora de criar o executável.... ele verificar que o form pdv nao encontra-se no projeto Principal



Mas é preciso incluir o arquivo dentro do projeto, mesmo que ele não esteja na mesma pasta, voce pode incluir um mesmo arquivo dentro de dois projetos.
AMELINHACODE 07/07/2022 12:12:05
#500180
Citação:

:
o problema está na hora de criar o executável.... ele verificar que o form pdv nao encontra-se no projeto Principal


Mas é preciso incluir o arquivo dentro do projeto, mesmo que ele não esteja na mesma pasta, voce pode incluir um mesmo arquivo dentro de dois projetos.



Sim, eu sei e foi feito isso com form parcelas
Porem se eu add o form pdv no projeto principal vai apresentar outros erros por falta de forms que são exclusivo para o projeto pdv
O projeto PDV possui varios forms referenciados nele... entao cada um vai pedir quando for criar o exe
SAMUKA 07/07/2022 18:03:24
#500181
Até onde eu conheço, a única forma de voce carregar um form específico (que não seja o padrão) de um outro executável, é na hora da inicialização. Voce faz isso através do envio de parâmetros na chamada do executável. E esse executável tem que ler o parâmetro e abrir o form específico.

Mas se o executável já estiver rodando, creio que não é possível enviar um comando para abrir um form diferente daquele que já está aberto no momento.

Essas funções que voce mencionou, HIDE e SHOW, só servem pra forms dentro do próprio projeto.
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas