?? bm_bumenu.pas
字號:
unit BM_BUMENU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, Grids, DBGrids, StdCtrls, Mask, DBCtrls,
Menus, ImgList, DB, DBTables, Buttons;
type
TBM_BENMENF = class(TForm)
Splitter1: TSplitter;
pmOperate: TPopupMenu;
N_insert: TMenuItem;
N_delete: TMenuItem;
N_edit: TMenuItem;
N_cancel: TMenuItem;
N_save: TMenuItem;
N7: TMenuItem;
N_refresh: TMenuItem;
ImageList2: TImageList;
ImageList1: TImageList;
pmOther: TPopupMenu;
N_Order: TMenuItem;
N_Print: TMenuItem;
Panel1: TPanel;
TreeView: TTreeView;
Panel4: TPanel;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Panel3: TPanel;
Label3: TLabel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBEdt_Bmbm: TDBEdit;
DBEdt_Bmmc: TDBEdit;
DBEdt_Fzrxm: TDBEdit;
DBEdt_Bmsx: TDBEdit;
DBEdt_Lxdh: TDBEdit;
DBEdt_DZ: TDBEdit;
DBEdt_BZ: TDBEdit;
TabSheet2: TTabSheet;
DBGrid: TDBGrid;
Panel2: TPanel;
DBNavigator1: TDBNavigator;
add: TSpeedButton;
del2: TSpeedButton;
save: TSpeedButton;
fresh: TSpeedButton;
close: TSpeedButton;
edit: TSpeedButton;
hui1: TSpeedButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure N_insertClick(Sender: TObject);
procedure TreeViewClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure N_deleteClick(Sender: TObject);
procedure N_editClick(Sender: TObject);
procedure N_cancelClick(Sender: TObject);
procedure N_saveClick(Sender: TObject);
procedure N_refreshClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure addClick(Sender: TObject);
procedure del2Click(Sender: TObject);
procedure editClick(Sender: TObject);
procedure saveClick(Sender: TObject);
procedure hui1Click(Sender: TObject);
procedure freshClick(Sender: TObject);
private
{ Private declarations }
Node_Parent: TTreeNode; //存儲父節點
Node_Child: TTreeNode; //存儲當前節點
b_pd: bool; //用于判斷點擊的是添加還是編輯
//在添加、編輯和瀏覽狀態互置按鈕的有效性
procedure button_valid;
procedure refreshTree;
public
{ Public declarations }
end;
var
BM_BENMENF: TBM_BENMENF;
implementation
uses BM_DMU;
{$R *.dfm}
procedure TBM_BENMENF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TBM_BENMENF.refreshTree;
var
mynode_1, mynode_2, mynode_3: Ttreenode;
s_bm_1, s_bm_2, s_bm_3: string;
s_mc_1, s_mc_2, s_mc_3: string;
begin
DM.BUMEN.Active := True;
treeview.Items.clear;
mynode_1 := Treeview.Items.Add(Treeview.topitem, '北明部門檔案');
mynode_1.imageindex := 0;
mynode_1.stateindex := -1;
mynode_1.selectedindex := 1;
DM.BUMEN.indexfieldnames := '部門編碼';
DM.BUMEN.First;
while not DM.BUMEN.Eof do
begin
s_bm_1 := DM.BUMEN.fieldbyname('部門編碼').asstring;
s_mc_1 := DM.BUMEN.fieldbyname('部門名稱').asstring;
if length(trim(s_bm_1)) = 2 then
begin
mynode_2 := Treeview.items.addchild(mynode_1, '[' + s_bm_1 + '] ' + s_mc_1);
mynode_2.imageindex := 0;
mynode_2.stateindex := -1;
mynode_2.selectedindex := 1;
end;
if length(trim(s_bm_1)) = 5 then
begin
mynode_3 := Treeview.items.addchild(mynode_2, '[' + s_bm_1 + '] ' + s_mc_1);
mynode_3.imageindex := 0;
mynode_3.stateindex := -1;
mynode_3.selectedindex := 1;
end;
DM.BUMEN.next;
end;
end;
procedure TBM_BENMENF.FormCreate(Sender: TObject);
begin
//DM.BUMEN.Active := True;
RefreshTree;
end;
procedure TBM_BENMENF.N_insertClick(Sender: TObject);
var
gs_global: string; //存儲添加的父節點標題;
begin
b_pd := true;
Node_Parent := Treeview.selected;
if Node_Parent.level = 2 then
begin
Application.messagebox('最底層不能添加,請在上層添加', '物資管理系統', mb_iconinformation + mb_defbutton1);
exit;
end;
//設置按扭的有效性
button_valid;
if Node_Parent.level = 0 then
begin
DM.BUMEN.Insert;
DM.BUMEN.FieldByName('部門編碼').editmask := '99;1;_';
pagecontrol1.ActivePageIndex := 0;
DBEdt_Bmbm.setfocus;
end;
if Node_Parent.level = 1 then
begin
gs_global := copy(Node_Parent.text, 2, 2);
DM.BUMEN.insert;
DM.BUMEN.FieldByName('部門編碼').editmask := '99-99;1;_';
pagecontrol1.ActivePageIndex := 0;
DBEdt_Bmbm.setfocus;
DBEdt_Bmbm.text := gs_global;
end;
end;
procedure TBM_BENMENF.button_valid;
begin
DBEdt_Bmbm.enabled := not DBEdt_Bmbm.enabled;
DBEdt_Bmmc.enabled := not DBEdt_Bmmc.enabled;
DBEdt_Fzrxm.enabled := not DBEdt_Fzrxm.enabled;
DBEdt_Bmsx.enabled := not DBEdt_Bmsx.enabled;
DBEdt_Lxdh.enabled := not DBEdt_Lxdh.enabled;
DBEdt_DZ.enabled := not DBEdt_DZ.enabled;
DBEdt_BZ.enabled := not DBEdt_BZ.enabled;
n_insert.enabled := not n_insert.enabled;
n_delete.enabled := not n_delete.enabled;
n_edit.enabled := not n_edit.enabled;
n_cancel.enabled := not n_cancel.enabled;
n_save.enabled := not n_save.enabled;
n_refresh.enabled := not n_refresh.enabled;
treeview.enabled := not treeview.Enabled;
add.Enabled := not add.Enabled ;
del2.Enabled := not del2.Enabled ;
edit.Enabled :=not edit.Enabled ;
hui1.Enabled := not hui1.Enabled ;
save.Enabled :=not save.Enabled ;
fresh.Enabled :=not fresh.Enabled ;
end;
procedure TBM_BENMENF.TreeViewClick(Sender: TObject);
var
mynode: Ttreenode;
s_value_1: string;
begin
if Treeview.Items.Count = 0 then
exit;
mynode := Treeview.selected;
//如果是在目錄樹的第一級,代表是第一級部門,它的部門編碼只有兩位
if mynode.Level = 1 then
begin
//從目錄樹的節點標題中,提取部門編碼
s_value_1 := copy(mynode.text, 2, 2);
//DM.BUMEN.IndexFieldNames := '部門編碼';
//DM.BUMEN.findkey([s_value_1]);
DM.BUMEN.Locate('部門編碼',s_value_1,[]);
DM.BUMEN.FieldByName('部門編碼').editmask := '99;1;_';
end;
if mynode.Level = 2 then
begin
//從目錄樹的節點標題中,提取部門編碼
s_value_1 := copy(mynode.text, 2, 5);
DM.BUMEN.Locate('部門編碼',s_value_1,[]);
DM.bumen.FieldByName('部門編碼').editmask := '99-999;1;_';
end;
end;
procedure TBM_BENMENF.FormShow(Sender: TObject);
begin
with DM do
begin
BUMEN.Active := True;
ZHIGONG.Active :=TRUE;
end;
refreshTree;
Treeview.topitem.Selected := true;
end;
procedure TBM_BENMENF.N_deleteClick(Sender: TObject);
var
mynode: Ttreenode;
i:integer;
bm:string;
begin
mynode := Treeview.selected;
//根目錄不須刪除
if mynode.level = 0 then exit;
//如果刪除的是第二級目錄
if mynode.level = 2 then
begin
if DM.BUMEN.recordcount <> 0 then
begin
if Application.messagebox('請確認是否要刪除?', '北明辦公管理系統', mb_iconinformation + mb_yesno) = idyes then
begin
DM.BUMEN.Delete;
DM.BUMEN.UpdateBatch();
Treeview.Items.delete(mynode);
end;
end
else
begin
Application.messagebox('已無記錄可刪除', '北明辦公管理系統', mb_iconinformation + mb_defbutton1);
exit;
end;
EXIT;
end;
//如果刪除是第一級目錄,還得刪除第二級目錄
if mynode.level = 1 then
begin
// dm.BUMEN.Close;
with dm.QALL do
begin
close;
sql.Clear ;
sql.Add('select * from 部門 where 部門編碼 like "' +copy(mynode.text, 2, 2)+'%"');
open;
first;
if Application.messagebox('請確認是否要刪除及包括的子目錄?', '北明辦公管理系統', mb_iconinformation + mb_yesno) = idyes then
begin
for i:=0 to recordcount-1 do
begin
bm:=dm.QALL.fieldbyname('部門編碼').AsString ;
with dm.QALL3 do
begin
close;
sql.Clear ;
sql.Add('delete from 部門 where 部門編碼="'+bm+'"');
ExecSQL;
end;
next;
end;
Treeview.Items.delete(mynode);
dm.BUMEN.Close ;
dm.BUMEN.Open ;
end;
end;
end;
end;
procedure TBM_BENMENF.N_editClick(Sender: TObject);
begin
b_pd := false;
Node_Child := Treeview.selected;
if Node_Child.level = 0 then
begin
Application.messagebox('最頂層不能編輯,請在下層編輯', '物資管理系統', mb_iconinformation + mb_defbutton1);
exit;
end;
//設置按扭有效性
button_valid;
Node_Parent := Node_Child.parent;
if Node_Parent.level = 0 then
begin
DM.BUMEN.edit;
DM.BUMEN.FieldByName('部門編碼').editmask := '99;1;_';
pagecontrol1.ActivePageIndex := 0;
//DBEdt_Bmbm.setfocus;
end;
if Node_Parent.level = 1 then
begin
DM.BUMEN.edit;
DM.BUMEN.FieldByName('部門編碼').editmask := '99-99;1;_';
pagecontrol1.ActivePageIndex := 0;
//DBEdt_Bmbm.setfocus;
end;
end;
procedure TBM_BENMENF.N_cancelClick(Sender: TObject);
begin
DM.BUMEN.cancel;
button_valid;
end;
procedure TBM_BENMENF.N_saveClick(Sender: TObject);
var
s_bm, s_mc: string;
begin
if Node_Parent.level = 0 then
begin
if length(trim(DBEdt_Bmbm.text)) <> 2 then
begin
Application.messagebox('編碼應為兩位', '北明辦公管理系統', mb_iconinformation + mb_defbutton1);
exit;
end;
end;
if Node_Parent.level = 1 then
begin
if copy(DBEdt_Bmbm.text, 1, 2) <> copy(Node_Parent.text, 2, 2) then
begin
Application.messagebox('前面兩位不能變,請確認!', '北明辦公管理系統', mb_iconinformation + mb_defbutton1);
DBEdt_Bmbm.text := copy(Node_Parent.text, 2, 2);
exit;
end;
if length(trim(DBEdt_Bmbm.text)) <> 5 then
begin
Application.messagebox('編碼應為五位', '北明辦公管理系統', mb_iconinformation + mb_defbutton1);
exit;
end;
end;
s_bm := DBEdt_Bmbm.text;
s_mc := DBEdt_Bmmc.text;
DM.ZHIGONG.Open ;
DM.ZHIGONG.Refresh;
if DM.BUMEN.state = dsinsert then
begin
if DM.ZHIGONG.Locate('部門編碼',s_bm,[]) then
begin
application.MessageBox('部門編碼已重復', '北明辦公管理系統', mb_iconinformation + mb_defbutton1);
pagecontrol1.ActivePageIndex := 0;
DBEdt_Bmbm.SetFocus;
exit;
end;
end;
//判斷是添加數據的保存還是編輯數據保存
if b_pd = true then
Treeview.items.addchild(Node_Parent, '(' + s_bm + ') ' + s_mc)
else
Node_Child.Text := '(' + s_bm + ') ' + s_mc;
DM.BUMEN.post;
// DM.CDS_BMDA.applyupdates(0);
DM.BUMEN.UpdateBatch();
DM.BUMEN.Refresh;
//設置按扭的有效性
button_valid;
end;
procedure TBM_BENMENF.N_refreshClick(Sender: TObject);
begin
refreshTree;
Treeview.TopItem.selected := true;
end;
procedure TBM_BENMENF.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=true;
end;
procedure TBM_BENMENF.addClick(Sender: TObject);
begin
N_insertClick(Sender);
end;
procedure TBM_BENMENF.del2Click(Sender: TObject);
begin
N_deleteClick(Sender);
end;
procedure TBM_BENMENF.editClick(Sender: TObject);
begin
N_editClick(Sender);
end;
procedure TBM_BENMENF.saveClick(Sender: TObject);
begin
N_saveClick(Sender);
end;
procedure TBM_BENMENF.hui1Click(Sender: TObject);
begin
N_cancelClick(Sender);
end;
procedure TBM_BENMENF.freshClick(Sender: TObject);
begin
N_refreshClick(Sender);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -