Fórum DBGrid - Quais registros sendo exibidos ? #381437

14/07/2010

0

Boa tarde, pessoal...   Dei uma pesquisada no help do Delphi e não conseguí achar a solução... Meu DBGrid exibe, em sua área visível, 12 registros no máximo (pelo tamanho que o DBGrid foi desenhado no form). Lógico, se o dataset possuir mais registros é so rolar para cima ou para baixo. O que eu precisaria saber é quais registros estão sendo exibidos no momento. Exemplo: do registro 3 ao 14 (12 registros sendo exibidos), ou do 8 ao 19, etc...   Agradeço pela ajuda...
Adalberto Brasaca

Adalberto Brasaca

Responder

Posts

14/07/2010

Rafael Reis

pode diz qual a finalidade disso???? dependendo podemos pensar em uma solução paliativa.
Responder

Gostei + 0

14/07/2010

Adalberto Brasaca

Estou simulando um checkbox estilo XP em uma coluna de valor booleano, ou seja, há quatro BMP's a serem tratados: checkbox desmarcado, checkbox desmarcado mas com bordas alaranjadas (quando o cursor do mouse estiver naquela célula), checkbox marcado, e checkbox marcado com bordas alaranjadas (também quando o cursor do mouse estiver naquela célula). A única forma que conseguí vislumbrar para saber o valor que está na célula é criando um array para guardar os valor de cada registro desse campo e, dependendo da linha em que está o ponteiro do mouse, passar essa linha como parâmetro do array, retornando o valor desse elemento (se está verdadeiro ou falso). Dessa forma sei qual BMP carregar naquela célula, quando o ponteiro do mouse estiver dentro dela. O problema é que, quando rolo o DBGrid, o primeiro registro exibido na DBGrid retorna sempre linha 1, ou seja, carrega o BMP errado. Porisso tenho que saber qual são os registros sendo exibidos. Se o primeiro registro exibido no DBGrid é o terceiro no dataset, é esse número (3 - 1, ou seja, 2 pois o índice do Array se inicia em zero) que tenho que passar para o Array para saber o valor contido nesse elemento e consequentemente carregar o BMP correto... Não sei se me fiz entender, mas é isso...
Responder

Gostei + 0

14/07/2010

Marco Salles

vamos tentar   sem garantias ...   Crie um Campo Calculado no Seu DataSet   e no Evento OnCalcField .. Digite o seguinte  
procedure TForm3.cdsCalcFields(DataSet: TDataSet);
begin
dataSet.FieldByName('NomeDoSeuCampoCalculado').AsInteger:=DataSet.RecNo;
end;
   
Responder

Gostei + 0

15/07/2010

Adalberto Brasaca

Marco Antonio...   Vou tentar esclarecer o que eu preciso... Quando o DataSet é carregado na DBGrid, o primeiro registro a ser mostrado na grade e o registro para onde o ponteiro aponta é o mesmo (figura1). Quando você dá um clique na seta inferior da Scrollbar da DBGrid o ponteiro vai para o último registro a ser exibido, e o primeiro registro sobe (lógico, quando a quantidade de registros a serem exibidos for maior que a quantidade de linhas da DBGrid), ficando "invisível" (rola para cima). Então, o registro a ser exibido na primeira linha da DBGrid agora é o segundo (figura 2). É isso que eu preciso saber: o ponteiro aponta para o último a ser exibido na Grade mas eu quero saber qual é o primeiro a aparecer na Grade sempre (no caso da figura 2 é o segundo registro)...   Achei uma maneira mas não está retornando o valor correto. Tentei usar typecast do DBGrid, expondo uma propriedade chamada TopRow que, segundo o help do Delphi, retorna o número do registro que está no topo da grade (é o primeiro a ser mostrado) naquele momento. Tentei fazer o typecast de duas maneiras, mas as duas retornam sempre o valor 1, mesmo que o primeiro registro sendo exibido na grade seja o décimo, por exemplo... Tentei fazer assim:

nReg := TStringGrid(dgGrid).TopRow;

e também...

type

TGrade = class(TDBGrid);

e depois...

nReg := TGrade(dgGrid).TopRow;

Das duas maneiras sempre retorna o número 1, como se fosse o primeiro registro a ser exibido na DBGrid...
Figura 1   Figura 2
Responder

Gostei + 0

15/07/2010

Pedro Saraiva.

Programa com códigos fontes? Ola pessoal, você programador que quer um aplicativo exemplo para fins comerciais, tenho uma dica, compre o WinPhar que vem com todos os códigos fontes e faça um programa baseado nele, sim ele também vêm com todos os componentes para instalar, voce além de ganhar um programa complidao, ganha tb os seus códigos fontes e seus componentes. O programa foi desenvolvido em Delphi 7 com banco de dados paradox, e custa apenas 20,00 reais
deem uma olhadinha ai no produto
http://produto.mercadolivre.com.br/MLB-149256966-winphar-2008-sistema-para-farmacias-e-drogarias-_JM
e ente em contato pelo e-mail pedroluissaraiva@yahoo.com.br.!
Responder

Gostei + 0

20/07/2010

Adalberto Brasaca

Conseguí resolver... A forma mais simples de resolver foi saber o valor booleano do campo que se encontra na célula da DBGrid onde eu estiver passando o cursor do mouse e carregar o respectivo BMP na célula...

Obrigado a todos pela ajuda...
Responder

Gostei + 0

20/07/2010

Marco Salles

Conseguí resolver... A forma mais simples de resolver foi saber o valor booleano do campo que se encontra na célula da DBGrid onde eu estiver passando o cursor do mouse e carregar o respectivo BMP na célula...

Obrigado a todos pela ajuda...
que valor booleano ???  faça o campo calculado que é muito mais simples Olha as imagems   Olha o que vc escreveu  
Quando o DataSet é carregado na DBGrid, o primeiro registro a ser mostrado na grade e o registro para onde o ponteiro aponta é o mesmo (figura1). Quando você dá um clique na seta inferior da Scrollbar da DBGrid o ponteiro vai para o último registro a ser exibido, e o primeiro registro sobe (lógico, quando a quantidade de registros a serem exibidos for maior que a quantidade de linhas da DBGrid), ficando "invisível" (rola para cima). Então, o registro a ser exibido na primeira linha da DBGrid agora é o segundo (figura 2). É isso que eu preciso saber: o ponteiro aponta para o último a ser exibido na Grade mas eu quero saber qual é o primeiro a aparecer na Grade sempre (no caso da figura 2 é o segundo registro)...
  Fica bem evidente que estamos no Registro 1       Agora , clicando .... Imagem2  que representa a situação descrita por Voce Mesmo Abre Aspas
Quando você dá um clique na seta inferior da Scrollbar da DBGrid o ponteiro vai para o último registro a ser exibido, e o primeiro registro sobe.Então, o registro a ser exibido na primeira linha da DBGrid agora é o segundo (figura 2). É isso que eu preciso saber: 
fecha aspas      
Responder

Gostei + 0

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

Aceitar