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;

創作者介紹
創作者 Dream 的頭像
Jerry

Dream

Jerry 發表在 痞客邦 留言(0) 人氣( 1611 )