可以 procedure Tform1.suiDBGrid3CellClick(Column: TColumn);/////dbgrid的自带事件 begin If suiDBGrid3.SelectedField.DataType = ftBoolean Then begin suiDBGrid3.SetFocus; Tform1.SaveBoolean(); end; end;procedure Tform1.suiDBGrid3ColEnter(Sender: TObject);/////dbgrid的自带事件 begin If suiDBGrid3.SelectedField.DataType = ftBoolean then Begin OriginalOptions := suiDBGrid3.Options; suiDBGrid3.Options := suiDBGrid3.Options - [dgEditing]; End; end; procedure Tform1.suiDBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);/////dbgrid的自带事件 const CtrlState : Array[Boolean] of Integer =(DFCS_BUTTONCHECK or DFCS_MONO,DFCS_BUTTONCHECK or DFCS_CHECKED); //CtrlState : Array[Boolean] of Integer =(DFCS_BUTTONCHECK,DFCS_BUTTONCHECK or DFCS_CHECKED); Begin If Column.Field.DataType = ftBoolean Then Begin suiDBGrid3.Canvas.FillRect(Rect); suiDBGrid3.Canvas.Brush.Color := Clgray; DrawFrameControl(suiDBGrid3.Canvas.Handle,Rect,DFC_BUTTON,CtrlState[Column.Field.AsBoolean]); End; end;procedure Tform1.suiDBGrid3KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);/////dbgrid的自带事件 begin If (Key = VK_SPACE) and (suiDBGrid3.SelectedField.DataType = ftBoolean) Then begin TDrawGrid(suiDBGrid3).Col := 3; suiDBGrid3.SetFocus; Tform1.SaveBoolean(); end; end;procedure Tform1.SaveBoolean;//////自写程序 Begin suiDBGrid3.SelectedField.DataSet.Edit; suiDBGrid3.SelectedField.AsBoolean := not suiDBGrid3.SelectedField.AsBoolean; suiDBGrid3.SelectedField.DataSet.Post;End; //确保只有在逻辑字段才能这样插入组件
procedure Tform1.suiDBGrid3CellClick(Column: TColumn);/////dbgrid的自带事件
begin
If suiDBGrid3.SelectedField.DataType = ftBoolean Then
begin
suiDBGrid3.SetFocus;
Tform1.SaveBoolean();
end;
end;procedure Tform1.suiDBGrid3ColEnter(Sender: TObject);/////dbgrid的自带事件
begin
If suiDBGrid3.SelectedField.DataType = ftBoolean then
Begin
OriginalOptions := suiDBGrid3.Options;
suiDBGrid3.Options := suiDBGrid3.Options - [dgEditing];
End;
end;
procedure Tform1.suiDBGrid3DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);/////dbgrid的自带事件
const
CtrlState : Array[Boolean] of Integer =(DFCS_BUTTONCHECK or DFCS_MONO,DFCS_BUTTONCHECK or DFCS_CHECKED);
//CtrlState : Array[Boolean] of Integer =(DFCS_BUTTONCHECK,DFCS_BUTTONCHECK or DFCS_CHECKED);
Begin
If Column.Field.DataType = ftBoolean Then
Begin
suiDBGrid3.Canvas.FillRect(Rect);
suiDBGrid3.Canvas.Brush.Color := Clgray;
DrawFrameControl(suiDBGrid3.Canvas.Handle,Rect,DFC_BUTTON,CtrlState[Column.Field.AsBoolean]);
End;
end;procedure Tform1.suiDBGrid3KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);/////dbgrid的自带事件
begin
If (Key = VK_SPACE) and (suiDBGrid3.SelectedField.DataType = ftBoolean) Then
begin
TDrawGrid(suiDBGrid3).Col := 3;
suiDBGrid3.SetFocus;
Tform1.SaveBoolean();
end;
end;procedure Tform1.SaveBoolean;//////自写程序
Begin suiDBGrid3.SelectedField.DataSet.Edit; suiDBGrid3.SelectedField.AsBoolean := not suiDBGrid3.SelectedField.AsBoolean; suiDBGrid3.SelectedField.DataSet.Post;End;
//确保只有在逻辑字段才能这样插入组件