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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)