ALTERAR APENAS A LINHA ALTERADA.
                    minha dúvida é até a que perguntei em outro tópico mais eu esqueci de aproveitar aquele e fechei.
mais é o seguinte. eu trago numa flexgrid uma porrada de registro. e quando eu der um duplo clica em uma liha da grid irá abrir um form com os dados para eu poder alterar. então eu queria saber o seguinte: quando eu alterar alguma informação no form e e clicar em gravar meu form vai fechar... queria saber como eu faço para atualizar apenas a linha do grid do registro q eu alterei? fiz q tem lá o refresh mais naum adiantou.
                
            mais é o seguinte. eu trago numa flexgrid uma porrada de registro. e quando eu der um duplo clica em uma liha da grid irá abrir um form com os dados para eu poder alterar. então eu queria saber o seguinte: quando eu alterar alguma informação no form e e clicar em gravar meu form vai fechar... queria saber como eu faço para atualizar apenas a linha do grid do registro q eu alterei? fiz q tem lá o refresh mais naum adiantou.
                    é simples...no seu form (onde altera os dados) quando clicar em gravar e antes de fechá-lo, vc faz o seguinte:
NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text ' O txtDado.text é do form que vc abre para alterar o dado.
Detalhe: No msFlexGrid no evento (click ou double click) vc deve armazenar a linha e coluna atual do grid em duas variaveis (global ou publica do form), pois vc irá usar conforme exemplo acima:
NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text
                
            NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text ' O txtDado.text é do form que vc abre para alterar o dado.
Detalhe: No msFlexGrid no evento (click ou double click) vc deve armazenar a linha e coluna atual do grid em duas variaveis (global ou publica do form), pois vc irá usar conforme exemplo acima:
NomeFormOndeEsta_o_Grid.msflexgrid.text.TextMatriz(lLinha,lCol) = txtDado.text
                    voce pode colocar assim:
'Quando Abrir o Formulario e o cara alterou os dados e clicou no botao alterar ai você faz assim:
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,1)=text2.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,2)=text3.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,3)= text4.text
Ve se funciona...
                
            'Quando Abrir o Formulario e o cara alterou os dados e clicou no botao alterar ai você faz assim:
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,1)=text2.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,2)=text3.text
Formulario_que_fez_chamada.Seu_flexgrid.TextMatrix(Grid.Row,3)= text4.text
Ve se funciona...
                    só q eu tenho q alterar de um jeito sem precisar passar os campos textos.
tipo pra remover uma linha do grid depois q clica em excluir fiz isso: If m_Acao = AC_EXCLUSAO And m_Gravou Then
If m_GridForm.Rows = 2 Then
m_GridForm.Rows = 1
Else
m_GridForm.RemoveItem m_iIndex
End If
End If
teria q ser mais ou menos assim. o problema é q naum tem um metodo para alterar. tentei o refresh mais naum adianta.
                
            tipo pra remover uma linha do grid depois q clica em excluir fiz isso: If m_Acao = AC_EXCLUSAO And m_Gravou Then
If m_GridForm.Rows = 2 Then
m_GridForm.Rows = 1
Else
m_GridForm.RemoveItem m_iIndex
End If
End If
teria q ser mais ou menos assim. o problema é q naum tem um metodo para alterar. tentei o refresh mais naum adianta.
                    Amigo você que alterar o que?
                
            
                    O flexgrid não é vinculado, entao nao tem como refresh atualizar OS DADOS a partir de um banco de dados. O refresh está atualizando a exibição do grid. Se vc nao fizer o que o FRAU ou VBAPRENDE disseram, nunca vai atualizar o grid. Se quiser um grid vinculado, utilize o DataGrid:
Abra um recordset (e deixe aberto) e mande este comando
set datagrid.datasource = rs
Pronto, seu grid é vinculado, assim refresh funciona, mas mesmo assim tem que reabrir o rs, para pegar os dados atuais da tabela.
                
            Abra um recordset (e deixe aberto) e mande este comando
set datagrid.datasource = rs
Pronto, seu grid é vinculado, assim refresh funciona, mas mesmo assim tem que reabrir o rs, para pegar os dados atuais da tabela.
                    então eu coloquei assim:
frmSharedListaCadastro.grdLista.TextMatrix(frmSharedListaCadastro.grdLista.Row, 1) = txtDescricao.Text
só q está me dando erro de subscript out range.
esse form frmSharedListaCadastro.grdLista é q o tem a grid com os dados.
o campo txtDescricao.Text é o campo q eu alterei. depois q eu cliquei m gravar deu esse erro acima, pq?
                
            frmSharedListaCadastro.grdLista.TextMatrix(frmSharedListaCadastro.grdLista.Row, 1) = txtDescricao.Text
só q está me dando erro de subscript out range.
esse form frmSharedListaCadastro.grdLista é q o tem a grid com os dados.
o campo txtDescricao.Text é o campo q eu alterei. depois q eu cliquei m gravar deu esse erro acima, pq?
                    Isso acontece porque a linha que você ta mandando imprimir frmSharedListaCadastro.grdLista.Row ela não existe ou é a primeira linha aonde fica o cabeçalho.
                
            
                    só q a linha q estou clicando existe sim.
tanto q quando aparece o form os campos vem preenchidos.
                
            tanto q quando aparece o form os campos vem preenchidos.
                    tem um outro problema. essa minha tela q tem a grid serve para todos os cadastros q tem no sistema. as vezes muitos dos campos de um form naum vão corresponder nessa coluna do grid.
                
            
                    RAFA.CRM eu o VBAPRENDE e o FGSANTOS já postamos a solução com MSFLEXGRID...se vc quer de outro jeito use o DATAGRID (Conforme exemplo do FGSANTOS)...
                
            
                        Tópico encerrado , respostas não são mais permitidas