lbsr.pas

来自「日昌餐饮管理系统是用Delphi7+SQL写的管理系统」· PAS 代码 · 共 330 行

PAS
330
字号
unit lbsr;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, StdCtrls, Buttons, ExtCtrls, Menus;

type
  Tlbsrp = class(TForm)
    TreeView1: TTreeView;
    Query1: TQuery;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Query2: TQuery;
    Query3: TQuery;
    Query4: TQuery;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Panel1: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit3: TEdit;
    Edit4: TEdit;
    N4: TMenuItem;
    Query5: TQuery;
    UpdateSQL1: TUpdateSQL;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    procedure TreeView1DblClick(Sender: TObject);
    procedure TreeView1KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  lbsrp: Tlbsrp;
  len:integer;
  zbkm,xxx:string;
  tt:Ttreenode;

implementation

uses chanpin;

{$R *.DFM}

procedure Tlbsrp.TreeView1DblClick(Sender: TObject);
var i,j:integer;
begin
  if treeview1.Selected.HasChildren then
    begin
      edit1.Text:='';
      edit2.Text:='';
    end
  else
    begin
      i:=ansipos('(',treeview1.Selected.Text);
      j:=ansipos('__',treeview1.Selected.Text);
      edit1.Text:=copy(treeview1.Selected.Text,1,j-1);
      edit2.Text:=copy(treeview1.selected.Text,j+2,i-j-2);
      form3.lbcb.Text:=edit2.Text;
      chanpin.lb:=edit1.Text;
      lbsrp.Close;
    end;
end;

procedure Tlbsrp.TreeView1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=chr(13) then TreeView1DblClick(self);
end;

procedure Tlbsrp.FormCreate(Sender: TObject);
var
  tv: array[0..200] of TTreeNode;
  tv1,tv2,tv3,tv4:TTreenode;
  I:INTEGER;
begin
  treeview1.Items.Clear;
  query1.Open;
  i:=0;
  query1.First;
  tv1:=treeview1.Items.GetFirstNode;
  while i<= query1.RecordCount -1 do
    begin
      tv[i]:=treeview1.Items.Add(tv1,query1.Fieldbyname('lbbm').AsString+'__'+query1.Fieldbyname('lbmc').AsString+'('+query1.Fieldbyname('pym').AsString+')');
      query2.ParamByName('cs0').asstring:=query1.Fieldbyname('lbbm').AsString;
      query2.Open;
      if (query2.RecordCount>0) and (query2.Fieldbyname('lbbm').AsString<>'') then
        begin
          tv2:=treeview1.Items.GetNode(tv[i].itemid);
          query2.First;
          while not query2.Eof do
            begin
              tv[i]:=treeview1.Items.Addchild(tv2,query2.Fieldbyname('lbbm').AsString+'__'+query2.Fieldbyname('lbmc').AsString+'('+query2.Fieldbyname('pym').AsString+')');
              query3.ParamByName('cs0').asstring:=query2.Fieldbyname('lbbm').AsString;
              query3.Open;
              if (query3.RecordCount>0) and (query3.Fieldbyname('lbbm').AsString<>'') then
                begin
                  tv3:=treeview1.Items.GetNode(tv[i].itemid);
                  query3.First;
                  while not query3.Eof do
                    begin
                      tv[i]:=treeview1.Items.Addchild(tv3,query3.Fieldbyname('lbbm').AsString+'__'+query3.Fieldbyname('lbmc').AsString+'('+query3.Fieldbyname('pym').AsString+')');
                      query4.ParamByName('cs0').asstring:=query3.Fieldbyname('lbbm').AsString;
                      query4.Open;
                      if (query4.RecordCount>0) and (query4.Fieldbyname('lbbm').AsString<>'') then
                        begin
                          tv4:=treeview1.Items.GetNode(tv[i].itemid);
                          query4.First;
                          while not query4.Eof do
                            begin
                              tv[i]:=treeview1.Items.Addchild(tv4,query4.Fieldbyname('lbbm').AsString+'__'+query4.Fieldbyname('lbmc').AsString+'('+query4.Fieldbyname('pym').AsString+')');
                              query4.Next;
                            end;
                        end;
                      query4.Close;
                      query3.Next;
                    end;
                end;
              query3.Close;
              query2.Next;
            end;
        end;
      query2.Close;
      query1.Next;
      i:=i+1;
    end;
  query1.Close;
end;

procedure Tlbsrp.N1Click(Sender: TObject);
var
  i:integer;
begin
   xxx:='tj';
   if treeview1.Items.Count=0 then begin
    tt:=treeview1.Items.AddFirst(tt,'新类别');
    end
   else begin
    tt:=treeview1.Selected;
    i:=pos('__',tt.Text);
    edit4.Text:=copy(tt.Text,1,i-3);
    tt:=treeview1.Items.Add(tt,'新类别');
   end;
   treeview1.Enabled:=false;
   label5.Caption:='添加同级类';
   panel1.Visible:=true;
end;

