DADOS DO DATAGRIDVIEW PARA VARIOS FORMS

BORTHOLETTO 25/10/2011 10:35:49
#387676
bom dia pessoal,

Estou com uma duvida sobre os dados contido no datagrid se posso pegar para varios forms, por exemplo:

Eu tenho um form_Consulta_Perfil com o datagrid, no evento doubleclick do datagrid ele chama o formCadastro_Perfil e mostra os dados do datagrid nos textboxs, até aqui ta tudo certo.

mas quando vou cadastrar um usuário tenho que chamar um perfil, com um botão pesquisar eu chamo o form_Consulta_Perfil, como eu trago só o nome e codigo do perfil através de 2 cliques para o o form_Usuario se eu ja tenho um evento doubleClique citado acima?


Muito obrigado
PROFESSOR 25/10/2011 12:37:12
#387703
A primeira resposta seria usando OOP, onde você cria a entidade com base nos dados e envia ao formulário. Entity é a OOP sem esforço da Microsoft.

Mas ao que parece, você não deva estar usando esse modelo.

Num módulo adicionado ao projeto, você cria uma função pública, que receba como parâmetro o Código do perfil, que pode ser zero, se for um registro novo, e retorne se houve alguma mudança (boolean).
Essa função, ao receber um código diferente de zero, carrega os dados do perfil desde o banco.
Com esses dados carregados, ela chama o Form 2, para edição do registro, preenche todos os [Ô]campos[Ô] e o mostra como Dialogo (ShowDialog).
Esse formulário procede á edição, retornando sempre um Ok quando o registro tiver sofrido alteração / exclusão / inclusão, ou um Cancel, se nada ocorreu, ou algum erro ocorreu na edição.
A função, agora, examina o retorno do form (.ShowDialog) e retorna o booleano baseado em se é Ok ou não.

A [Ô]carcaça[Ô] da função, basicamente é como abaixo:

Public Function EditarPerfil(Optional ByVal parID As Integer = 0) As Boolean
Dim ret As Boolean = False
...carrega os dados...
Dim f As New form2
[ô] Prepara o form
[ô]f.txtNome = ...
If f.ShowDialog = Ok
ret = True
Else
ret = False
End If
f.close
f.Dispose
Return ret
End Function


Por meio dessa função, então, de quaisquer pontos do aplicativo, você pode chamar a edição do perfil.
...
If EditarPerfil(0) Then[ô] - Edita um perfil novo.
...
If EditarPerfil(15) Then [ô] - Edita o perfil 15
...
BORTHOLETTO 25/10/2011 12:53:07
#387709
Professor, valeu pela ajuda ae, mas não entendi direito,

Com essa função eu consigo fazer o que eu citei:?vo tentar explicar mais detalhado.... eu tenho um form_Perfil,que tem um tabcontro com 2 tabpages, uma tab é consulta onde consta o datagrid que aparace os dados cadastrados da tabela perfil, certo? a outra tab é para cadastrar o perfi.


Quando eu clico 2 vezes em um registro do datagrid na tabConsulta ele envia os dados para os textbox da tabCadastro, até aqui ok?

Agora eu tenho um form para cadastrar usuários (form_usuarios), através dos campos, login, senha, e Perfil que tem um botão do lado para selecionar um perfil cadastro.

Esse botão para pesquisar o perfil abre o mesmo Form (Form_Perfil), mas se eu clicar 2 vezes para trazer o nome do perfil no campo perfil do form_usuarios NÃO VAI DAR CERTO PQ JA TEM DEFINIDO UM DOUBLECLICK COMO CITADO ACIMA....ESSE DOUBLE CLICK VAI PARA A TABCADASTRO ??

Deu pra entender..hehe


Valeu
Aguardo a resposta












Citação:

:
A primeira resposta seria usando OOP, onde você cria a entidade com base nos dados e envia ao formulário. Entity é a OOP sem esforço da Microsoft.

Mas ao que parece, você não deva estar usando esse modelo.

Num módulo adicionado ao projeto, você cria uma função pública, que receba como parâmetro o Código do perfil, que pode ser zero, se for um registro novo, e retorne se houve alguma mudança (boolean).
Essa função, ao receber um código diferente de zero, carrega os dados do perfil desde o banco.
Com esses dados carregados, ela chama o Form 2, para edição do registro, preenche todos os [Ô]campos[Ô] e o mostra como Dialogo (ShowDialog).
Esse formulário procede á edição, retornando sempre um Ok quando o registro tiver sofrido alteração / exclusão / inclusão, ou um Cancel, se nada ocorreu, ou algum erro ocorreu na edição.
A função, agora, examina o retorno do form (.ShowDialog) e retorna o booleano baseado em se é Ok ou não.

A [Ô]carcaça[Ô] da função, basicamente é como abaixo:

