就是下面这段代码,我怎么把他弄到一个控件里边
unit uaccount;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids, DBGrids, DB, ADODB;
type
TForm1 = class(TForm)
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DBGrid1CellClick(Column: TColumn);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dbname:string; //定义数据库变量名称
sername:string; //定义数据库服务器变量名称
tabname:string; //定义该FORM中使用的数据表名称
pic1,pic2,pic3:tbitmap; //三个图片为布尔型值列准备
i:integer; // 为布尔型值的列索引准备一个循环变量
n:string; // 为布尔型值的列名集合准备一个字符串型变量
x,y:Integer; //布尔值列画图的坐标变量
k:integer; //定义一个变量等下用来设定初始列宽
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.WindowState:=wsMaximized; //最大化
// wsMinimized; //最小化
// wsNormal; //默认
form1.AutoScroll:=false;
form1.autosize:=false;
form1.Caption:='人员权限设置';
pic1:=TBitmap.Create;
pic2:=TBitmap.Create;
pic3:=TBitmap.Create;
pic1.LoadFromFile('Bitmap1.bmp'); // 打勾图标,代表 true
pic2.LoadFromFile('Bitmap2.bmp'); // 打叉图标,代表 false
pic3.LoadFromFile('Bitmap3.bmp'); // 空白图标,用来清除数据字段
dbname:='ztaifdata'; //为数据库变量赋值
sername:='zy-server'; //为数据库服务器名称变量赋值
tabname:='z_userpopedom'; //为当前使用数据表赋值
adotable1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=True;'+
'User ID=sa;Initial Catalog='+
dbname+
';Data Source='+
sername;
//为ADO控件指定数据连接源
adotable1.TableName:=tabname; //将表名变量应用到ADOTABLE属性中
datasource1.DataSet:=adotable1; //设置数据来源
dbgrid1.DataSource:=datasource1; //设置数据网格使用数据来源
dbgrid1.Options:= [ //设置DBGRID属性
dgEditing, //网格显示是否处于编辑状态
// dgalwaysShowEditor, //是否一直处于编辑模式
dgTitles, //是否显示网格的上标题
dgIndicator, //是否显示网格的左侧标题
dgColumnResize, //网格列宽是否可以改变
dgColLines, //网格列竖线是否显示
dgRowLines, //网格横线是否显示
dgTabs, //是否可以使用TAB键
// dgRowsSelect, //是否可以整行选定
dgConfirmDelete, //是否确认确除
dgCancelOnExit //是否退出取消操作
// dgMultiSelect //是否可以复选_与dgrowSelect同时使用生效
];
adotable1.Active:=true; //激活ADOTABLE
begin
for k:=0 to dbgrid1.Columns.Count-1 do
begin
dbgrid1.Columns[k].Width:=length(dbgrid1.Columns[k].Field.AsString)*10+5;
dbgrid1.Columns[k].Alignment:=taCenter; //设置列值居中显示
// taLeftJustify //自左至右显示
// taRightJustify //自右至左显示
dbgrid1.Columns[k].Title.Alignment:=taCenter; //列标题居中显示
end;
end;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
n:='';
for i :=0 to dbgrid1.Columns.Count-1 do
if dbgrid1.Columns.Field is tbooleanfield
then
n:=n+','+dbgrid1.Fields.DisplayName;
n:=n+','; //判断那些列是布尔型的值并把列名写入一个变量n
if pos(','+Column.FieldName+',',n)>0 then // 将布尔型值字段清除成空白
begin
DBGrid1.Canvas.StretchDraw(Rect, pic3);
x:=(Rect.Right-Rect.Left-pic1.Width) div 2;
y:=(Rect.Bottom-Rect.Top-pic1.Height) div 2;
if (Column.Field.DisplayText='False') then
DBGrid1.Canvas.Draw(Rect.Left+x, Rect.Top+y, pic1)
else
DBGrid1.Canvas.Draw(Rect.Left+x, Rect.Top+y, pic2);
end; // 如果字段值是true,则画'打勾'图标,否则画'打叉'图标
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if pos(DBGrid1.SelectedField.FieldName+',',n)<=0 then
begin
dbgrid1.Options:= [ //设置DBGRID属性
dgEditing, //网格显示是否处于编辑状态
// dgalwaysShowEditor, //是否一直处于编辑模式
dgTitles, //是否显示网格的上标题
dgIndicator, //是否显示网格的左侧标题
dgColumnResize, //网格列宽是否可以改变
dgColLines, //网格列竖线是否显示
dgRowLines, //网格横线是否显示
dgTabs, //是否可以使用TAB键
// dgRowsSelect, //是否可以整行选定
dgConfirmDelete, //是否确认确除
dgCancelOnExit //是否退出取消操作
// dgMultiSelect //是否可以复选_与dgrowSelect同时使用生效
];
end;
begin
if pos(DBGrid1.SelectedField.FieldName+',',n)>0 then
begin
dbgrid1.Options:= [ //设置DBGRID属性
// dgEditing, //网格显示是否处于编辑状态
// dgalwaysShowEditor, //是否一直处于编辑模式
dgTitles, //是否显示网格的上标题
dgIndicator, //是否显示网格的左侧标题
dgColumnResize, //网格列宽是否可以改变
dgColLines, //网格列竖线是否显示
dgRowLines, //网格横线是否显示
dgTabs, //是否可以使用TAB键
// dgRowsSelect, //是否可以整行选定
dgConfirmDelete, //是否确认确除
dgCancelOnExit //是否退出取消操作
// dgMultiSelect //是否可以复选_与dgrowSelect同时使用生效
];
DBGrid1.DataSource.DataSet.Edit; // 设置DataSet为修改状态
if CompareStr(DBGrid1.SelectedField.DisplayText,'True')=0 then
DBGrid1.SelectedField.AsString:='False'
else // 将数据反向设置
DBGrid1.SelectedField.AsString:='True';
DBGrid1.DataSource.DataSet.Post; // 将修改过数据写入数据库
end;
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
dbgrid1.anchors:=[akLeft,akTop,akRight,akBottom]; //设置DBGRID四边锚点
end;
end.