一个例子: ----------unit----------------- unit Gridmain;interfaceuses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, DBLookup, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, Buttons, Calendar; type TForm1 = class(TForm) TableGridData: TTable; DataSourceGridData: TDataSource; TableCust: TTable; DataSourceCust: TDataSource; DBNavigator1: TDBNavigator; DBGrid1: TDBGrid; TableGridDataOrderNo: TFloatField; TableGridDataCustNo: TFloatField; TableGridDataShipVIA: TStringField; TableGridDataCheckBox: TBooleanField; DBLookupCombo1: TDBLookupCombo; DBCheckBox1: TDBCheckBox; DBComboBox1: TDBComboBox; ImageTrue: TImage; ImageFalse: TImage; Database1: TDatabase; procedure FormCreate(Sender: TObject); procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); procedure DBGrid1KeyPress(Sender: TObject; var Key: Char); procedure DBCheckBox1Click(Sender: TObject); procedure DBGrid1ColExit(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject); begin Database1.Params.Add('Path='+ExtractFileDir(Application.EXEName)); Database1.Open; TableGridData.Open; DBLookupCombo1.Visible := False; DBCheckBox1.Visible := False; DBComboBox1.Visible := False; ImageTrue.Visible := False; ImageFalse.Visible := False;end;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin { If Field.Index = 4 then DBGrid1.Canvas.FillRect(Rect); } if (gdFocused in State) then begin if (Field.FieldName = DBLookupCombo1.DataField) then begin DBLookupCombo1.Left := Rect.Left + DBGrid1.Left; DBLookupCombo1.Top := Rect.Top + DBGrid1.top; DBLookupCombo1.Width := Rect.Right - Rect.Left; DBLookupCombo1.Height := Rect.Bottom - Rect.Top; DBLookupCombo1.Visible := True; end else if (Field.FieldName = DBCheckBox1.DataField) then begin DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 1; DBCheckBox1.Top := Rect.Top + DBGrid1.top + 1; DBCheckBox1.Width := Rect.Right - Rect.Left{ - 1}; DBCheckBox1.Height := Rect.Bottom - Rect.Top{ - 1}; DBCheckBox1.Visible := True; end else if (Field.FieldName = DBComboBox1.DataField) then begin DBComboBox1.Left := Rect.Left + DBGrid1.Left; DBComboBox1.Top := Rect.Top + DBGrid1.top; DBComboBox1.Width := Rect.Right - Rect.Left; DBComboBox1.Height := Rect.Bottom - Rect.Top; DBComboBox1.Visible := True; end end else {in this else area draw any stay behind bit maps} begin if (Field.FieldName = DBCheckBox1.DataField) then begin if TableGridDataCheckBox.AsBoolean then DBGrid1.Canvas.Draw(Rect.Left,Rect.Top, ImageTrue.Picture.Bitmap) else DBGrid1.Canvas.Draw(Rect.Left,Rect.Top, ImageFalse.Picture.Bitmap) { DBGrid1.Canvas.StretchDraw(Rect, ImageFalse.Picture.Bitmap); } end { Do bit map dwawing if you want} { DBGrid1.Canvas.FillRect(Rect); } end;end;procedure TForm1.DBGrid1ColExit(Sender: TObject); begin If DBGrid1.SelectedField.FieldName = DBLookupCombo1.DataField then DBLookupCombo1.Visible := false else If DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField then DBCheckBox1.Visible := false else If DBGrid1.SelectedField.FieldName = DBComboBox1.DataField then DBComboBox1.Visible := false; end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if (key <> chr(9)) then begin if (DBGrid1.SelectedField.FieldName = DBLookupCombo1.DataField) then begin DBLookupCombo1.SetFocus; SendMessage(DBLookupCombo1.Handle, WM_Char, word(Key), 0); end else if (DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField) then begin DBCheckBox1.SetFocus; SendMessage(DBCheckBox1.Handle, WM_Char, word(Key), 0); end else if (DBGrid1.SelectedField.FieldName = DBComboBox1.DataField) then begin DBComboBox1.SetFocus; SendMessage(DBComboBox1.Handle, WM_Char, word(Key), 0); end; end; end;procedure TForm1.DBCheckBox1Click(Sender: TObject); begin if SendMessage(DBCheckBox1.Handle, BM_GetCheck, 0, 0) = 0 then DBCheckBox1.Caption := ' ' + 'False' else DBCheckBox1.Caption := ' ' + 'True' end; end.//Notes > make sure to set the color of the checkbox to match the backgroung ------------------------------form------------------ object Form1: TForm1 Left = 119 Top = 111 BorderStyle = bsDialog Caption = 'Form1' ClientHeight = 434 ClientWidth = 468 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'System' Font.Style = [] OldCreateOrder = True OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 16 object ImageTrue: TImage Left = 214 Top = 316 Width = 84 Height = 19 Picture.Data = { 07544269746D6170720A0000424D720A00000000000036040000280000005400 00001300000001000800000000003C0600000000000000000000000100000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000C0DCC000F0CAA60000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000F0FBFF00A4A0 A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFF07FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF80007070707070707070707FF07FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFF FFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFF FFFF0000000000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF800FF0000FFFFFF0000FF07FF07FFFFFFFFFF FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FFFF0000FFFF0000FF FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF800FF000000FF000000FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000 FFFFFFFF0000FFFFFF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFF0000000000FFFF 07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FF FF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF800FFFFFF000000FFFFFF07FF07FFFFFFFFFFFFFFFFFF FFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FFFF0000FFFF000000000000FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FF FF0000000000FFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF 000000FFFF0000FFFF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FF000000FF000000FF07FF07FF FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000000FF0000FFFF0000FF FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF800FF0000FFFFFF0000FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFF FFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000007FF07FFFFFFFFFF FFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF8F8F8F8F8F8F8F8F8F8F8F80707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} end object ImageFalse: TImage Left = 217 Top = 283 Width = 85 Height = 20 Picture.Data = { 07544269746D6170720A0000424D720A00000000000036040000280000005400 00001300000001000800000000003C0600000000000000000000000100000000 000000000000000080000080000000808000800000008000800080800000C0C0 C000C0DCC000F0CAA60000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000F0FBFF00A4A0 A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFF07 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF80007070707070707070707FF07FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFF FFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000 000000FFFF0000FFFFFF00000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFF FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF0000FFFF0000FFFF0000FF FF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF FFFFFFFFFF0000FFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFF FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000FF0000FF FF0000FFFFFF00000000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFF FFFFFFFFFF0000FFFFFFFFFFFFFFFF00000000FFFF0000FFFF0000FFFFFFFFFF FF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800 FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07 FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FFFFFF0000FF FFFF00000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFF FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFF FFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000007FF07FFFFFFFF FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF8F8F8F8F8F8F8F8F8F8F8F80707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} end object DBNavigator1: TDBNavigator Left = 97 Top = 236 Width = 240 Height = 25 DataSource = DataSourceGridData ParentShowHint = False ShowHint = True TabOrder = 0 end object DBGrid1: TDBGrid Left = 0 Top = 8 Width = 465 Height = 223 DataSource = DataSourceGridData TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -13 TitleFont.Name = 'System' TitleFont.Style = [] OnColExit = DBGrid1ColExit OnDrawDataCell = DBGrid1DrawDataCell OnKeyPress = DBGrid1KeyPress end object DBLookupCombo1: TDBLookupCombo Left = 311 Top = 282 Width = 121 Height = 31 TabStop = False DataField = 'CustNo' DataSource = DataSourceGridData LookupSource = DataSourceCust LookupDisplay = 'Company' LookupField = 'CustNo' DropDownWidth = 200 TabOrder = 2 end object DBCheckBox1: TDBCheckBox Left = 114 Top = 285 Width = 90 Height = 17 TabStop = False Alignment = taLeftJustify Color = clBtnFace DataField = 'CheckBox' DataSource = DataSourceGridData ParentColor = False TabOrder = 3 ValueChecked = 'True' ValueUnchecked = 'False' OnClick = DBCheckBox1Click end object DBComboBox1: TDBComboBox Left = 313 Top = 314 Width = 145 Height = 24 DataField = 'ShipVIA' DataSource = DataSourceGridData ItemHeight = 16 Items.Strings = ( 'UPS' 'DHL' 'Emery' 'US Mail' 'FedEx') TabOrder = 4 end object TableGridData: TTable DatabaseName = 'DemoGrid' TableName = 'GRIDDATA.DB' Left = 36 Top = 330 object TableGridDataOrderNo: TFloatField DisplayWidth = 8 FieldName = 'OrderNo' end object TableGridDataCustNo: TFloatField DisplayLabel = 'DBLookupCombo' DisplayWidth = 18 FieldName = 'CustNo' Required = True end object TableGridDataShipVIA: TStringField DisplayLabel = 'DBCombo' DisplayWidth = 13 FieldName = 'ShipVIA' Size = 7 end object TableGridDataCheckBox: TBooleanField DisplayWidth = 10 FieldName = 'CheckBox' end end object DataSourceGridData: TDataSource DataSet = TableGridData Left = 2 Top = 328 end object TableCust: TTable Active = True DatabaseName = 'DBDEMOS' TableName = 'CUSTOMER.DB' Left = 34 Top = 292 end object DataSourceCust: TDataSource DataSet = TableCust Left = 4 Top = 294 end object Database1: TDatabase DatabaseName = 'DemoGrid' DriverName = 'STANDARD' KeepConnection = False LoginPrompt = False Params.Strings = ( 'DEFAULT DRIVER=PARADOX') SessionName = 'Default' Left = 72 Top = 296 end end
楼上的,什么例子,这么大一堆?其实设置picklist就行了。
很简单的 在DBGrid的字段编辑器中选择一个字段,设其PickList属性即可
wangzh(王朝辉)是在DBGrid中加控件吧,很好很好!
to jabmoon(刺月) picklist果然好用,但这样就更妙了。 var focusisthere:boolean;//全局变量 procedure TFormgrid.DBGridpColExit(Sender: TObject); begin if FocusIsThere then begin with DBGrid do begin if (SelectedField.FieldName = '供应商') or (SelectedField.FieldName = '类别') then begin Options := Options - [dgAlwaysShowEditor];//----------退出时去除编辑状态 end; end; end; end procedure TFormgrid.DBGridColEnter(Sender: TObject); begin with DBGrid do begin if (SelectedField.FieldName = '供应商') or (SelectedField.FieldName = '类别') then begin Options := Options + [dgAlwaysShowEditor];//--------------------编辑状态 focusIsThere := True;//-----------------------------------------焦点在这儿 end; end; end;
to blucecat(我真笨~编了20几年了还赶不上盖茨) 看来现在我可以不用控件了。其实实现lookup型的也一样,在主表上建一个lookup形的字段结合上面的程序也可以实现下拉列表框,但我是用的adodataset
----------unit-----------------
unit Gridmain;interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, DB, DBTables, DBLookup, Mask, DBCtrls,
ExtCtrls, Grids, DBGrids, Buttons, Calendar;
type
TForm1 = class(TForm)
TableGridData: TTable;
DataSourceGridData: TDataSource;
TableCust: TTable;
DataSourceCust: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
TableGridDataOrderNo: TFloatField;
TableGridDataCustNo: TFloatField;
TableGridDataShipVIA: TStringField;
TableGridDataCheckBox: TBooleanField;
DBLookupCombo1: TDBLookupCombo;
DBCheckBox1: TDBCheckBox;
DBComboBox1: TDBComboBox;
ImageTrue: TImage;
ImageFalse: TImage;
Database1: TDatabase;
procedure FormCreate(Sender: TObject);
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure DBCheckBox1Click(Sender: TObject);
procedure DBGrid1ColExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.Params.Add('Path='+ExtractFileDir(Application.EXEName));
Database1.Open;
TableGridData.Open;
DBLookupCombo1.Visible := False;
DBCheckBox1.Visible := False;
DBComboBox1.Visible := False;
ImageTrue.Visible := False;
ImageFalse.Visible := False;end;procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
{ If Field.Index = 4 then
DBGrid1.Canvas.FillRect(Rect); }
if (gdFocused in State) then
begin
if (Field.FieldName = DBLookupCombo1.DataField) then
begin
DBLookupCombo1.Left := Rect.Left + DBGrid1.Left;
DBLookupCombo1.Top := Rect.Top + DBGrid1.top;
DBLookupCombo1.Width := Rect.Right - Rect.Left;
DBLookupCombo1.Height := Rect.Bottom - Rect.Top;
DBLookupCombo1.Visible := True;
end
else if (Field.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 1;
DBCheckBox1.Top := Rect.Top + DBGrid1.top + 1;
DBCheckBox1.Width := Rect.Right - Rect.Left{ - 1};
DBCheckBox1.Height := Rect.Bottom - Rect.Top{ - 1};
DBCheckBox1.Visible := True;
end
else if (Field.FieldName = DBComboBox1.DataField) then
begin
DBComboBox1.Left := Rect.Left + DBGrid1.Left;
DBComboBox1.Top := Rect.Top + DBGrid1.top;
DBComboBox1.Width := Rect.Right - Rect.Left;
DBComboBox1.Height := Rect.Bottom - Rect.Top;
DBComboBox1.Visible := True;
end
end
else {in this else area draw any stay behind bit maps}
begin
if (Field.FieldName = DBCheckBox1.DataField) then
begin
if TableGridDataCheckBox.AsBoolean then
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top, ImageTrue.Picture.Bitmap)
else
DBGrid1.Canvas.Draw(Rect.Left,Rect.Top, ImageFalse.Picture.Bitmap)
{ DBGrid1.Canvas.StretchDraw(Rect, ImageFalse.Picture.Bitmap); }
end
{ Do bit map dwawing if you want}
{ DBGrid1.Canvas.FillRect(Rect); }
end;end;procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
If DBGrid1.SelectedField.FieldName = DBLookupCombo1.DataField then
DBLookupCombo1.Visible := false
else If DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField then
DBCheckBox1.Visible := false
else If DBGrid1.SelectedField.FieldName = DBComboBox1.DataField then
DBComboBox1.Visible := false;
end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key <> chr(9)) then
begin
if (DBGrid1.SelectedField.FieldName = DBLookupCombo1.DataField) then
begin
DBLookupCombo1.SetFocus;
SendMessage(DBLookupCombo1.Handle, WM_Char, word(Key), 0);
end
else if (DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.SetFocus;
SendMessage(DBCheckBox1.Handle, WM_Char, word(Key), 0);
end
else if (DBGrid1.SelectedField.FieldName = DBComboBox1.DataField) then
begin
DBComboBox1.SetFocus;
SendMessage(DBComboBox1.Handle, WM_Char, word(Key), 0);
end;
end;
end;procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
if SendMessage(DBCheckBox1.Handle, BM_GetCheck, 0, 0) = 0 then
DBCheckBox1.Caption := ' ' + 'False'
else
DBCheckBox1.Caption := ' ' + 'True'
end;
end.//Notes > make sure to set the color of the checkbox to match the backgroung
------------------------------form------------------
object Form1: TForm1
Left = 119
Top = 111
BorderStyle = bsDialog
Caption = 'Form1'
ClientHeight = 434
ClientWidth = 468
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'System'
Font.Style = []
OldCreateOrder = True
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 16
object ImageTrue: TImage
Left = 214
Top = 316
Width = 84
Height = 19
Picture.Data = {
07544269746D6170720A0000424D720A00000000000036040000280000005400
00001300000001000800000000003C0600000000000000000000000100000000
000000000000000080000080000000808000800000008000800080800000C0C0
C000C0DCC000F0CAA60000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000F0FBFF00A4A0
A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFF07FF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFF80007070707070707070707FF07FFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFF
FFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFF
FFFF0000000000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFF800FF0000FFFFFF0000FF07FF07FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FFFF0000FFFF0000FF
FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFF800FF000000FF000000FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
FFFFFFFF0000FFFFFF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFF0000000000FFFF
07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FF
FF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFF800FFFFFF000000FFFFFF07FF07FFFFFFFFFFFFFFFFFF
FFFFFFFFFFFF0000FFFFFFFF0000FFFFFF0000FFFF0000FFFF000000000000FF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FF
FF0000000000FFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF
000000FFFF0000FFFF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FF000000FF000000FF07FF07FF
FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00000000FF0000FFFF0000FF
FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFF800FF0000FFFFFF0000FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF
FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFF
FFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000007FF07FFFFFFFFFF
FFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFF8F8F8F8F8F8F8F8F8F8F8F80707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
end
object ImageFalse: TImage
Left = 217
Top = 283
Width = 85
Height = 20
Picture.Data = {
07544269746D6170720A0000424D720A00000000000036040000280000005400
00001300000001000800000000003C0600000000000000000000000100000000
000000000000000080000080000000808000800000008000800080800000C0C0
C000C0DCC000F0CAA60000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000F0FBFF00A4A0
A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFF07
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFF80007070707070707070707FF07FFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFF
FFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000
000000FFFF0000FFFFFF00000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFF
FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF0000FFFF0000FFFF0000FF
FF0000FFFF0000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
FFFFFFFFFF0000FFFF0000FFFF0000FFFFFFFFFFFF0000FFFF0000FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFF
FF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF0000FF0000FF
FF0000FFFFFF00000000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFF
FFFFFFFFFF0000FFFFFFFFFFFFFFFF00000000FFFF0000FFFF0000FFFFFFFFFF
FF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800
FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF
FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07
FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FFFFFF0000FF
FFFF00000000FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFF800FFFFFFFFFFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFF
FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFF
FFFFFFFFFF07FF07FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF
FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000007FF07FFFFFFFF
FFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFF8F8F8F8F8F8F8F8F8F8F8F80707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
end
object DBNavigator1: TDBNavigator
Left = 97
Top = 236
Width = 240
Height = 25
DataSource = DataSourceGridData
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object DBGrid1: TDBGrid
Left = 0
Top = 8
Width = 465
Height = 223
DataSource = DataSourceGridData
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -13
TitleFont.Name = 'System'
TitleFont.Style = []
OnColExit = DBGrid1ColExit
OnDrawDataCell = DBGrid1DrawDataCell
OnKeyPress = DBGrid1KeyPress
end
object DBLookupCombo1: TDBLookupCombo
Left = 311
Top = 282
Width = 121
Height = 31
TabStop = False
DataField = 'CustNo'
DataSource = DataSourceGridData
LookupSource = DataSourceCust
LookupDisplay = 'Company'
LookupField = 'CustNo'
DropDownWidth = 200
TabOrder = 2
end
object DBCheckBox1: TDBCheckBox
Left = 114
Top = 285
Width = 90
Height = 17
TabStop = False
Alignment = taLeftJustify
Color = clBtnFace
DataField = 'CheckBox'
DataSource = DataSourceGridData
ParentColor = False
TabOrder = 3
ValueChecked = 'True'
ValueUnchecked = 'False'
OnClick = DBCheckBox1Click
end
object DBComboBox1: TDBComboBox
Left = 313
Top = 314
Width = 145
Height = 24
DataField = 'ShipVIA'
DataSource = DataSourceGridData
ItemHeight = 16
Items.Strings = (
'UPS'
'DHL'
'Emery'
'US Mail'
'FedEx')
TabOrder = 4
end
object TableGridData: TTable
DatabaseName = 'DemoGrid'
TableName = 'GRIDDATA.DB'
Left = 36
Top = 330
object TableGridDataOrderNo: TFloatField
DisplayWidth = 8
FieldName = 'OrderNo'
end
object TableGridDataCustNo: TFloatField
DisplayLabel = 'DBLookupCombo'
DisplayWidth = 18
FieldName = 'CustNo'
Required = True
end
object TableGridDataShipVIA: TStringField
DisplayLabel = 'DBCombo'
DisplayWidth = 13
FieldName = 'ShipVIA'
Size = 7
end
object TableGridDataCheckBox: TBooleanField
DisplayWidth = 10
FieldName = 'CheckBox'
end
end
object DataSourceGridData: TDataSource
DataSet = TableGridData
Left = 2
Top = 328
end
object TableCust: TTable
Active = True
DatabaseName = 'DBDEMOS'
TableName = 'CUSTOMER.DB'
Left = 34
Top = 292
end
object DataSourceCust: TDataSource
DataSet = TableCust
Left = 4
Top = 294
end
object Database1: TDatabase
DatabaseName = 'DemoGrid'
DriverName = 'STANDARD'
KeepConnection = False
LoginPrompt = False
Params.Strings = (
'DEFAULT DRIVER=PARADOX')
SessionName = 'Default'
Left = 72
Top = 296
end
end
在DBGrid的字段编辑器中选择一个字段,设其PickList属性即可
picklist果然好用,但这样就更妙了。
var
focusisthere:boolean;//全局变量
procedure TFormgrid.DBGridpColExit(Sender: TObject);
begin
if FocusIsThere then
begin
with DBGrid do
begin
if (SelectedField.FieldName = '供应商') or (SelectedField.FieldName = '类别')
then begin
Options := Options - [dgAlwaysShowEditor];//----------退出时去除编辑状态 end;
end;
end;
end
procedure TFormgrid.DBGridColEnter(Sender: TObject);
begin
with DBGrid do
begin
if (SelectedField.FieldName = '供应商') or (SelectedField.FieldName = '类别')
then begin
Options := Options + [dgAlwaysShowEditor];//--------------------编辑状态 focusIsThere := True;//-----------------------------------------焦点在这儿
end;
end;
end;
看来现在我可以不用控件了。其实实现lookup型的也一样,在主表上建一个lookup形的字段结合上面的程序也可以实现下拉列表框,但我是用的adodataset