转自 http://mydelphi.5d6d.com/thread-302-1-2.html
注意要USES DB 单元
主要代码:
procedure TForm1.DBGrid1DrawColumnCell(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
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
end;
end;
全部示列单元文件内容:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, DBClient, ExtCtrls, DBCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
ClientDataSet1: TClientDataSet;
ClientDataSet1Value: TBooleanField;
DBNavigator1: TDBNavigator;
ClientDataSet1ID: TAutoIncField;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBGrid1DrawColumnCell(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
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,Rect, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);
end;
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.DataType = ftBoolean then
begin
DBGrid1.SelectedField.Dataset.Edit;
DBGrid1.SelectedField.AsBoolean :=not DBGrid1.SelectedField.AsBoolean;
DBGrid1.SelectedField.Dataset.Post;
end;
end;
end.
参数强解(英文原HELP)
Value | Meaning |
DFC_BUTTON | Standard button |
DFC_CAPTION | Title bar |
DFC_MENU | Menu bar |
DFC_POPUPMENU | Windows 98/Me, Windows 2000/XP: Popup menu item. |
DFC_SCROLL | Scroll bar |
Value | Meaning |
DFCS_BUTTON3STATE | Three-state button |
DFCS_BUTTONCHECK | Check box |
DFCS_BUTTONPUSH | Push button |
DFCS_BUTTONRADIO | Radio button |
DFCS_BUTTONRADIOIMAGE | Image for radio button (nonsquare needs image) |
DFCS_BUTTONRADIOMASK | Mask for radio button (nonsquare needs mask) |
Value | Meaning |
DFCS_CAPTIONCLOSE | Close button |
DFCS_CAPTIONHELP | Help button |
DFCS_CAPTIONMAX | Maximize button |
DFCS_CAPTIONMIN | Minimize button |
DFCS_CAPTIONRESTORE | Restore button |
Value | Meaning |
DFCS_MENUARROW | Submenu arrow |
DFCS_MENUARROWRIGHT | Submenu arrow pointing left. This is used for the right-to-left cascading menus used with right-to-left languages such as Arabic or Hebrew. |
DFCS_MENUBULLET | Bullet |
DFCS_MENUCHECK | Check mark |
Value | Meaning |
DFCS_SCROLLCOMBOBOX | Combo box scroll bar |
DFCS_SCROLLDOWN | Down arrow of scroll bar |
DFCS_SCROLLLEFT | Left arrow of scroll bar |
DFCS_SCROLLRIGHT | Right arrow of scroll bar |
DFCS_SCROLLSIZEGRIP | Size grip in bottom-right corner of window |
DFCS_SCROLLSIZEGRIPRIGHT | Size grip in bottom-left corner of window. This is used with right-to-left languages such as Arabic or Hebrew. |
DFCS_SCROLLUP | Up arrow of scroll bar |
Value | Meaning |
DFCS_ADJUSTRECT | Bounding rectangle is adjusted to exclude the surrounding edge of the push button. |
Value | Meaning |
DFCS_CHECKED | Button is checked. |
DFCS_FLAT | Button has a flat border. |
DFCS_HOT | Windows 98/Me, Windows 2000/XP: Button is hot-tracked. |
DFCS_INACTIVE | Button is inactive (grayed). |
DFCS_MONO | Button has a monochrome border. |
DFCS_PUSHED | Button is pushed. |
DFCS_TRANSPARENT | Windows 98/Me, Windows 2000/XP: The background remains untouched. |