Public Function EditarPerfil(Optional ByVal parID As Integer = 0) As Boolean
Dim ret As Boolean = False
...carrega os dados...
Dim f As New form2
[ô] Prepara o form
[ô]f.txtNome = ...
If f.ShowDialog = Ok
ret = True
Else
ret = False
End If
f.close
f.Dispose
Return ret
End Function


Por meio dessa função, então, de quaisquer pontos do aplicativo, você pode chamar a edição do perfil.
...
If EditarPerfil(0) Then[ô] - Edita um perfil novo.
...
If EditarPerfil(15) Then [ô] - Edita o perfil 15
...

PHOENIX209E 25/10/2011 15:36:26
#387733
Resposta escolhida
Voce Lobisbruno???!?!?! AUSHuAHSU!...

Cara é do seu tcc neh?!?!?

Meu,pelo que eu entendi voce quer carregar informaçoes de [ô]tabelas[ô] diferentes em apenas um form? Isso??

Por exemplo..Quero alterar clientes clicko duas vezes emc ima do nome dele entao um form carrega as informaçoes,agora,eu quero alterar um fornecedor [Ô]por exemplo[ô] eu uso o mesmo form..

Isso?!
MITSUEDA 25/10/2011 17:03:18
#387738
Crie um exeplo simples e poste fica mais facil pra explicar.
BORTHOLETTO 25/10/2011 18:12:33
#387746
e doidão o q ta xeretendo aqui...hehe....é isso mesmo...e ai vai me ajudar??????




Citação:

:
Voce Lobisbruno???!?!?! AUSHuAHSU!...

Cara é do seu tcc neh?!?!?

Meu,pelo que eu entendi voce quer carregar informaçoes de [ô]tabelas[ô] diferentes em apenas um form? Isso??

Por exemplo..Quero alterar clientes clicko duas vezes emc ima do nome dele entao um form carrega as informaçoes,agora,eu quero alterar um fornecedor [Ô]por exemplo[ô] eu uso o mesmo form..

Isso?!

PHOENIX209E 25/10/2011 20:32:00
#387749
pega pelo id do form...
cria uma variavel no form que vai receber as informaçoes,e identifica..
se for isso então faça isso,se for aquilo então faça aquilo..
.
bom faria desta maneira;

cria uma variavel no form ke recebera:

dim vIdform as String

 Dim vIdform As String

Public WriteOnly Property prIDform() As String
Set(ByVal value As String)
vIdform = value
If (vIdform = [Ô]FRM_CLIENTES[Ô]) Then
[ô]FAÇA ISSO...
Else
[ô]FAÇA AQUILO...
End If
End Set
End Property


agora no form que for chamar,voce passa a ID..ou seja,

Dim FRM as New FRM_TAL
FRM.prIDform = Me.Name
FRM.Show()


Neste codigo ele vai se identificar pro form que vai carregar as informaçoes
se for 1 faça alguma coisa..
se for outro faça outra coisa..

entende?
entao tenta implementa esse codigo ai no seu programa...
klker coisa agente se fala na sala,alias tava mó chuva hj nao deu pra ir..

falowwww
PROFESSOR 25/10/2011 21:07:17
#387750
Ah, agora ficou mais fácil de entender. Você quer saber como carregar o mesmo form, mas com dados de várias origens.

Ainda é basicamente a mesma resposta, ou seja, via OOP, você simplesmente passaria uma instância do objeto á uma nova instância do formulário. E usando o VS, ainda poderia editar o registro, fosse qual fosse o tipo de objeto, usando um PropertyGrid, com umas poucas linhas de código.

E na programação procedural, também a resposta é similar á anterior. Você ainda vai criar uma Function, só que neste caso, essa função irá receber mais parâmetros. No mínomo, além do código identificador do registro, também o nome da entidade (tabela).

Tenha em mente o seguinte: Quando você está [Ô]desenhando[Ô] um aplicativo, aquele componente Form que adiciona ao projeto não é [Ô]UM FORM DO APLICATIVO[Ô], no sentido de ser aquela janela física que abre no Windows. Esse Form adicionado em tempo de projeto é na verdade um modelo para formulários, um padrão de formulário. E sendo um modelo, sua aplicação pode gerar várias instâncias distintas do mesmo Form (ou antes, do mesmo modelo), e cada uma dessas instâncias pode lidar com coisas distintas.
Na prática você vê isso sempre que usa o Office, ou seja, é o que acontece quando você abre vários documentos, no Word, ao mesmo tempo.

E para verificar isso, se você criar um novo projeto no VS, adicionar um MDI e iniciar á partir dele, procure a opção de abrir uma nova janela. Lá, você verá na prática como um único Form em tempo de desenho se torna vários forms em tempo de execução.
Tópico encerrado , respostas não são mais permitidas