Artigo Segredos do Dbgrid
Colegas,
Na edição 44 da Clube Delphi tem um artigo sobre segredos do Dbgrid. Coloquei na minha aplicação a rotina que simula uma checkbox. Usei uma tabela paradox. O exemplo na revista utiliza clientdataset com XML. O problema é que não ficou bom, quando clico duas vezes em seguida na mesma célula, aparece true or false na célula, se clico de novo aparece o checkbox. No exemplo isto não acontece. Isto se dá pq estou utilizando uma tabela paradox? Qual seria a solução para que este pequeno defeito não aconteça. A rotina segue abaixo:
procedure TFrmFiltrodest.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if column.Field = DM.tbdestsel then
begin
Dbgrid1.Canvas.FillRect(rect);
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,0);
if DM.TbdestSel.AsBoolean then
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,2)
else
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,1);
end;
end;
procedure TFrmFiltrodest.DBGrid1CellClick(Column: TColumn);
begin
if column.Field = DM.TbdestSel then
begin
DM.Tbdest.Edit;
DM.TbdestSel.AsBoolean := not DM.Tbdestsel.AsBoolean;
DM.Tbdest.post;
end;
end;
procedure TFrmFiltrodest.DBGrid1ColEnter(Sender: TObject);
begin
if dbgrid1.SelectedField = DM.TbdestSel then
dbgrid1.Options := dbgrid1.Options - [dgediting]
else
dbgrid1.Options := dbgrid1.Options + [dgediting];
end;
Na edição 44 da Clube Delphi tem um artigo sobre segredos do Dbgrid. Coloquei na minha aplicação a rotina que simula uma checkbox. Usei uma tabela paradox. O exemplo na revista utiliza clientdataset com XML. O problema é que não ficou bom, quando clico duas vezes em seguida na mesma célula, aparece true or false na célula, se clico de novo aparece o checkbox. No exemplo isto não acontece. Isto se dá pq estou utilizando uma tabela paradox? Qual seria a solução para que este pequeno defeito não aconteça. A rotina segue abaixo:
procedure TFrmFiltrodest.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if column.Field = DM.tbdestsel then
begin
Dbgrid1.Canvas.FillRect(rect);
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,0);
if DM.TbdestSel.AsBoolean then
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,2)
else
imagelist1.Draw(DBgrid1.Canvas,rect.left+10,rect.top+1,1);
end;
end;
procedure TFrmFiltrodest.DBGrid1CellClick(Column: TColumn);
begin
if column.Field = DM.TbdestSel then
begin
DM.Tbdest.Edit;
DM.TbdestSel.AsBoolean := not DM.Tbdestsel.AsBoolean;
DM.Tbdest.post;
end;
end;
procedure TFrmFiltrodest.DBGrid1ColEnter(Sender: TObject);
begin
if dbgrid1.SelectedField = DM.TbdestSel then
dbgrid1.Options := dbgrid1.Options - [dgediting]
else
dbgrid1.Options := dbgrid1.Options + [dgediting];
end;
Rookie
Curtidas 0