📄 inheritf.pas
字号:
unit inheritF;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ComCtrls, ToolWin, StdCtrls, Buttons, ExtCtrls, DB,
ADODB, Grids, DBGrids;
type
Tinherit = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
BitBtn1: TBitBtn;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ImageList1: TImageList;
DBGrid1: TDBGrid;
Panel2: TPanel;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
//val为1表示新增删除等按钮等按钮处于enable状态,保存取消按钮处于
//非enable状态,val为0表示情况相反.
procedure SetButton(val:integer);
end;
var
inherit: Tinherit;
implementation
{$R *.dfm}
uses dataconnect;
//显示数据表中当前数据的数量
procedure Tinherit.DataSource1DataChange(Sender: TObject; Field: TField);
begin
//显示数据数量
label2.Caption:=inttostr(adotable1.RecordCount);
end;
//跳到第一条记录
procedure Tinherit.ToolButton1Click(Sender: TObject);
begin
datasource1.DataSet.First;
end;
//跳到上一条记录
procedure Tinherit.ToolButton2Click(Sender: TObject);
begin
datasource1.DataSet.Prior;
end;
//跳到下一条记录
procedure Tinherit.ToolButton3Click(Sender: TObject);
begin
datasource1.DataSet.Next;
end;
//跳到最后一条记录
procedure Tinherit.ToolButton4Click(Sender: TObject);
begin
datasource1.DataSet.Last;
end;
//新增记录
procedure Tinherit.ToolButton6Click(Sender: TObject);
begin
datasource1.DataSet.Append;
SetButton(0);
end;
//修改当前记录
procedure Tinherit.ToolButton7Click(Sender: TObject);
begin
datasource1.Edit;
SetButton(0);
end;
//删除当前记录
procedure Tinherit.ToolButton8Click(Sender: TObject);
begin
if application.MessageBox('是否删除记录?','确认',MB_OKCANCEL)=IDOK then
datasource1.DataSet.Delete;
end;
//确定所作操作
procedure Tinherit.ToolButton9Click(Sender: TObject);
begin
datasource1.DataSet.Post;
SetButton(1);
end;
//取消当前操作
procedure Tinherit.ToolButton10Click(Sender: TObject);
begin
datasource1.DataSet.Cancel;
SetButton(1);
end;
//关闭窗体
procedure Tinherit.ToolButton11Click(Sender: TObject);
begin
close;
end;
//设置按钮状态enable or false
procedure Tinherit.SetButton(val: integer);
begin
if val=0 then
(*根据如果当前没有记录,将新增,修改,删除以及首记录,上记录,下记录,尾记录等按钮enable设置为false
而将保存,取消两按钮enable属性设置为true*)
begin
toolbutton1.Enabled:=false;
toolbutton2.Enabled:=false;
toolbutton3.Enabled:=false;
toolbutton4.Enabled:=false;
toolbutton6.Enabled:=false;
toolbutton7.Enabled:=false;
toolbutton8.Enabled:=false;
toolbutton10.Enabled:=true;
toolbutton11.Enabled:=true;
//打开数据库控件的enable属性 准备后面修改、添加、删除记录
panel2.Enabled:=true;
end
else
//当前有记录,则将新增,修改,删除以及首记录,上记录,下记录,尾记录等按钮enable设置为true
//而将保存,取消两按钮enable属性设置为false.
begin
toolbutton1.Enabled:=true;
toolbutton2.Enabled:=true;
toolbutton3.Enabled:=true;
toolbutton4.Enabled:=true;
toolbutton6.Enabled:=true;
toolbutton7.Enabled:=true;
toolbutton8.Enabled:=true;
toolbutton10.Enabled:=false;
toolbutton11.Enabled:=false;
//关闭板上数据库控件的enable属性
panel2.Enabled:=false;
end;
end;
//设置关闭窗体时的动作
procedure Tinherit.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
//根据窗口中查询条件的设置来查询
procedure Tinherit.BitBtn1Click(Sender: TObject);
var
//设置一个整数,其二进制的三位分别代表查询条件1到3
//当某一个查询条件可见,也就是要使用这个条件时,相应的位置为1,否则置0
//例如第1,2个条件要使用而第3个不使用时,该整数二进制的值为110,也就是6
condition:integer;
begin
ToolButton6.Enabled:=true;
//初始化该参数,设为7,二进制数为111
condition:=7;
//如果第1个条件不可用,则将该位置0,方法是和整数3(二进制011)进行与操作
if label3.Visible=false then
condition:=(condition)and(3);
//如果第2个条件不可用,则将该位置0,方法是和整数5(二进制101)进行与操作
if label4.Visible=false then
condition:=(condition)and(5);
//如果第3个条件不可用,则将该位置0,方法是和整数6(二进制110)进行与操作
if label5.Visible=false then
condition:=(condition)and(6);
if condition=7 then//三个查询条件都存在的情况
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from '+adotable1.TableName);
adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')');
adoquery1.SQL.Add('and('+label4.Caption+' like ''%'+edit2.Text+'%'')');
adoquery1.SQL.Add('and('+label5.Caption+' like ''%'+edit3.Text+'%'')');
adoquery1.Open;
//将查询得到的数据复制到数据表中
adotable1.Clone(adoquery1,ltUnspecified);
end;
if condition=6 then//只存在两个查询条件的情况
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from '+adotable1.TableName);
adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')');
adoquery1.SQL.Add('and('+label4.Caption+' like ''%'+edit2.Text+'%'')');
adoquery1.Open;
//将查询得到的数据复制到数据表中
adotable1.Clone(adoquery1,ltUnspecified);
end;
if condition=4 then //只存在一个查询条件的情况
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from '+adotable1.TableName);
adoquery1.SQL.Add(' where('+label3.Caption+' like ''%'+edit1.Text+'%'')');
adoquery1.Open;
//将查询得到的数据通过复制到数据库中
adotable1.Clone(adoquery1,ltUnspecified);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -