11

unit s_xmqd_n;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TFlatButtonUnit, StdCtrls, Grids, DBGrids, ExtCtrls, DB, ADODB,
  Menus;type
  Tfrm_xmqd_n = class(TForm)
    Label1: TLabel;
    FlatButton1: TFlatButton;
    Panel1: TPanel;
    DBGrid1: TDBGrid;
    adoqry_mx: TADOQuery;
    dts_mx: TDataSource;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1DblClick(Sender: TObject);
  private
    FTempParent:TWinControl;  //保存子窗体的父;
    procedure loaded;override;
    procedure CreateParams(var Params: TCreateParams); override;  public
    { Public declarations }
    constructor Create(AOwner: TComponent); overload; override;
    constructor create(AOwner:TComponent;AParent:TWinControl);reintroduce;overload;
  end;var
  frm_xmqd_n: Tfrm_xmqd_n;implementation
  uses frm_dm_n, s_xmdj_n, s_search_n;
{$R *.dfm}constructor Tfrm_xmqd_n.Create(AOwner: TComponent);
begin
 // FAsChild := False;
  inherited Create(AOwner);
end;
constructor Tfrm_xmqd_n.create(AOwner: TComponent; AParent: TWinControl);
begin  //赋予子窗体的父,继承FORM2的构造方法;
  FTempParent:=AParent;
  inherited Create(Owner);
end;
procedure Tfrm_xmqd_n.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style:=params.Style or WS_CHILD; //设置窗体的style
end;procedure Tfrm_xmqd_n.loaded;
begin
  inherited;  //设置子窗体属性;
  align:=alclient;
  BorderStyle:=bsNone;
  BorderIcons:=[];
  Parent:=FTempParent;
  Position:=poDefault;
end;
procedure Tfrm_xmqd_n.N1Click(Sender: TObject);
begin
  try
     frm_xmdj_n := Tfrm_xmdj_n.Create(Application);
     frm_xmdj_n.adoqry_xmdj_mx.Close;
     frm_xmdj_n.adoqry_xmdj_mx.SQL.Clear;
     frm_xmdj_n.adoqry_xmdj_mx.SQL.Add('select * from t_pro where ProID =' + adoqry_mx.fieldbyname('ProID').AsString );
     frm_xmdj_n.adoqry_xmdj_mx.Open;
     frm_xmdj_n.adoqry_xmdj_mx.Edit;
     frm_xmdj_n.ShowModal;
     frm_xmdj_n.Free;
     frm_xmdj_n := nil;
  except
  on exception do
  begin
   Showmessage('打开出错!');
   exit;
  end;
  end;
end;procedure Tfrm_xmqd_n.N2Click(Sender: TObject);
begin
 if MessageDlg('确定要删除吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  begin
   try
   adoqry_mx.Delete;
   adoqry_mx.Close;
   adoqry_mx.Open;
//   Label2.Caption := inttostr(adoqry_mx.RecordCount);
   except
    On Exception do
    begin
     MessageDlg('成功删除!',mtInformation ,[mbOK],0);
     adoqry_mx.Close;
     adoqry_mx.Open;
  //   Label2.Caption := inttostr(adoqry_mx.RecordCount);
     exit;
    end;
   end;   {
   adocmd_mx.Execute;
   adocmd_my.Execute;
   adoqry_mx.Close;
   adoqry_mx.Open;
   Label2.Caption := inttostr(adoqry_mx.RecordCount);
   {
   adoqry_mx.Delete;
   adoqry_my.Delete;
   adoqry_mx.Close;
   adoqry_mx.Open;
   Label2.Caption := inttostr(adoqry_mx.RecordCount);
   }
  end;
end;procedure Tfrm_xmqd_n.N3Click(Sender: TObject);
begin
  adoqry_mx.Close;
  adoqry_mx.Open;
end;procedure Tfrm_xmqd_n.N4Click(Sender: TObject);
begin
  adoqry_mx.Close;
  adoqry_mx.SQL.Clear;
  adoqry_mx.SQL.Add('select * from t_pro');
  adoqry_mx.Open;
end;procedure Tfrm_xmqd_n.N5Click(Sender: TObject);
begin
  frm_search_n := Tfrm_search_n.Create(Application);
  frm_search_n.ShowModal;
  frm_search_n.Free;
  frm_search_n := nil;
end;procedure Tfrm_xmqd_n.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  action:=cafree;
  self := nil;
end;procedure Tfrm_xmqd_n.DBGrid1DblClick(Sender: TObject);
begin
  try
     frm_xmdj_n := Tfrm_xmdj_n.Create(Application);
     frm_xmdj_n.adoqry_xmdj_mx.Close;
     frm_xmdj_n.adoqry_xmdj_mx.SQL.Clear;
     frm_xmdj_n.adoqry_xmdj_mx.SQL.Add('select * from t_pro where ProID =' + adoqry_mx.fieldbyname('ProID').AsString );
     frm_xmdj_n.adoqry_xmdj_mx.Open;
     frm_xmdj_n.ShowModal;
     frm_xmdj_n.Free;
     frm_xmdj_n := nil;
  except
  on exception do
  begin
   Showmessage('打开出错!');
   exit;
  end;
  end;
end;end.

解决方案 »

  1.   

    procedure Tfrm_main.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var
       Form2 : Tform2;
    begin
          {
           ShowMessage(inttostr(Node.Level));
           Node.MoveTo();
           ShowMessage(inttostr(Node.Index));
           }
       //  ShowMessage(Panel1.Parent.Name);
       //  FindComponent()
         if Node.Parent <> nil then
         begin
           if Node.Parent.Text = '类型' then
           begin
            if not assigned(frm_pic_n) then
            begin
             frm_pic_n := Tfrm_pic_n.create(Application);
             frm_pic_n:=tfrm_pic_n.create(self,panel1);
             frm_pic_n.Label2.Caption := Node.Parent.Text;
             frm_pic_n.str.Caption := Node.Text;
             frm_pic_n.XsPicture(1);
             frm_pic_n.Show;        end
            else
            begin
             frm_pic_n:=tfrm_pic_n.create(self,panel1);
             frm_pic_n.Label2.Caption := Node.Parent.Text;
             frm_pic_n.str.Caption := Node.Text;
             frm_pic_n.XsPicture(1);
             frm_pic_n.Show;        end;
           end;
         end;
           if treeview1.Selected.Text = '项目浏览' then
           begin
            if faname <> nil then
            faname.close;
            if not assigned(frm_xmqd_n) then
            begin
          //   faname.Close; ///**
             frm_xmqd_n := Tfrm_xmqd_n.create(Application);
             frm_xmqd_n:=tfrm_xmqd_n.create(self,panel1);
             frm_xmqd_n.Show;
             faname := Tform(frm_xmqd_n);
            end
            else
            begin
             if faname <> nil then
             faname.Close; ///**
             frm_xmqd_n:=tfrm_xmqd_n.create(self,panel1);
             frm_xmqd_n.Show;
             faname := Tform(frm_xmqd_n);
            end;
           end;
           if treeview1.Selected.Text = '客户列表' then
            if faname <> nil then
            faname.close;
           begin
            if not assigned(frm_cust_qd) then
            begin
             frm_cust_qd := Tfrm_cust_qd.create(Application);
             frm_cust_qd:=tfrm_cust_qd.create(self,panel1);
             frm_cust_qd.Show;
             faname := Tform(form2);
            end
            else
            begin
             frm_cust_qd:=tfrm_cust_qd.create(self,panel1);
             frm_cust_qd.Show;
             faname := Tform(form2);
            end;
           end;
           if treeview1.Selected.Text = '员工列表' then
           begin
            if faname <> nil then
             faname.close;
            if not assigned(frm_ygqd_qd) then
            begin
             frm_ygqd_qd := Tfrm_ygqd_qd.create(Application);
             frm_ygqd_qd:=tfrm_ygqd_qd.create(self,panel1);
             frm_ygqd_qd.Show;
             faname := Tform(form2);
            end
            else
            begin
             frm_ygqd_qd:=tfrm_ygqd_qd.create(self,panel1);
             frm_ygqd_qd.Show;
             faname := Tform(form2);
            end;
           end;
           if treeview1.Selected.Text = '坐凳' then
           begin
            if assigned(form3) then
            begin
            // form2.Free;
           //  form2 := nil;
             form3:=tform3.create(self,panel1);
             form3.Show;
            end;
           end;
    end;
      

  2.   

    procedure Tfrm_main.TreeView1Change(Sender: TObject; Node: TTreeNode);
    //var
      // Form2 : Tform2;不用再声明了;
    begin
          {
           ShowMessage(inttostr(Node.Level));
           Node.MoveTo();
           ShowMessage(inttostr(Node.Index));
           }
       //  ShowMessage(Panel1.Parent.Name);
       //  FindComponent()
         if Node.Parent <> nil then
         begin
           if Node.Parent.Text = '类型' then
           begin
            if not assigned(frm_pic_n) then
            begin
             //frm_pic_n := Tfrm_pic_n.create(Application);去掉
             frm_pic_n:=tfrm_pic_n.create(self,panel1);
             frm_pic_n.Label2.Caption := Node.Parent.Text;
             frm_pic_n.str.Caption := Node.Text;
             frm_pic_n.XsPicture(1);//这是个什么函数?
             frm_pic_n.Show;
             faname := Tform(frm_xmqd_n);//这里为什么不加?
            end
            {else
            begin
             frm_pic_n:=tfrm_pic_n.create(self,panel1);
             frm_pic_n.Label2.Caption := Node.Parent.Text;
             frm_pic_n.str.Caption := Node.Text;
             frm_pic_n.XsPicture(1);
             frm_pic_n.Show;        end;}这种可能性还存在吗?肯定不存在了,因为你已经在CLOSE代码里加了那两句话;
           end;
         end;
           if treeview1.Selected.Text = '项目浏览' then
           begin
            if faname <> nil then
            faname.close;
            if not assigned(frm_xmqd_n) then
            begin
          //   faname.Close; ///**
            // frm_xmqd_n := Tfrm_xmqd_n.create(Application);去掉
             frm_xmqd_n:=tfrm_xmqd_n.create(self,panel1);
             frm_xmqd_n.Show;
             faname := Tform(frm_xmqd_n);
            end
            {else
            begin
             if faname <> nil then
             faname.Close; ///**
             frm_xmqd_n:=tfrm_xmqd_n.create(self,panel1);
             frm_xmqd_n.Show;
             faname := Tform(frm_xmqd_n);
            end;}//同上;
           end;
           if treeview1.Selected.Text = '客户列表' then//这个嵌套错了,下面没有begin
            if faname <> nil then
            faname.close;
           begin//这个begin放上面去;
            if not assigned(frm_cust_qd) then
            begin
             //frm_cust_qd := Tfrm_cust_qd.create(Application);去掉
             frm_cust_qd:=tfrm_cust_qd.create(self,panel1);
             frm_cust_qd.Show;
             faname := Tform(form2);
            end
           {else
            begin
             frm_cust_qd:=tfrm_cust_qd.create(self,panel1);
             frm_cust_qd.Show;
             faname := Tform(form2);
            end;}//同上;
           end;
           if treeview1.Selected.Text = '员工列表' then
           begin
            if faname <> nil then
             faname.close;
            if not assigned(frm_ygqd_qd) then
            begin
             //frm_ygqd_qd := Tfrm_ygqd_qd.create(Application);去掉
             frm_ygqd_qd:=tfrm_ygqd_qd.create(self,panel1);
             frm_ygqd_qd.Show;
             faname := Tform(form2);
            end
            {else
            begin
             frm_ygqd_qd:=tfrm_ygqd_qd.create(self,panel1);
             frm_ygqd_qd.Show;
             faname := Tform(form2);
            end;}
           end;
           if treeview1.Selected.Text = '坐凳' then
           begin
            if assigned(form3) then
            begin
            // form2.Free;
           //  form2 := nil;
             form3:=tform3.create(self,panel1);
             form3.Show;
            end;
           end;
    end;