GARANTIR DESCONTO

Fórum Problema ao selecionar linha do DBgrid, alguem se habilita? #220036

12/03/2004

0

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
 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

Kyonak

Responder

Posts

12/03/2004

Rômulo Barros

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:


Responder

Gostei + 0

12/03/2004

Kyonak

me desculpe mas eu nao entendi, eu quero apenas selecionar a linha do dbgrid, porque usar o locate no query????


Responder

Gostei + 0

12/03/2004

Wallacest

Use a VAR Tbookmark para gravar o local, mas vc não precisa fechar a SQL e sim de um REFRESH


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar