在DBGrid里加入CheckBox可视化组件
转自 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)
BOOL DrawFrameControl( HDC [url="]hdc[/url], // handle to device context LPRECT [url="]lprc[/url], // bounding rectangle UINT [url="]uType[/url], // frame-control type UINT [url="]uState[/url] // frame-control state);
Parametershdc [in] Handle to the device context of the window in which to draw the control. lprc [in] Pointer to a [url=ms-help://borland.bds5/Gdi/rectangl_6cqa.htm]RECT[/url] structure that contains the logical coordinates of the bounding rectangle for frame control. uType [in] Specifies the type of frame control to draw. This parameter can be one of the following values.
| 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 |
uState [in] Specifies the initial state of the frame control. If uType is DFC_BUTTON, uState can be one of the following values.
| 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) |
If uType is DFC_CAPTION, uState can be one of the following values.
| Value | Meaning |
| DFCS_CAPTIONCLOSE | Close button |
| DFCS_CAPTIONHELP | Help button |
| DFCS_CAPTIONMAX | Maximize button |
| DFCS_CAPTIONMIN | Minimize button |
| DFCS_CAPTIONRESTORE | Restore button |
If uType is DFC_MENU, uState can be one of the following values.
| 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 |
If uType is DFC_SCROLL, uState can be one of the following values.
| 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 |
The following style can be used to adjust the bounding rectangle of the push button.
| Value | Meaning |
| DFCS_ADJUSTRECT | Bounding rectangle is adjusted to exclude the surrounding edge of the push button. |
One or more of the following values can be used to set the state of the control to be drawn.
| 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. |

浙公网安备 33010602011771号