📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, DBTables, Grids, DBGrids;
type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
DBGrid1: TDBGrid;
Query1: TQuery;
Edit1: TEdit;
Edit2: TEdit;
ComboBox1: TComboBox;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Var
BM:TBookMark; //该变量用于在添加记录时把当前记录位置作为一个书签
AddOrNot:Boolean; //该变量用来表示是添加操作还是修改操作,True表示添加
{$R *.dfm}
Procedure DispValue(); //在编辑框中显示当前记录的内容
begin
Form1.Edit1.Text :=Form1.Table1.fieldbyname('好友号').asstring;
Form1.Edit2.Text :=Form1.Table1.fieldbyname('姓名').asstring;
Form1.ComboBox1.Text :=Form1.Table1.fieldbyname('好友类别').asstring;
Form1.Edit3.Text :=Form1.Table1.fieldbyname('年龄').asstring;
Form1.Edit4.Text :=Form1.Table1.fieldbyname('出生日期').asstring;
Form1.Edit5.Text :=Form1.Table1.fieldbyname('电话号码').asstring;
Form1.Edit6.Text :=Form1.Table1.fieldbyname('通信地址').asstring;
Form1.Edit7.Text :=Form1.Table1.fieldbyname('电子邮件').asstring;
Form1.Edit8.Text :=Form1.Table1.fieldbyname('QQ号码').asstring;
Form1.Memo1.Text :=Form1.Table1.fieldbyname('交往大事').asstring;
end;
Procedure ClearValue(); //消除在编辑框中显示的内容
begin
Form1.Edit1.Text :='';
Form1.Edit2.Text :='';
Form1.ComboBox1.Text :='';
Form1.Edit3.Text :='';
Form1.Edit4.Text :='';
Form1.Edit5.Text :='';
Form1.Edit6.Text :='';
Form1.Edit7.Text :='';
Form1.Edit8.Text :='';
Form1.Memo1.Text :='';
end;
Procedure ButtonAddEdit(); //用来设置执行添加或修改操作时各按钮的状态
begin
Form1.Button1.Enabled :=False;
Form1.Button2.enabled:=False;
Form1.Button3.Enabled :=False;
Form1.Button4.Enabled :=False;
Form1.Button5.Enabled :=False;
Form1.Button6.Enabled :=False;
Form1.Button7.Enabled :=False;
Form1.Button8.Enabled :=False;
Form1.Button9.Enabled :=False;
Form1.Button10.Enabled :=True; // 确定按钮可以使用
Form1.Button11.Enabled :=True; //取消按钮可以使用
end;
Procedure ButtonOkCancel();//用来设置执行取消或确定操作时各按钮的状态
begin
Form1.Button1.Enabled :=True;
Form1.Button2.enabled:=True;
Form1.Button3.Enabled :=True;
Form1.Button4.Enabled :=True;
Form1.Button5.Enabled :=True;
Form1.Button6.Enabled :=True;
Form1.Button7.Enabled :=True;
Form1.Button8.Enabled :=True;
Form1.Button9.Enabled :=True;
Form1.Button10.Enabled :=False; // 确定按钮不可以使用
Form1.Button11.Enabled :=False; //取消按钮不可以使用
end;
Procedure Cannotedit();//用来设置各输入的数据控制组件不可输入
begin
Form1.Edit1.readOnly:=True;
Form1.Edit2.readOnly:=True;
Form1.ComboBox1.Enabled :=False;
Form1.Edit3.readOnly:=True;
Form1.Edit4.readOnly:=True;
Form1.Edit5.readOnly:=True;
Form1.Edit6.readOnly:=True;
Form1.Edit7.readOnly:=True;
Form1.Edit8.ReadOnly :=True;
Form1.Memo1.readonly:=True;
end;
Procedure Canedit();//用来设置各输入的数据控制组件可以输入
begin
Form1.Edit1.readOnly:=False;
Form1.Edit2.readOnly:=False;
Form1.ComboBox1.Enabled :=True;
Form1.Edit3.readOnly:=False;
Form1.Edit4.readOnly:=False;
Form1.Edit5.readOnly:=False;
Form1.Edit6.readOnly:=False;
Form1.Edit7.readOnly:=False;
Form1.Edit8.readonly:=False;
Form1.Memo1.ReadOnly :=False;
end;
Procedure DisabledButton(); //使所有的按钮均不可用
begin
Form1.button1.enabled:=False;
Form1.button2.enabled:=False;
Form1.button3.enabled:=False;
Form1.button4.enabled:=False;
Form1.button5.enabled:=False;
Form1.button6.enabled:=False;
Form1.button7.enabled:=False;
Form1.button8.enabled:=False;
Form1.button9.enabled:=False;
Form1.button10.enabled:=False;
Form1.button11.enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
Var
Curdir:string;
begin
getdir(0,Curdir);
table1.DatabaseName:=Curdir; //设置Table1的Databasename为当前目录
table1.Active :=True; //打开Table1
Cannotedit; //设置可输入组件为只读
if table1.RecordCount =0 then //如果数据库表为空
begin
disabledButton;
Button6.Enabled :=True; //只有添加按钮可用
end
else
ButtonOkCancel;
Table1.IndexName :='XM'; //设置查询用的索引名
DispValue;
Query1.DatabaseName:=Curdir; //设置Table1的Databasename为当前目录
end;
procedure TForm1.Button1Click(Sender: TObject); //首记录
begin
Table1.First ;
Button1.Enabled :=False;
Button2.Enabled :=False;
Button3.Enabled :=True;
Button4.Enabled:=True;
DispValue;
end;
procedure TForm1.Button2Click(Sender: TObject); //前移
begin
Table1.Prior ;
button3.Enabled :=True;
Button4.Enabled :=True;
if table1.Bof then //判断是否到达文件头
begin
table1.First ;
button1.Enabled :=False;
Button2.Enabled :=False;
end;
DispValue;
end;
procedure TForm1.Button3Click(Sender: TObject);//后移
begin
table1.Next ;
Button1.Enabled :=True;
Button2.Enabled :=True;
if table1.Eof then //判断是否到达文件尾
begin
Button3.Enabled :=False;
Button4.Enabled :=False;
table1.Last ;
end;
DispValue;
end;
procedure TForm1.Button4Click(Sender: TObject); //末记录
begin
Table1.Last ;
Button1.Enabled :=True;
Button2.Enabled :=True;
Button3.Enabled :=False;
Button4.Enabled:=False;
DispValue;
end;
procedure TForm1.Button5Click(Sender: TObject); //退出
begin
table1.Close ;
Application.Terminate ;
end;
procedure TForm1.Button6Click(Sender: TObject); //添加
begin
ClearValue;
BM:=table1.GetBookmark ; //记下当前记录位置
Canedit; //允许输入
ButtonAddEdit; //设置按钮状态
AddOrNot:=True; //是增加操作
end;
procedure TForm1.Button7Click(Sender: TObject); //修改
begin
AddOrNot:=False; // 不是增加操作
CanEdit;
ButtonAddEdit;
end;
procedure TForm1.Button8Click(Sender: TObject); //删除
var
hyh:string;
begin
if Application.MessageBox('真的要删除吗?','删除提示框',MB_OKCANCEL)=IDOK THEN
begin
hyh:=Table1.FieldbyName('好友号').AsString ;
query1.SQL.Clear ;
query1.SQL.Add('Delete From TXL WHERE 好友号=(:A1)');
QUERY1.Params[0].AsString :=hyh;
QUERY1.ExecSQL ;
TABLE1.Refresh ;
DispValue;
end;
end;
procedure TForm1.Button9Click(Sender: TObject); //按姓名查询
var
xm: string;
begin
xm:=trim(inputbox('输入姓名','请输入姓名','')); //输入要查询的人的姓名
with table1 do
begin
setkey; //设置查询状态
FieldByName('姓名').AsString :=xm;//设置要查询的姓名
if not GotoKey then //如果没有找到
ShowMessage('无符合条件的记录');
end
end;
procedure TForm1.Button10Click(Sender: TObject); //确定操作
var
hyh:string;
begin
If (length(trim(Edit1.text))=0) then //好友号为空
begin
ShowMessage('必须输入好友号');
edit1.SetFocus ;
end
else
begin
if AddOrNot then
begin
Query1.SQL.Clear ;
Query1.SQL.Add('INSERT INTO 通讯录(好友号,姓名,好友类别,年龄,出生日期,电话号码,通信地址,电子邮件,QQ号码,交往大事)') ;
Query1.SQL.Add('Values ((:P1),(:P2),(:P3),(:P4),(:P5),(:P6),(:P7),(:P8),(:P9),(:P10))');
end
else
begin
hyh:=Table1.fieldbyname('好友号').AsString ;
Query1.SQL.Clear ;
query1.SQL.Add('Update 通讯录 SET 好友号=(:P1),姓名=(:P2),好友类别=(:P3)');
query1.SQL.Add(',年龄=(:P4),出生日期=(:P5),电话号码=(:P6)');
query1.SQL.Add(',通信地址=(:P7),电子邮件=(:p8),QQ号码=(:P9),交往大事=(:P10)');
Query1.SQL.Add('WHERE 好友号=(:P11)');
QUERY1.Params[10].AsString:=hyh ;
end;
Query1.Params[0].AsString:=Edit1.Text ;
Query1.Params[1].AsString :=Edit2.Text ;
Query1.Params[2].Asstring:=Combobox1.Text ;
Query1.Params[3].AsSmallInt :=strtoint(Edit3.Text );
Query1.Params[4].AsDate :=strtodate(edit4.Text);
Query1.Params[5].AsString :=Edit5.Text;
Query1.Params[6].AsString :=Edit6.Text ;
Query1.Params[7].AsString :=Edit7.Text ;
Query1.Params[8].AsString :=Edit8.Text ;
Query1.Params[9].AsString :=Memo1.Text ;
Query1.ExecSQL ;
CannotEdit;
ButtonOkCancel;
Table1.Refresh ;
end;
end;
procedure TForm1.Button11Click(Sender: TObject); //取消操作
begin
If AddOrNot then //如果刚才执行的是增加操作
table1.GotoBookmark(Bm); //把指针移到原来的位置
Cannotedit; //不允许输入
ButtonOkCancel; //设置按钮的状态
DispValue();
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
DispValue;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -