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

Delphi

20/02/2018

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

Curtidas 0
POSTAR