在子窗體中,我增加了一個關閉按鈕close,其代碼如下:
procedure Tfrmaddgoods.btncloseClick(Sender: TObject);
begin
Close;
end;
窗體類型:fsMDIChild但是不能關閉,只能最小化,我查看了相關資料,好像只要close就行,如是hide就隱藏.本窗體代碼如下:
unit addgoods;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;type
Tfrmaddgoods = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
articleid: TEdit;
price: TEdit;
number: TEdit;
Label5: TLabel;
btnok: TButton;
btnclose: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
stock: TLabel;
procedure btnokClick(Sender: TObject);
procedure btncloseClick(Sender: TObject);
private
{ Private declarations }
function ismoney(s:string):boolean; //判斷S可否轉化成貨幣類型
function isnumber(s:string):boolean; //判斷S可否轉化成數值類型
public
{ Public declarations }
end;var
frmaddgoods: Tfrmaddgoods;implementation{$R *.dfm}
function isnumeric(c:char):boolean;
begin
result:=(ord(c)>47) and (ord(c)<58);
end;
//判斷S可否轉化為成貨幣類型:
function Tfrmaddgoods.ismoney(s:string):boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isnumeric(s[i])=false) and (s[i]<>'.') then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
//判斷S可否轉化為成數值類型:
function Tfrmaddgoods.isnumber(s:string):boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isnumeric(s[i])=false) and (s[i]<>'.') then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
procedure Tfrmaddgoods.btnokClick(Sender: TObject);
var
canadd:boolean;
i:integer;
begin
canadd:=false; {能否增加商品的標志}
if isnumber(articleid.Text)=false then
begin
messagedlg('"商品編號"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=articleid;
abort;
end;
try
//檢查"商品編號",如果沒有這種商品則報錯:
i:=strtoint(articleid.text);
with table1 do
begin
first;
while not eof do
begin
if fields.FieldByName('商品編號').Asinteger=i then
begin
canadd:=true;
break;
end;
next;
end;
end;
if canadd=false then
begin
messagedlg('"商品編號"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=articleid;
abort;
end;
//檢查"單價",如果不是貨幣字符串則報錯:
if ismoney(price.text)=false then
begin
messagedlg('"單價"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=price;
abort;
end;
//檢查"進貨數量",如果不是數值類型則報錯:
if isnumber(number.text)=false then
begin
messagedlg('"進貨數量"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=number;
abort;
end; //根據商品編號修改商品表項:
with table1 do
begin
edit;
if price.text<>'' then
fieldvalues['單價']:=price.text;
fieldvalues['存貨']:=fields.fieldbyname('存貨').AsInteger+strtoint(number.text);
stock.Caption:=fields.fieldbyname('存貨').AsString;
post;
end;
except
on ex:econverterror do
begin
messagedlg('輸入錯誤,請重試!',mtwarning,[mbok],0);
exit;
end;
end; {end of try}
messagedlg('進貨成功!',mtwarning,[mbok],0);
//一些請屏操作:
articleid.text:='';
price.text:='';
number.Text:='';
stock.Caption:='';
end;procedure Tfrmaddgoods.btncloseClick(Sender: TObject);
begin
Close;
end;
end.
procedure Tfrmaddgoods.btncloseClick(Sender: TObject);
begin
Close;
end;
窗體類型:fsMDIChild但是不能關閉,只能最小化,我查看了相關資料,好像只要close就行,如是hide就隱藏.本窗體代碼如下:
unit addgoods;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;type
Tfrmaddgoods = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
articleid: TEdit;
price: TEdit;
number: TEdit;
Label5: TLabel;
btnok: TButton;
btnclose: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Table1: TTable;
stock: TLabel;
procedure btnokClick(Sender: TObject);
procedure btncloseClick(Sender: TObject);
private
{ Private declarations }
function ismoney(s:string):boolean; //判斷S可否轉化成貨幣類型
function isnumber(s:string):boolean; //判斷S可否轉化成數值類型
public
{ Public declarations }
end;var
frmaddgoods: Tfrmaddgoods;implementation{$R *.dfm}
function isnumeric(c:char):boolean;
begin
result:=(ord(c)>47) and (ord(c)<58);
end;
//判斷S可否轉化為成貨幣類型:
function Tfrmaddgoods.ismoney(s:string):boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isnumeric(s[i])=false) and (s[i]<>'.') then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
//判斷S可否轉化為成數值類型:
function Tfrmaddgoods.isnumber(s:string):boolean;
var
i:integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if (isnumeric(s[i])=false) and (s[i]<>'.') then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end;
procedure Tfrmaddgoods.btnokClick(Sender: TObject);
var
canadd:boolean;
i:integer;
begin
canadd:=false; {能否增加商品的標志}
if isnumber(articleid.Text)=false then
begin
messagedlg('"商品編號"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=articleid;
abort;
end;
try
//檢查"商品編號",如果沒有這種商品則報錯:
i:=strtoint(articleid.text);
with table1 do
begin
first;
while not eof do
begin
if fields.FieldByName('商品編號').Asinteger=i then
begin
canadd:=true;
break;
end;
next;
end;
end;
if canadd=false then
begin
messagedlg('"商品編號"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=articleid;
abort;
end;
//檢查"單價",如果不是貨幣字符串則報錯:
if ismoney(price.text)=false then
begin
messagedlg('"單價"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=price;
abort;
end;
//檢查"進貨數量",如果不是數值類型則報錯:
if isnumber(number.text)=false then
begin
messagedlg('"進貨數量"輸入錯誤,請重試!',mtwarning,[mbok],0);
activecontrol:=number;
abort;
end; //根據商品編號修改商品表項:
with table1 do
begin
edit;
if price.text<>'' then
fieldvalues['單價']:=price.text;
fieldvalues['存貨']:=fields.fieldbyname('存貨').AsInteger+strtoint(number.text);
stock.Caption:=fields.fieldbyname('存貨').AsString;
post;
end;
except
on ex:econverterror do
begin
messagedlg('輸入錯誤,請重試!',mtwarning,[mbok],0);
exit;
end;
end; {end of try}
messagedlg('進貨成功!',mtwarning,[mbok],0);
//一些請屏操作:
articleid.text:='';
price.text:='';
number.Text:='';
stock.Caption:='';
end;procedure Tfrmaddgoods.btncloseClick(Sender: TObject);
begin
Close;
end;
end.
MDIFORM.Free;
MDIFORM:=nil;
就可以了
procedure TfrmStainfo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmStaInfo := nil;
end;