在子窗體中,我增加了一個關閉按鈕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.