📄 unit19.pas
字号:
unit Unit19;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, ADODB;
type
Trctc = class(TForm)
Label1: TLabel;
cardid: TEdit;
Label3: TLabel;
car_addressid: TComboBox;
Label2: TLabel;
carid: TEdit;
Label5: TLabel;
money: TEdit;
Label4: TLabel;
car_address: TEdit;
Label6: TLabel;
carclass: TComboBox;
stopok: TBitBtn;
DBGrid1: TDBGrid;
Label7: TLabel;
ds_customers: TDataSource;
adot_card: TADOTable;
adot_caraddress: TADOTable;
adoq_car: TADOQuery;
ADOQuery2: TADOQuery;
adot_carstop: TADOTable;
adot_carclass: TADOTable;
procedure cardidKeyPress(Sender: TObject; var Key: Char);
procedure stopokClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure car_addressidChange(Sender: TObject);
procedure caridExit(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
rctc: Trctc;
FormOldWid:Integer;
implementation
uses Unit11, Unit14, Unit1, Unit2;
{$R *.dfm}
procedure clearface();
var
addressid: string;
begin
with rctc do
begin
adot_caraddress.Close;
adot_caraddress.Filtered:=false;
adot_caraddress.Filter:='addresscase=0' ;
adot_caraddress.Filtered:=true;
adot_caraddress.Open;
adot_caraddress.First;
cardid.Clear;
money.Clear;
car_address.Clear;
car_addressid.Items.Clear;
carid.Clear;
carclass.Items.Clear;
if adot_caraddress.IsEmpty then
showmessage('车位已满!');
while not(adot_caraddress.Eof) do
begin
addressid:=adot_caraddress.FieldByName('addressid').value;
car_addressid.Items.Add(addressid) ;
adot_caraddress.Next;
end ; //在car_addressid中显示可用的车位
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select cardid as 卡号,usename as 用户名,sex as 性别,age as 年龄,tele as 联系电话,address as 联系电话 from customers');
adoquery2.Open;//显示Grid中的记录
adot_carclass.Open;
adot_carclass.First;
while not(adot_carclass.Eof) do
begin
carclass.Items.Add(adot_carclass.FieldValues['carclass']) ;
adot_carclass.Next;
end ; //在carclass表中显示数据库的车辆的类型
cardid.SetFocus;
end;
end;
Function checkcardid(card: String):boolean;
var
lmoney:string;
begin
checkcardid:=false;
with rctc do
begin
if trim(card)<>'' then
begin
adot_card.Open;
if not adot_card.Locate('cardid',card,[locaseInsensitive]) then
begin
showmessage('此停车卡无效,请重新输入卡号') ;
cardid.Clear;
cardid.SetFocus;
end
else
begin
money.Text:=adot_card.fieldByName('storemoney').Value; //显示此卡的余额
checkcardid:=true;
form14.adt_set.First;
lmoney:=trim(form14.adt_set.FieldByName('lmoney').Value);
if adot_card.fieldByName('storemoney').Value<strtoint(lmoney) then
// showmessage('余额少于'+lmoney+'元,请及时充值');
messagedlg('余额少于'+lmoney+'元,请及时充值',mtconfirmation,[mbok],0);
end ;
adot_card.Close;
end
else
begin
money.Text:='';
messagedlg('请输入卡号',mtconfirmation,[mbok],0);
end;
adot_card.Open;
end;
end;
procedure Trctc.stopokClick(Sender: TObject);
begin
if not checkcardid(cardid.Text) then
begin
cardid.SetFocus;
end
else if(carid.Text='') then
begin
messagedlg('请输入车牌号',mtconfirmation,[mbok],0);
carid.SetFocus;
end
else if (car_address.Text='') then
begin
messagedlg('请选择车位号',mtconfirmation,[mbok],0);
car_addressid.SetFocus;
end
else if(carclass.Text='') then
begin
messagedlg('请选择停车类型',mtconfirmation,[mbok],0);
carclass.SetFocus;
end
else
begin
adot_caraddress.Open;
adot_caraddress.Locate('addressid',car_addressid.Text,[locaseInsensitive]);
adot_caraddress.Delete;
adot_caraddress.Edit;
adot_caraddress.AppendRecord([car_addressid.Text,car_address.Text,1]);
//更改车位为在使用
adoq_car.Close;
adoq_car.SQL.Clear;
adoq_car.SQL.Add('insert into car(carid,carclass) values(:carid,:carclass)');
adoq_car.Parameters.ParamByName('carid').Value:=carid.Text;
adoq_car.Parameters.ParamByName('carclass').Value:=carclass.Text;
adoq_car.ExecSQL;
//增加停车场中车的信息
adot_carstop.Open;
adot_carstop.Edit;
adot_carstop.AppendRecord([carid.Text,cardid.Text,car_addressid.Text,now,nil,nil,nil,user]);
//在停车表中加入一条停车记录
clearface();
end ;
end;
procedure Trctc.cardidKeyPress(Sender: TObject; var Key: Char);
var
cardidstring:String;
begin
if not(key in['0'..'9','a'..'z',#008]) then
begin
key:=#0;
end
else
begin
cardidstring:=trim(cardid.Text);
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select cardid as 卡号,usename as 用户名,sex as 性别,age as 年龄,tele as 联系电话,address as 联系电话 from customers where cardid like :cardid');
adoquery2.Parameters.ParamByName('cardid').Value:=cardidstring+'%';
adoquery2.Open;
end;
end;
procedure Trctc.FormShow(Sender: TObject);
begin
FormOldWid:=self.Width; //组件自动变大小
end;
procedure Trctc.car_addressidChange(Sender: TObject);
var
addressid,address: string;
begin
if car_addressid.Text<>'' then
begin
addressid:=car_addressid.Text;
adot_caraddress.Locate('addressid',addressid,[loCaseInsensitive]);
address:=adot_caraddress.FieldByName('address').value ;
car_address.Text:=address; //显示addressid对应的车位地址
end
end;
procedure Trctc.caridExit(Sender: TObject);
begin
begin
if carid.Text<>'' then
begin
adot_carstop.Close;
adot_carstop.Open;
if adot_carstop.Locate('carid',carid.Text,[locaseInsensitive]) then
begin
showmessage('此车牌已在停车场使用,请换个车牌') ;
carid.Clear;
carid.SetFocus;
end
end
end;
end;
procedure Trctc.FormClose(Sender: TObject; var Action: TCloseAction);
begin
adot_caraddress.Close;
adot_carclass.Close;
adot_carstop.Close;
adot_card.Close;
rctc:=nil;
Action:=caFree;
end;
procedure Trctc.FormResize(Sender: TObject);
begin
if FormOldWid>0 then
begin
ScaleBy(self.Width,FormOldWid);
FormOldWid:=self.Width;
end ;
end;
procedure Trctc.DBGrid1CellClick(Column: TColumn);
begin
if not adoquery2.IsEmpty then
begin
cardid.Text:=adoquery2.FieldByName('卡号').Value;
checkcardid(adoquery2.FieldByName('卡号').Value);
end;
end;
procedure Trctc.FormActivate(Sender: TObject);
begin
adot_caraddress.Open;
adot_carclass.Open;
adot_carstop.Open;
adot_card.Open;
clearface();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -