PASSAR VALORES ENTRE FORMULÁRIOS VB6

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

PASSAR VALORES ENTRE FORMULÁRIOS VB6

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#479216 - 20/01/2018 18:51:51

MARCOSPINHEIRO
PINDA
Cadast. em:Agosto/2015


Última edição em 20/01/2018 19:31:13 por MARCOSPINHEIRO

Boa noite nobre colegas!
Faço um curso de técnico em informática e lá, uma das linguagens
ensinadas é o velho VB6 (VBZÃO, para os íntimos, rs). Pois bem...
Tenho o form1 com um textbox txtCidade e o form2 com um msflexgrid que carrega uma lista cidades.

O pretendido é que ao clicar em um botão no form1, seja aberto o form2. Que por sua vez, ao clicar
em uma das linhas do grid, o texto da coluna 1 seja enviada para o textbox do form1.

Problema:

Ao tentar usar o código abaixo (desculpem, mas foi até onde cheguei sozinho ), ao invés do texto ir para form1 já aberto
ele duplica form1 (cria uma instancia?!) e lá o dado aparece corretamente... Mas preciso que seja enviado para o textbox do form1 já aberto.

Obs: Para abrir o form1 inicialmente, eu uso simplesmente. form1.show.

O código que duplica o formulário:

form1.txtCidade.Text = flexgrid.TextMatrix(linha, 1)

Não sei se procurei direito, mas só vi como fazer isso
para c#, vb.net e nada para vb6...

Alguém poderia me ajudar nisso?

Grato!


Marcos Pinheiro

#479221 - 20/01/2018 20:18:37

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Da uma olhada no evento Active do form1, se lá não tem o comando para abrir ele
Form1.show

Porque na teoria o seu código esta correto

Más em algum lugar ele esta abrindo novamente o form1
Se o comando form1.show estiver no Active do Form explica o pq da segunda instância aberta
Isso acontece pq quando abriu o form2 em cima do form1, ele desativou o form1
Quando vc passa o código para o texto do form1, automaticamente ele ativa o form1, dai o evento active que esta no form entra em ação e BUUUUUUUUM, abre a segunda instância do form1 com o dado no text

Da uma olhada e qqer coisa retorna

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#479223 - 20/01/2018 21:40:39

MARCOSPINHEIRO
PINDA
Cadast. em:Agosto/2015


ALVAROVB2009, grato pelas dicas,
mas verifiquei tudo quanto é evento
e nada.

Pus uns break-points e vi que a nova
instancia está endo criada assim que faço
referência a textbox do form1.

Muito estranho isso...


Marcos Pinheiro

#479224 - 20/01/2018 22:14:24

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


 Anexos estao visíveis somente para usuários registrados

Realmente é estranho, pois montei um exemplo aqui com 3 forms

Form3 iniciando maximizado, contendo um botão que chama o form1
form1.show

Dentro desse form1 tem um botão que chama o form2
Form2.show

E nesse form2 coloquei um text que no evento keyascii coloquei o código
if keyascii=13 then 'enter
    form1.text1.text = text1.text
end if

E funcionou perfeitamente, quando digito alguma coisa no texto e dou um enter, ele joga para o text do form1 sem abrir uma nova instância

Coloquei esse teste que eu fiz para vc ver e testar, assim pode ter noção do que talvez possa estar acontecendo
Realmente acho que em algum momento, o form1 esta sendo chamado novamente
Quando vc clica no flexgrid, tem o comando para abrir o form1 ??
Caso tenha o problema é esse, senão tem que dar mais uma olhada

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#479225 - 20/01/2018 23:17:35

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Vai ter que fazer mais ou menos assim!
Private Sub MSHFlexGrid1_Click()
Dim X As Integer
         With Me
             X = .MSHFlexGrid1.RowSel 'pega a linha do grid clikada
                 Form1.Text1 = .MSHFlexGrid1.TextMatrix(X, 1) 'mostra o conteudo da linha clicada e da coluna 1
                 Form1.Show
           End With
End Sub



#479231 - 22/01/2018 01:19:16

MARCOSPINHEIRO
PINDA
Cadast. em:Agosto/2015


Rapaz, a coisa está feia... O exemplo funciona certinho, mas no meu
projeto não...

Vou tentar mandar aqui para melhor análise...

Marcos Pinheiro

#479233 - 22/01/2018 09:11:28

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Isso manda ai que a gente da uma olhada no que pode estar de errado

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#479473 - 06/02/2018 13:21:51

MARCOSPINHEIRO
PINDA
Cadast. em:Agosto/2015


 Anexos estao visíveis somente para usuários registrados

Desculpem a demora. Anexei o sistema aqui.
Para reproduzir o erro, no menu > Cadastros >Geográficos > Bairros Adicionar.

Notem que em frente a textbox Cidade/UF (txtCidade do form frmBairros) há um botão (btnCidades), ao clicar nele, será aberto o
formulário frmListaCidades, que ao clicar duas vezes em alguma cidade (no flexgrid após realizar o filtro),
a cidade clicada deverá ir para a textbox Cidade/UF do form frmCadbairros, que está aberto.

Notem que será aberto um novo formulário frmBairros...





Marcos Pinheiro

#479474 - 06/02/2018 14:09:21

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Vou dar uma olhada no seu projeto, estou no serviço agora, más vejo no que posso ajudar mais tarde

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#479479 - 06/02/2018 19:49:32

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Marcos pelo que eu vi, no momento que vc esta levando a informação para o formbairros, no LOAD dele, vc esta criando o formulário novamente, deve ser por isso que esta abrindo 2x
Não consegui rodar direito o seu sistema, porque estava dando uns erros de configuração, más olhei os seus códigos e vi essa criação do formulário dele

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#479481 - 06/02/2018 20:40:31

MARCOSPINHEIRO
PINDA
Cadast. em:Agosto/2015


Última edição em 06/02/2018 20:41:57 por MARCOSPINHEIRO

Esse é do frmListaCidades

Private Sub Form_Load()
   CentralizaForm Me 'Função para centralizar o form no MDIform
    subCrgCbx 'carrega as cbox
    AplicaBorda Me, RGB(168, 168, 168) 'Muda cor das bordas dos controles
    subEstadoForm Me 'Define se o form pode alterar, adicionar ou é apenas visualização
    subHDB Me 'Habilita/desabilita os botões
End Sub  


E esse é o duplo clique do grid do frmListaCidades



Private Sub fgv_DblClick()
    Dim iL As Integer
    Dim iC As Integer

    iL = Me.fgv.RowSel

    If iL < 2 Then Exit Sub

    iC = fgv.TextMatrix(iL, 0)


    If Selecionar = True Then
        Select Case FormularioReceber
        Case "frmBairros" 'Aqui deve passar os valores para o form frmBairros, só que abre uma outra instancia dele...
            frmBairros.txtCidade.Tag = iC
            frmBairros.txtCidade.Text = fgv.TextMatrix(iL, 1) & " - " & fgv.TextMatrix(iL, 2)
        End Select
    Else
        frmCidade.Show
        frmCidade.subCrgForm iC
    End If

    Selecionar = Empty
    FormularioReceber = Empty

  '  Unload Me
End Sub  


Esse é do load do form frmListaCidades

Private Sub Form_Load()
    CentralizaForm Me
    subCongGrid
    subCrgCbx
End Sub'carrega a cbo


Não consigo ver onde ele está abrindo novamente o form...


Marcos Pinheiro

 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