procedure Tlbsrp.BitBtn1Click(Sender: TObject);
begin
  tt.Text:=edit4.Text+'__'+edit3.Text+'('+edit5.Text+')';
  treeview1.Enabled:=true;
  if xxx='tj' then
    begin
      if (edit4.Text='') or (edit3.Text='') then
        begin
          application.MessageBox('名称及编码不能为空!','提示信息',0);
          edit4.SetFocus;
          exit;
        end;
      if ((length(trim(edit4.Text))<>(tt.Level+1)*2)) then
        begin
          messagedlg('编码长度必需为'+inttostr((tt.Level+1)*2)+'位, 请重新输入!',mtwarning,[mbok],0);
          edit4.SetFocus;
          exit;
        end;
      if query5.Locate('lbbm',edit4.text,[]) then
        begin
          application.MessageBox('编码已存在,请另选一个!','提示信息',0);
          edit4.SetFocus;
          exit;
        end;
      query5.Append;
      query5.FieldByName('lbbm').Value:=edit4.Text;
      query5.FieldByName('lbmc').Value:=edit3.Text;
      query5.FieldByName('pym').Value:=edit5.Text;
      query5.Post;
      query5.ApplyUpdates;
    end;
  if xxx='sc' then
    begin
      if treeview1.Selected.HasChildren then
       if messagedlg('待删除的类别有子类!'+#13+'仍要删除吗?',mtwarning,[mbyes,mbno],0) <>mryes then exit;
      if query5.Locate('lbbm',edit4.text,[]) then
        begin
          if treeview1.Selected.HasChildren then
            begin
              while not query5.Eof do
               begin
                 if copy(query5.FieldByName('lbbm').value,1,length(trim(edit4.text)))=trim(edit4.text) then query5.Delete
                 else query5.Next;
               end;
            end
          else query5.Delete;
          tt.Delete;
          query5.ApplyUpdates;
        end;
    end;
  if xxx='gg' then
    begin
      if (edit4.Text='') or (edit3.Text='') then
        begin
          application.MessageBox('名称及编号不能为空!','提示信息',0);
          edit4.SetFocus;
          exit;
        end;
      if query5.Locate('lbbm',edit4.text,[]) then
        begin
          query5.Edit;
          query5.FieldByName('lbbm').value:=edit4.Text;
          query5.FieldByName('lbmc').Value:=edit3.Text;
          query5.FieldByName('pym').Value:=edit5.Text;
          query5.Post;
          query5.ApplyUpdates;
        end;
    end;
  query5.Close;
  query5.Open;
  treeview1.Refresh;
  edit4.ReadOnly:=false;
  panel1.Visible:=false;
end;

procedure Tlbsrp.BitBtn2Click(Sender: TObject);
begin
   edit4.ReadOnly:=false;
   if xxx='tj' then tt.Delete;
   treeview1.Enabled:=true;
   panel1.Visible:=false;
end;

procedure Tlbsrp.N4Click(Sender: TObject);
var
  i:integer;
begin
   if treeview1.Items.Count=0 then exit;
   xxx:='tj';
   tt:=treeview1.Selected;
   i:=pos('__',tt.Text);
   edit4.Text:=copy(tt.Text,1,i-1);
   tt:=treeview1.Items.AddChild(tt,'新类别');
   treeview1.Enabled:=false;
   label5.Caption:='添加子类';
   panel1.Visible:=true;
end;

procedure Tlbsrp.N2Click(Sender: TObject);
var
  i,j,k:integer;
begin
  xxx:='sc';
  tt:=treeview1.Selected;
  i:=pos('__',tt.Text);
  j:=pos('(',tt.Text);
  k:=pos(')',tt.Text);
  edit4.Text:=copy(tt.Text,1,i-1);
  edit3.Text:=copy(tt.Text,i+2,j-i-2);
  edit5.Text:=copy(tt.Text,j+1,k-j-1);
  label5.Caption:='删除';
  panel1.Visible:=true;
end;

procedure Tlbsrp.N3Click(Sender: TObject);
var
  i,j,k:integer;
begin
  xxx:='gg';
  tt:=treeview1.Selected;
  i:=pos('__',tt.Text);
  j:=pos('(',tt.Text);
  k:=pos(')',tt.Text);
  edit4.Text:=copy(tt.Text,1,i-1);
  edit3.Text:=copy(tt.Text,i+2,j-i-2);
  edit5.Text:=copy(tt.Text,j+1,k-j-1);
  edit4.ReadOnly:=true;
  label5.Caption:='修改';
  panel1.Visible:=true;
end;

procedure Tlbsrp.FormActivate(Sender: TObject);
begin
     query5.Open;
     formcreate(self);
end;

procedure Tlbsrp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     query5.Close;
     xxx:='';
end;

procedure Tlbsrp.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
     if key=chr(13) then edit4.SetFocus;
end;

procedure Tlbsrp.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
     if key=chr(13) then edit5.SetFocus;
end;

procedure Tlbsrp.Edit5KeyPress(Sender: TObject; var Key: Char);
begin
     if key=chr(13) then bitbtn1.SetFocus;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?