如何在DBGrid中加入CheckBox控件
解决方案 »
- edit3.Text:=Data.ADOQMback.
- help----怎么获取form1中dbgrid所选择的那条记录的信息并在另外一个form2里显示?
- TreeView排序
- jinjazz成为班猪,散分祝贺!
- [Fatal Error] Required package 'dxPScxGridLnkD7' not found
- 如何让dbgrid水平滚动条不自动回到最左端
- 靠!幸好有VB帮忙。
- mousemove的問題
- delphi如何输出饼状图
- 如何将ADOQuery中的记录导到EXCEL表中,delphi5中的控件不知如何使用?
- 请教(在搜索结果中进行再搜索)功能的实现!
- 基础问题请教
a0:=TStringList.Create;
repeat
begin
a0.Add(DM.adoquery1.FieldByName('CP_ID').asstring);
DM.adoquery1.Next;
end;
until DM.adoquery1.Eof;
DM.adoquery1.Close;
DBGrid1.Columns[0].PickList:=a0;
a0.Free;
选择:智能ABC输入法,输入V1(V字符+数字字符1),你看到了吗,出现了很多奇怪的字符,可惜没有见到√,不要急,按PageDown四下,第8个就是。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls;type
TForm1 = class(TForm)
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
ADOQuery1: TADOQuery;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrid1ColEnter(Sender: TObject);
procedure DBGrid1ColExit(Sender: TObject);
procedure SaveBoolean;
procedure DBGrid1CellClick(Column: TColumn);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
OriginalOptions:TDBGridOptions;
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.Brush.Color:=clWhite;
DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle,
Rect,
DFC_BUTTON,
CtrlState[Column.Field.AsBoolean]);
end;end;procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
//确保该栏是逻辑字段
if DBGrid1.SelectedField.DataType = ftBoolean then
begin
OriginalOptions:= DBGrid1.Options;
DBGrid1.Options:= DBGrid1.Options - [dgEditing];
end;
end;procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
//确保该栏是逻辑字段
if DBGrid1.SelectedField.DataType = ftBoolean then
DBGrid1.Options := OriginalOptions;
end;procedure TForm1.SaveBoolean;
begin
DBGrid1.SelectedField.DataSet.Edit;
DBGrid1.SelectedField.AsBoolean:=not DBGrid1.SelectedField.AsBoolean;
DBGrid1.SelectedField.DataSet.Post;
end;procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if DBGrid1.SelectedField.DataType=ftBoolean then
SaveBoolean;
end;procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_SPACE then
SaveBoolean;
end;end.