Marco Web Center |
|
Chapter 13 - Project CheckDbg |
Project Structure |
CheckDbg.dpr |
program CheckDbg; uses Forms, CheckF in 'CheckF.pas' {DbaForm}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TDbaForm, DbaForm); Application.Run; end. |
CheckF.pas |
unit CheckF; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls; type TDbaForm = class(TForm) Table1: TTable; DataSource1: TDataSource; Table1LastName: TStringField; Table1FirstName: TStringField; Table1Department: TSmallintField; Table1Branch: TStringField; Table1Senior: TBooleanField; Table1HireDate: TDateField; DBGrid1: TDBGrid; DBCheckBox1: TDBCheckBox; procedure FormCreate(Sender: TObject); procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); procedure DBGrid1ColEnter(Sender: TObject); procedure DBGrid1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } end; var DbaForm: TDbaForm; implementation {$R *.DFM} procedure TDbaForm.FormCreate(Sender: TObject); begin if not Table1.Exists then begin Table1.CreateTable; ShowMessage ('You can add data to this table'#13 + 'by using the DbAware example of Chapter 9'); end; Table1.Open; end; procedure TDbaForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (gdFocused in State) and (Column.Field = Table1Senior) then begin DBCheckBox1.SetBounds ( Rect.Left + DBGrid1.Left + 1, Rect.Top + DBGrid1.Top + 1, Rect.Right - Rect.Left + 1, Rect.Bottom - Rect.Top + 1); end; end; procedure TDbaForm.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.Columns [DBGrid1.SelectedIndex]. Field = Table1Senior then DBCheckBox1.Visible := True else DBCheckBox1.Visible := False; end; procedure TDbaForm.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if DBCheckBox1.Visible and (Ord (Key) > 31) then begin Key := #0; Table1.Edit; DBCheckBox1.Checked := not DBCheckBox1.Checked; DBCheckBox1.Field.AsBoolean := DBCheckBox1.Checked; end; end; end. |
CheckF.dfm |
object DbaForm: TDbaForm Left = 196 Top = 109 Width = 620 Height = 298 Caption = 'Workers (Checkbox DBGrid Demo)' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = True OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object DBGrid1: TDBGrid Left = 0 Top = 0 Width = 612 Height = 271 Align = alClient DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = [] OnColEnter = DBGrid1ColEnter OnDrawColumnCell = DBGrid1DrawColumnCell OnKeyPress = DBGrid1KeyPress Columns = < item Expanded = False FieldName = 'LastName' Visible = True end item Expanded = False FieldName = 'FirstName' Visible = True end item Expanded = False FieldName = 'Department' Visible = True end item Expanded = False FieldName = 'Branch' Visible = True end item Expanded = False FieldName = 'Senior' Width = 80 Visible = True end item Expanded = False FieldName = 'HireDate' Width = 69 Visible = True end> end object DBCheckBox1: TDBCheckBox Left = 256 Top = 72 Width = 65 Height = 17 Caption = 'Senior' Color = clBtnFace Ctl3D = True DataField = 'Senior' DataSource = DataSource1 ParentColor = False ParentCtl3D = False TabOrder = 1 ValueChecked = 'True' ValueUnchecked = 'False' Visible = False end object Table1: TTable DatabaseName = 'DBDEMOS' FieldDefs = < item Name = 'LastName' DataType = ftString Size = 20 end item Name = 'FirstName' DataType = ftString Size = 20 end item Name = 'Department' DataType = ftSmallint end item Name = 'Branch' DataType = ftString Size = 20 end item Name = 'Senior' DataType = ftBoolean end item Name = 'HireDate' DataType = ftDate end> StoreDefs = True TableName = 'Workers' Left = 392 Top = 8 object Table1LastName: TStringField FieldName = 'LastName' end object Table1FirstName: TStringField FieldName = 'FirstName' end object Table1Department: TSmallintField Alignment = taLeftJustify FieldName = 'Department' end object Table1Branch: TStringField FieldName = 'Branch' end object Table1Senior: TBooleanField FieldName = 'Senior' end object Table1HireDate: TDateField FieldName = 'HireDate' end end object DataSource1: TDataSource DataSet = Table1 Left = 344 Top = 8 end end |