implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Query1
do
begin
Active:=False;
SQL.Clear;
SQL.Add('
Select * from Tabelle ');
Active:=True;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBCheckBox1.DataSource := DataSource1;
DBCheckBox1.DataField := '
Feld';
// DBCheckBox1.Visible := False;
DBCheckBox1.Color := DBGrid1.Color;
DBCheckBox1.Caption := '
';
//explained later in the article
DBCheckBox1.ValueChecked := '
true';
DBCheckBox1.ValueUnChecked := '
false';
end;
procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject;
const Rect: TRect; DataCol:
Integer; Column: TColumn; State: TGridDrawState);
const IsChecked :
array[Boolean]
of Integer =
(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK
or DFCS_CHECKED);
var
DrawState: Integer;
DrawRect: TRect;
begin
if (gdFocused
in State)
then
begin
if (Column.Field.FieldName = DBCheckBox1.DataField)
then
begin
DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
DBCheckBox1.Width := Rect.Right - Rect.Left;
DBCheckBox1.Height := Rect.Bottom - Rect.Top;
DBCheckBox1.Visible := True;
end
end
else
begin
if (Column.Field.FieldName = DBCheckBox1.DataField)
then
begin
DrawRect:=Rect;
InflateRect(DrawRect,-1,-1);
DrawState := ISChecked[Column.Field.AsBoolean];
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
DFC_BUTTON, DrawState);
end;
end;
end;
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField
then
DBCheckBox1.Visible := False
end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject;
var Key: Char);
begin
if (key = Chr(9))
then Exit;
if (DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField)
then
begin
DBCheckBox1.SetFocus;
SendMessage(DBCheckBox1.Handle, WM_Char, word(Key), 0);
end;
end;
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
if DBCheckBox1.Checked
then
DBCheckBox1.Caption := DBCheckBox1.ValueChecked
else
DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
end;
end.