USAR FORM COMPARTILHADO ENTRE 2 PROJETOS

 Tópico anterior Próximo tópico Novo tópico

USAR FORM COMPARTILHADO ENTRE 2 PROJETOS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#500166 - 05/07/2022 21:08:22

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Última edição em 05/07/2022 21:09:22 por AMELINHACODE

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
    PDV.Show 1  'erro acontece aqui pq o PDV.frm não faz parte do projeto Principal.vbp... então não tem como citar ele aqui
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





#500167 - 06/07/2022 00:11:05

JABA
CABO FRIO
Cadast. em:Agosto/2005


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.

_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#500169 - 06/07/2022 07:35:20

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


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)



#500170 - 06/07/2022 07:55:50

SAMUKA
PEDREIRA - SP
Cadast. em:Janeiro/2010


Existe uma outra forma, que é colocar esse form que você 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.

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




#500171 - 06/07/2022 08:00:01

ALTAFIN
LONDRINA
Cadast. em:Janeiro/2004


Última edição em 06/07/2022 08:04:38 por ALTAFIN

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 você pode baixar para estudar e verificar se ajuda você. 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.



#500172 - 06/07/2022 18:35:46

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Você pode simplesmente referenciar o form em dois(ou mais) projetos e verificar se o form que você quer esconder está carregado. Algo tipo:

If PDV Not Is Nothing Then
   PDV.hide
end if


_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#500177 - 07/07/2022 09:10:58

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Citação:
:
Existe uma outra forma, que é colocar esse form que você 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.

Você 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



#500178 - 07/07/2022 09:15:12

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


Citação:
:
Você pode simplesmente referenciar o form em dois(ou mais) projetos e verificar se o form que você 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




#500179 - 07/07/2022 10:24:24

SAMUKA
PEDREIRA - SP
Cadast. em:Janeiro/2010


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, você pode incluir um mesmo arquivo dentro de dois projetos.




#500180 - 07/07/2022 12:12:05

AMELINHACODE
SAO PAULO
Cadast. em:Junho/2019


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, você 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




#500181 - 07/07/2022 18:03:24

SAMUKA
PEDREIRA - SP
Cadast. em:Janeiro/2010


Até onde eu conheço, a única forma de você carregar um form específico (que não seja o padrão) de um outro executável, é na hora da inicialização. Você 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 você mencionou, HIDE e SHOW, só servem pra forms dentro do próprio projeto.




 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário