Ir para conteúdo
Fórum Script Brasil
  • 0

Indice De Linha No Dbgrid


Guest Xanxere

Pergunta

Ola Pessoal,

Gostaria de saber se tem uma maneira para mostrar o indice de cada linha do DBGrid.

O que estou precisando é que seja mostrado o valor de cada linha na primeira coluna do DBGrid, mas

não uma coluna que eu monte com select mas a coluna onde esta a flecha/seta que posiciona no registro.

Procurei em varios lugares mas não achei nada.

Se alguém souber de um método ou componente que faça isso, ficari muito grato

vlw

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Xanxere, é um recurso pouco provável de ser encontrado para um componente como o DBGrid. A menos que você mesmo crie um componente derivado do mesmo, e ainda assim, pode não ser simples implementar esta funcionalidade.

você pretende mostrar muitos registros neste DBGrid? Será feita edição no mesmo? Do contrário, talvez você pudesse utilizar um TSgringGrid.

Dependendo de alguns fatores, talvez dê para "simular" este efeito com um DBGrid:

- Manipulando alguns eventos (OnDrawColumnCell e OnCellClick);

- O DBGrid não mantém uma propriedade que indique a linha referênte ao número do registro lido; Então, para mostrar um número referente a linha-resultado da consulta/dataset, uma opção seria utilizar a propriedade RecNo do dataset ligado ao DBGrid - desde que o dataset suporte esta fucionalidade;

- Também não temos acessível a propriedade que define o número de colunas fixas, então não daria para manter a sua coluna numerada parada (estática à esquerda) - se todas as colunas couberem na largura do grid não será notada qualquer diferença;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz uma aplicação de teste em consegui trazer o indice/número de cada linha em um TDBGrid, porém tenho um componente o qual utiliza um TDBgrid só o mesmo esta sempre me retornando -1

Alguém sabe porque???

Observa-se que para retornar os valores do indice estou utilizando: DBGrid1.datasource.dataset.RecNo, só que esta trazendo sempre -1

Espero que alguém possa me ajudar

vlw

Link para o comentário
Compartilhar em outros sites

  • 0
Fiz uma aplicação de teste em consegui trazer o indice/número de cada linha em um TDBGrid, porém tenho um componente o qual utiliza um TDBgrid só o mesmo esta sempre me retornando -1

Alguém sabe porque???

Observa-se que para retornar os valores do indice estou utilizando: DBGrid1.datasource.dataset.RecNo, só que esta trazendo sempre -1

Xanxerê, acho que deve ser um daqueles casos que citei antes: "...uma opção seria utilizar a propriedade RecNo do dataset ligado ao DBGrid - desde que o dataset suporte esta fucionalidade;"

Existem componentes (dataset) em que a propriedade RecordCount, por exemplo, também não corresponde ao número de registros no dataset, mas sim algo como o número de registros recuperados (assim por questões de otimização) - o MDO (que utilizo para acesso ao FireBird) é um caso destes. Existem outros.

Qual o banco de dados que você utiliza e qual o componente de acesso?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

o banco que utilizo é oracle e TQuery, TDataSet... o que pude observar é que quando utilizei um table consegui trazer os indices/nº de linha certo, ou seja, 1,2,3,4.... e quando utilizo através de uma Query sempre traz -1

Gostaria de saber se tem como eu implementar uma rotina de RecNo que nem a da unit DBTables para resolver isso....

Desde já agradeço a atenção

vlw

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Fernando Piccini

ola Pessoal,

Criei um método o qual lista o numero/indice de cada linha, ate ia tudo bem...

o problema é que quando navego ele se perde...ou seja...ele só mostra os

valores/indice de cada linha que é visivel....

TMyGrid = class(TDBGrid);

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var

Str : String;

begin

if (DataCol = 0) then

with TMyGrid(DBGrid1) do

begin

Str := Inttostr(TDataLink(DataLink).ActiveRecord);

Canvas.TextOut((Rect.Right - Canvas.TextWidth(Str)) - 30, Rect.Top, Str);

end;

end;

alguém sabe se como posso fazer para numerar todas minhas linhas no dbgrid?

vlw

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...