Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

johnhey

Form Pai

Recommended Posts

Olá pessoal tenho um projecto que estou tendo um pouco de dificuldade, a principio sempre pedi ajuda em outro site sobre vb, pois não conhecia o imasters.

Para não ter que colocar tudo novamente a minha dúvida vou postar o link do outro site de dúvidas peço desculpa por isso.

Mas por favor vejam se conseguem ajudar-me.

 

http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=401430&varPagina=1#bottom

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um projecto em vs 2010 nelo possuo:

 

mdiprincipal

formregisto(Filho)

formpesquisa(filho)

no form pesquisa clico em um valor que esta em um datagrid e esse mesmo valor deveria retornar ao formregisto só que não devolve.

quando uso form pai e filho não funciona e quando não utilizo funciona.

Sei que estou a pedir muito mas nesse link tem tudo explicado e até imagens.

 

http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=401430&varWorld=

 

se puder envie seu email que lhe envio o projecto

 

ou se tiver msn ou telefone eu retorno, é que já estou desesperado, pois a mais de dois meses que estou nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

variáveis globais sim, com classes e módulos não, e se quer que lhe diga não sei se sei.

 

tentei fazer com um módulo não deu certo, tentei com uma classe e também nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta bom, vamos melhorar a situação, o seu problema é o seguinte?

 

Você quer que quando você clique em algo do DB ou do datagrid, ou seja, execute uma determinada ação, esses dados são puxados para outro formulário? Por exemplo, eu coloco meu nome no campo nome e no outro formulário meu nome aparece no mesmo campo nome?

 

É esta sua duvida? Me explique detalhe por detalhe cara por que eu não estou conseguindo entender o seu problema, entendi o defeito mais estou incerto de que este seja o que eu estou pensando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok vou tentar explicar.

 

Tenho dois forms:

O primeiro é um formulário onde tenho os campos: Registo, Nome, Endereço, etc...

Neste mesmo form tem um botão de pesquisa que abre outro form.

O segundo form tem um datagrid que visualiza os dados do meu BD em sql, gostaria que: ao dar dois cliques sobre qualquer registo no datagrid o valor selecionado fosse apresentado no primeiro form, cada um em seu respectivo campo.

Os dois form são formschildren.

 

No formulário de pesquisa coloquei o seguinte:

Private Sub DGPesquisa_DoubleClick(sender As Object, e As System.EventArgs) Handles DGPesquisa.DoubleClick

'Seleciona dados no datagrid com um duplo click

Registos.txtregisto.Text = DGPesquisa.CurrentRow.Cells(0).Value

Registos.txtnome.Text = DGPesquisa.CurrentRow.Cells(1).Value

Me.Hide()

End Sub

 

Já coloquei os breakpoint e realmente passa por tudo, só que no form não me aparece nada.

 

Também já tentei criar uma variável, classe e modulo e continua na mesma.

 

Fiz através de uma msgbox para ver se devolvia algum valor e esta correcto, o problema é que no primeiro form não me aparece nada, já nem sei o que fazer.

 

A única forma que dá certo é quando não utilizo como forms filhos.

 

Espero ter sido claro.

 

Se precisar de maiores informações e não se importar, pode me adicionar no msn, johnhey_sp@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, cara tem um jeito mais manual para fazer isso mas creio que seja um pouco mais complicado, bom ai vai:

 

você precisará de uma classe vazia chamada "Global" e nela declare:

 

Static nome as string
Static registro as String
Static <nomedocampo> as String
Static timer as Integer

 

 

Crie um timer (chamarei de timer1) no seu formulário principal e adicione um tick de 100 e deixe o enabled como True, escreva o seguinte no evento Tick:

 

if Global.timer = 1 Then

txtregisto.Text = Global.nome
txtnome.Text = Global.registro
Global.timer = 0

Else

Exit Sub

End if

 

 

Agora no CellDoubleClick do seu formulário de pesquisa você faz assim:

 

 

if Global.timer = 1 Then
Global.registro = DGPesquisa.CurrentRow.Cells(0).Value
Global.nome = DGPesquisa.CurrentRow.Cells(1).Value


Else

Global.registro = DGPesquisa.CurrentRow.Cells(0).Value
Global.nome = DGPesquisa.CurrentRow.Cells(1).Value
Global.timer = 1

End If

 

 

Você pode até diminuir o tempo do tick do timer, porem acredito que isso acuparia um pouco mais de memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu os seguintes erro:

 

Error 1 Keyword is not valid as an identifier. H:\SIAF\SIAF\SIAF\Global.vb 1 14 SIAF

Error 2 'timer' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 53 12 SIAF

Error 3 'registro' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 54 13 SIAF

Error 4 'nome' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 55 13 SIAF

Error 5 'registro' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 60 13 SIAF

Error 6 'nome' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 61 13 SIAF

Error 7 'timer' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Pesquisa.vb 62 13 SIAF

Error 8 'timer' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Principal.vb 361 11 SIAF

Error 9 'txtregisto' is not declared. It may be inaccessible due to its protection level. H:\SIAF\SIAF\SIAF\Principal.vb 363 13 SIAF

Error 10 'nome' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Principal.vb 363 31 SIAF

Error 11 'txtnome' is not declared. It may be inaccessible due to its protection level. H:\SIAF\SIAF\SIAF\Principal.vb 364 13 SIAF

Error 12 'registro' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Principal.vb 364 28 SIAF

Error 13 'timer' is not a member of '<Default>'. H:\SIAF\SIAF\SIAF\Principal.vb 365 13 SIAF

Compartilhar este post


Link para o post
Compartilhar em outros sites

CLASSE

 

Public Class Global

Static nome As String

Static registro As String

Static timer As Integer

End Class

 

 

FORMULÁRIO PRINCIPAL

 

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick

If Global.timer = 1 Then

 

txtregisto.Text = Global.nome

txtnome.Text = Global.registro

Global.timer = 0

 

Else

 

Exit Sub

 

End If

End Sub

 

FORMULÁRIO DE PESQUISA

 

'Seleciona dados no datagrid com um duplo click

If Global.timer = 1 Then

Global.registro = DGPesquisa.CurrentRow.Cells(0).Value

Global.nome = DGPesquisa.CurrentRow.Cells(1).Value

 

 

Else

 

Global.registro = DGPesquisa.CurrentRow.Cells(0).Value

Global.nome = DGPesquisa.CurrentRow.Cells(1).Value

Global.timer = 1

 

End If

Me.Hide()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja mudei para "Procurar", "Pesquisar", "teste" e não deu certo.

 

na classe dá os seguintes erros:

 

 

Error 13 'Static' is not valid on a member variable declaration. G:\SIAF\SIAF\SIAF\procurar.vb 2 5 SIAF

Error 14 'Static' is not valid on a member variable declaration. G:\SIAF\SIAF\SIAF\procurar.vb 3 5 SIAF

Error 15 'Static' is not valid on a member variable declaration. G:\SIAF\SIAF\SIAF\procurar.vb 4 5 SIAF

 

no MDIPrincipal:

 

 

Error 7 'SIAF.procurar.timer' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Principal.vb 361 12 SIAF

Error 8 'txtregisto' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 363 13 SIAF

Error 9 'SIAF.procurar.nome' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Principal.vb 363 31 SIAF

Error 10 'txtnome' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 364 13 SIAF

Error 11 'SIAF.procurar.registro' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Principal.vb 364 28 SIAF

Error 12 'SIAF.procurar.timer' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Principal.vb 365 13 SIAF

 

 

no form de pesquisar:

 

Error 1 'SIAF.procurar.timer' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 53 12 SIAF

Error 2 'SIAF.procurar.registro' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 54 13 SIAF

Error 3 'SIAF.procurar.nome' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 55 13 SIAF

Error 4 'SIAF.procurar.registro' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 60 13 SIAF

Error 5 'SIAF.procurar.nome' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 61 13 SIAF

Error 6 'SIAF.procurar.timer' is not accessible in this context because it is 'Private'. G:\SIAF\SIAF\SIAF\Pesquisa.vb 62 13 SIAF

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Erro está ligado na declaração de variáveis da classe então faça assim:

 

Na declaração das variaveis da classe substitua a palavra Static por Public:

 

 

Public nome as string
Public registro as String
Public <nomedocampo> as String
Public timer as Integer

 

 

Acesse da mesma maneira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda da erros:

 

Error 1 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 53 12 SIAF

Error 2 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 54 13 SIAF

Error 3 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 55 13 SIAF

Error 4 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 60 13 SIAF

Error 5 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 61 13 SIAF

Error 6 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 62 13 SIAF

Error 7 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 361 12 SIAF

Error 8 'txtregisto' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 363 13 SIAF

Error 9 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 363 31 SIAF

Error 10 'txtnome' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 364 13 SIAF

Error 11 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 364 28 SIAF

Error 12 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 365 13 SIAF

 

Eu nao deveria colocar o nome do form antes dos campos?

 

Como você colocou:

If procurar.timer = 1 Then

 

txtregisto.Text = procurar.nome

txtnome.Text = procurar.registro

procurar.timer = 0

 

Else

 

Exit Sub

 

End If

 

Não deveria ser assim?

If procurar.timer = 1 Then

 

Formregisto.txtregisto.Text = procurar.nome

Formregisto.txtnome.Text = procurar.registro

procurar.timer = 0

 

Else

 

Exit Sub

 

End If

 

Você também colocou a classe assim:

Public nome as string

Public registro as String

Public <nomedocampo> as String Esse item só coloco se tiver mais campos? ou devo colocar como esta?

Public timer as Integer

Compartilhar este post


Link para o post
Compartilhar em outros sites
Você também colocou a classe assim:

Public nome as string

 

Public registro as String

Public <nomedocampo> as String Esse item só coloco se tiver mais campos? ou devo colocar como esta?

Public timer as Integer

 

Só se tiver mais campos.

 

Não deveria ser assim?

If procurar.timer = 1 Then

 

Formregisto.txtregisto.Text = procurar.nome

Formregisto.txtnome.Text = procurar.registro

procurar.timer = 0

 

Else

 

 

Se você estiver trabalhando fora do formulário sim, se estiver trabalhando dentro pode-se colocar Me.<variável> mas é desnecessário.

 

13 SIAF

Error 5 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 61 13 SIAF

Error 6 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Pesquisa.vb 62 13 SIAF

Error 7 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 361 12 SIAF

Error 8 'txtregisto' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 363 13 SIAF

Error 9 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 363 31 SIAF

Error 10 'txtnome' is not declared. It may be inaccessible due to its protection level. G:\SIAF\SIAF\SIAF\Principal.vb 364 13 SIAF

Error 11 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 364 28 SIAF

Error 12 Reference to a non-shared member requires an object reference. G:\SIAF\SIAF\SIAF\Principal.vb 365 13 SIAF

 

No topo da classe, onde está "Public Class" tente por "Public Shared Class"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.