Problema ao selecionar linha do DBgrid, alguem se habilita?
Ae pessoal
essa eh questão de vestibular hehe
faço alterações em uma tabela pegando o registro que está selecionado num DB grid através do
pois bem, entaum atualizo a tabela com query, nada nesse sistema usa componente table, entaum vo explicar o procedimento que faço...
seleciono uma linha no DBgrid, vou la no botão clico que ele pega o registro, faz um SQL la com o query e altera ele para um valor qualquer, entaum depois disso tenho que atualizar o Dbgrid, entaum vou no componente TQuery que alimenta o Dbgrid e dou um Close e Open e ele atualiza
só que quando faço isso, se por exemplo a linha 10 está selecionada, após atualizar ele vai para a linha 1, entaum qq atualização q eu faço a selecção volta para a linha 1, oque eu quero é selecionar novamente a linha 10 por exemplo se for o caso.
eu tentei uma seguinte explicação de um usuário do forum q achei pesquisando aki...
isso seleciona a linha sim, mas não realmente, se alguem quiser testar isso, quando ele seleciona, o marcador do DBGRID(akela setinha que fica na esquerda) continua no mesmo lugar, entaum quando eu uso um comando do tipo
ele vai estar se referenciando a 1ª linha novamente e não a 10ª
alguem sabe oque fazer nesse caso???
essa eh questão de vestibular hehe
faço alterações em uma tabela pegando o registro que está selecionado num DB grid através do
if Grid_Periodo.Columns[2].Field.Text = ´A´ then
pois bem, entaum atualizo a tabela com query, nada nesse sistema usa componente table, entaum vo explicar o procedimento que faço...
seleciono uma linha no DBgrid, vou la no botão clico que ele pega o registro, faz um SQL la com o query e altera ele para um valor qualquer, entaum depois disso tenho que atualizar o Dbgrid, entaum vou no componente TQuery que alimenta o Dbgrid e dou um Close e Open e ele atualiza
só que quando faço isso, se por exemplo a linha 10 está selecionada, após atualizar ele vai para a linha 1, entaum qq atualização q eu faço a selecção volta para a linha 1, oque eu quero é selecionar novamente a linha 10 por exemplo se for o caso.
eu tentei uma seguinte explicação de um usuário do forum q achei pesquisando aki...
Declare uma nova classe na cláusula Type: type TMostraProp = class (TDBGrid); Em seguida, no evento OnClick de um botão (por exemplo), utilize as propriedades "Col" e "Row" da nova classe para posicionar o cursor do mouse onde desejar. Aliás, o cursor não será posicionado em lugar nenhum, mas sim, será ativada a célula desejada no DBGrid. Exemplo: procedure TfrmFiltros.Button1Click(Sender: TObject); begin TMostraProp(DbGrid1).Col := 2; TMostraProp(DbGrid1).Row := 3; end;
isso seleciona a linha sim, mas não realmente, se alguem quiser testar isso, quando ele seleciona, o marcador do DBGRID(akela setinha que fica na esquerda) continua no mesmo lugar, entaum quando eu uso um comando do tipo
if Grid_Periodo.Columns[2].Field.Text = ´A´ then
ele vai estar se referenciando a 1ª linha novamente e não a 10ª
alguem sabe oque fazer nesse caso???
Kyonak
Curtidas 0
Respostas
Rômulo Barros
12/03/2004
Troque o Close Open por Refresh. Vc deverá capturar o valor do campo que representa a chave primária antes de abrir e fechar (ou refresh)e, em seguida, poderá utilizar o Locate.
Ou então utilize o TBookMark; :twisted: :twisted: :twisted:
Ou então utilize o TBookMark; :twisted: :twisted: :twisted:
GOSTEI 0
Kyonak
12/03/2004
me desculpe mas eu nao entendi, eu quero apenas selecionar a linha do dbgrid, porque usar o locate no query????
GOSTEI 0
Wallacest
12/03/2004
Use a VAR Tbookmark para gravar o local, mas vc não precisa fechar a SQL e sim de um REFRESH
GOSTEI 0