TDBGrid
TMyBookmarkList = Class(DBGrids.TBookmarkList)
Public
procedure DoLinkActive(Value: Boolean);
end;
---------------------------------------------------------
private
{ Private declarations }
FBookMarks :TMyBookmarkList;
originaloptions:TDBGridOptions;
---------------------------------------------------------
procedure TMyBookMarkList.DoLinkActive(Value: Boolean);
begin
LinkActive(Value);
end;
procedure TfmTest.FormCreate(Sender: TObject);
begin
FBookMarks := TMyBookmarkList.Create(gdDetails);
FBookMarks.DoLinkActive(True);
inherited;
cdsUser.Close; cdsUser.Open;
end;
procedure TfmTest.gdDetailsCellClick(Column: TColumn);
begin
inherited;
if Column.Field.DataType = ftBoolean then begin
FBookMarks.CurrentRowSelected := False;
if cdsDetails.State = dsBrowse then cdsDetails.Edit;
if Column.Field.Value then begin
Column.Field.Value := False;
end else begin
Column.Field.Value := True;
end;
end;
end;
procedure TfmTest.gdDetailsColEnter(Sender: TObject);
begin
inherited;
if gdDetails.SelectedField.DataType=ftboolean then begin
originaloptions:=gdDetails.Options;
gdDetails.Options:=gdDetails.Options-[dgEditing];
end;
end;
procedure TfmTest.gdDetailsDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
CtrlState: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
begin
if Column.Field.DataType = ftboolean then begin
gdDetails.Canvas.FillRect(Rect);
DrawFrameControl(gdDetails.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
end;
end;


請先 登入 以發表留言。