Qual Registro esta selecionado no DBGrid
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!
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
Curtidas 0
Respostas
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:
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
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
01/04/2009
Posso ver o seu código?
Obrigado.
Obrigado.
GOSTEI 0
Marcosrocha
01/04/2009
Acho que você está fazendo confusão Regito.Para selecionar a primeira linha do DBGrid ao abrir a tela faça:
if DBGrid1.SelectedRows.Count = 0 then ShowMessage(´Por favor, Selecione uma parcela para imprimir´) else // Count > 0 Imprimir;
DBGrid1.DataSource.DataSet.First; ou SuaQuery.First;
GOSTEI 0
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
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
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.
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
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));
coloque em cada uma das suas verificaçoes um RECNO... tipo
ShowMessage (IntToStr(datasource.dataset.RecNo));
GOSTEI 0
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