Qual Registro esta selecionado no DBGrid

Delphi

01/04/2009

Novamente precisando de ajuda.

No meu sistema faço geração de boletas, o usuário seleciona um contrato e são apresentadas as prestações deste contrato para o usuário que pode gerar a boleta mas tem que selecionar uma prestação, gostaria de mostrar uma mensagem informando que não há prestação selecionada caso ele não selecione uma prestação no dbgrid e clique no gerar boleta e gostaria que o dbgrid quando iniciado não indica-se o primeiro registro.

Aguardo a ajuda!


Regito

Regito

Curtidas 0

Respostas

Woinch

Woinch

01/04/2009

O DBGrid vai estar com o Cursor posicionado no mesmo local que o cursor do DataSet estiver posicionado. Quanto a seleção, ele não vem com nenhuma linha selecionada por Default. Ao menos que você já tenha feito isso via programação.

Para verificar se existe alguma linha selecionada no DBGrid basta utilizar a seguinte rotina:

if (DBGrid.SelectedRows.Count > 0) then
  ShowMessage(´Existe pelo menos uma linha selecionada!´);



GOSTEI 0
Regito

Regito

01/04/2009

Woinch obrigado pela dica mas, quando agora so aparece que nenhum registro foi selecionado, pois mesmo quando seleciono um registro ele retorna 0.


GOSTEI 0
Woinch

Woinch

01/04/2009

Posso ver o seu código?

Obrigado.


GOSTEI 0
Marcosrocha

Marcosrocha

01/04/2009

Acho que você está fazendo confusão Regito.
if DBGrid1.SelectedRows.Count = 0 then
  ShowMessage(´Por favor, Selecione uma parcela para imprimir´)
else // Count > 0
  Imprimir;
Para selecionar a primeira linha do DBGrid ao abrir a tela faça:
DBGrid1.DataSource.DataSet.First; ou SuaQuery.First;



GOSTEI 0
Regito

Regito

01/04/2009

Desculpe a Demora

procedure TFrmBoletas.BGerarBoletaClick(Sender: TObject);
var
Imagem: TFreeBoleto;
Data: String;
begin
try
Data:= DateToStr(Date());
if Not(DMConeccao.ADOGrid.Active) then
begin
ShowMessage(´Selecione um contrato e uma Prestação´);
Abort;
end;
if DBGridPrestacoes.SelectedRows.Count = 0 then
begin
ShowMessage(´Selecione uma Prestação´);
Abort;
end;
if DMConeccao.TBContratoTipoCobranca.Value = 1 then
begin
ShowMessage(´Não pode ser gerada Boleta para este Contrato, Cheque´);
Abort;
end;

O codigo é muito grande então coloquei só ate ai!
Valew


GOSTEI 0
Woinch

Woinch

01/04/2009

Está aparecendo sempre a mensagem ´Selecione uma Prestação´ para você?
Verifique se não há nada no seu código que está limpando a seleção porque pelo que você colocou ai me parece estar certo.

Lembre-se que selecionar o Grid é efetuar um clique no mesmo de maneira que a linha inteira fique selecionada (cor diferente).
A flexinha aquela do DBGrid é apenas para indicar onde está o ponteiro no DataSet.


GOSTEI 0
Landersongomes

Landersongomes

01/04/2009

Utilize a funcao RECNO para saber o registro em que o cursor se encontra, a verificacao que vc está fazendo está emcima de linha selecionada, vc pode está com o cursor posicionado sem ter efetuado a selecao da linha, na verdade vc pode até não ter habilitado a selecao de linhas no seu grid.


coloque em cada uma das suas verificaçoes um RECNO... tipo

ShowMessage (IntToStr(datasource.dataset.RecNo));


GOSTEI 0
Regito

Regito

01/04/2009

Acho que meu grid não esta com a seleção de linhas habilitada como faço para habilitar?


GOSTEI 0
POSTAR