Delphi - DBGrid não substitui conteúdo da linha selecionada

20/02/2018

0

0
votar contra
favorita


Boa tarde pessoal...

Tenho uma tabela em um banco SQLite com um campo do tipo "inteiro" para guardar valores "boolean". Este campo está ligado, na tela de cadastro, a um DBCheckbox. Então, para conseguir marcar e desmarcar o DBCheckbox, eu precisei escrever os eventos OnGetText e OnSetText do campo.

Agora estou necessitando mostrar valores "Sim" e "Não" baseados nesse campo em um DBGrid. Escrevi o código abaixo no evento OnDrawColumnCell:

procedure TfrmPesquisar.dbgPesquisarDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field = dsPesquisar.DataSet.FieldByName('claAtiva') then
begin
dbgPesquisar.Canvas.FillRect(Rect);
if Column.Field.AsString = '0' then
dbgPesquisar.Canvas.TextOut(Rect.Left+10,Rect.Top+3,'Não')
else
dbgPesquisar.Canvas.TextOut(Rect.Left+10,Rect.Top+3,'Sim');
end;
end;

Porém, quando se navega pelos registros do DBGrid a coluna onde deveria ser alterada a informação está apresentando no registro selecionado, erradamente, os dois valores: aquele a ser apresentado (Não ou Sim) e o valor real (0 ou 1) na mesma célula.

Alguém já passou por algo semelhante ou conhece a solução ?

Muito obrigado pela ajuda.
Adalberto Brasaca

Adalberto Brasaca

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar