U_dqflb.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:12k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_dqflb;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ComCtrls, ExtCtrls, Db, DBClient, StdCtrls, Mask, DBCtrls, Menus, ImgList,
  6.   Grids, DBGrids;
  7. type
  8.   TfrmDqflb = class(TForm)
  9.     Panel1: TPanel;
  10.     StatusBar1: TStatusBar;
  11.     Splitter1: TSplitter;
  12.     TreeView1: TTreeView;
  13.     DataSource1: TDataSource;
  14.     PopupMenu1: TPopupMenu;
  15.     ImageList1: TImageList;
  16.     N_refresh: TMenuItem;
  17.     N_insert: TMenuItem;
  18.     N_edit: TMenuItem;
  19.     N_delete: TMenuItem;
  20.     N_cancel: TMenuItem;
  21.     N_save: TMenuItem;
  22.     N7: TMenuItem;
  23.     Panel2: TPanel;
  24.     PageControl1: TPageControl;
  25.     TabSheet1: TTabSheet;
  26.     TabSheet2: TTabSheet;
  27.     Panel3: TPanel;
  28.     Label1: TLabel;
  29.     Label2: TLabel;
  30.     Label3: TLabel;
  31.     DBEdit1: TDBEdit;
  32.     DBEdit2: TDBEdit;
  33.     DBGrid1: TDBGrid;
  34.     ImageList2: TImageList;
  35.     PopupMenu2: TPopupMenu;
  36.     N1: TMenuItem;
  37.     procedure FormShow(Sender: TObject);
  38.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  39.     procedure N_insertClick(Sender: TObject);
  40.     procedure N_saveClick(Sender: TObject);
  41.     procedure N_refreshClick(Sender: TObject);
  42.     procedure N_editClick(Sender: TObject);
  43.     procedure N_cancelClick(Sender: TObject);
  44.     procedure N_deleteClick(Sender: TObject);
  45.     procedure TreeView1Click(Sender: TObject);
  46.     procedure N1Click(Sender: TObject);
  47.     procedure DBGrid1TitleClick(Column: TColumn);
  48.     procedure FormCreate(Sender: TObject);
  49.   private
  50.     procedure button_valid();
  51.     { Private declarations }
  52.   public
  53.     procedure refresh;
  54.     { Public declarations }
  55.   end;
  56. var
  57.   frmDqflb: TfrmDqflb;
  58.   mynode_global, mynode_global1: Ttreenode;
  59.   gs_global: string;
  60.   b_pd: bool; //用于判断是电击添加还是编辑
  61. implementation
  62. uses U_mainform, U_general_print, WzglDB, u_public;
  63. {$R *.DFM}
  64. procedure TfrmDqflb.refresh;
  65. var
  66.   mynode_1, mynode_2, mynode_3, mynode_4: Ttreenode;
  67.   s_bm_1, s_bm_2, s_bm_3, s_bm_4: string;
  68.   s_mc_1, s_mc_2, s_mc_3, s_mc_4: string;
  69. begin
  70.   statusbar1.panels[0].text := '正在进行数据处理...';
  71.   statusbar1.refresh;
  72.   treeview1.Items.clear;
  73.   mynode_1 := treeview1.Items.Add(treeview1.topitem, '地区分类');
  74.   mynode_1.imageindex := 0;
  75.   mynode_1.stateindex := -1;
  76.   mynode_1.Selectedindex := 1;
  77.   DM.CDS_DQFLB.indexfieldnames := '类别编码';
  78.   DM.CDS_DQFLB.First;
  79.   while not DM.CDS_DQFLB.Eof do
  80.   begin
  81.     s_bm_1 := DM.CDS_DQFLB.fieldbyname('类别编码').asstring;
  82.     s_mc_1 := DM.CDS_DQFLB.fieldbyname('类别名称').asstring;
  83.     if length(trim(s_bm_1)) = 2 then
  84.     begin
  85.       mynode_2 := treeview1.items.addchild(mynode_1, '(' + s_bm_1 + ') ' + s_mc_1);
  86.       mynode_2.imageindex := 0;
  87.       mynode_2.stateindex := -1;
  88.       mynode_2.Selectedindex := 1;
  89.     end;
  90.     if length(trim(s_bm_1)) = 6 then
  91.     begin
  92.       mynode_3 := treeview1.items.addchild(mynode_2, '(' + s_bm_1 + ') ' + s_mc_1);
  93.       mynode_3.imageindex := 0;
  94.       mynode_3.stateindex := -1;
  95.       mynode_3.Selectedindex := 1;
  96.     end;
  97.     if length(trim(s_bm_1)) = 11 then
  98.     begin
  99.       mynode_4 := treeview1.items.addchild(mynode_3, '(' + s_bm_1 + ') ' + s_mc_1);
  100.       mynode_4.imageindex := 0;
  101.       mynode_4.stateindex := -1;
  102.       mynode_4.Selectedindex := 1;
  103.     end;
  104.     DM.CDS_DQFLB.next;
  105.   end;
  106.   statusbar1.panels[0].text := '';
  107.   statusbar1.refresh;
  108. end;
  109. procedure TfrmDqflb.FormShow(Sender: TObject);
  110. begin
  111.   refresh;
  112.   treeview1.topitem.Selected := true;
  113. end;
  114. procedure TfrmDqflb.FormClose(Sender: TObject; var Action: TCloseAction);
  115. begin
  116.   action := cafree;
  117.   frmDqflb := nil;
  118. end;
  119. procedure TfrmDqflb.N_insertClick(Sender: TObject);
  120. begin
  121.   b_pd := true;
  122.   mynode_global := treeview1.selected;
  123.   if mynode_global.level = 3 then
  124.   begin
  125.     Application.messagebox('最底层不能添加,请在上层添加', '物资管理系统', mb_iconinformation + mb_defbutton1);
  126.     exit;
  127.   end;
  128.   button_valid();
  129.   if mynode_global.level = 0 then
  130.   begin
  131.     DM.CDS_DQFLB.Insert;
  132.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99;1;_';
  133.     pagecontrol1.ActivePageIndex := 0;
  134.     dbedit1.setfocus;
  135.   end;
  136.   if mynode_global.level = 1 then
  137.   begin
  138.     gs_global := copy(mynode_global.text, 2, 2);
  139.     DM.CDS_DQFLB.insert;
  140.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999;1;_';
  141.     pagecontrol1.ActivePageIndex := 0;
  142.     dbedit1.setfocus;
  143.     dbedit1.text := gs_global;
  144.   end;
  145.   if mynode_global.level = 2 then
  146.   begin
  147.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999-9999;1;_';
  148.     gs_global := copy(mynode_global.text, 2, 6);
  149.     DM.CDS_DQFLB.insert;
  150.     pagecontrol1.ActivePageIndex := 0;
  151.     dbedit1.setfocus;
  152.     dbedit1.text := gs_global;
  153.   end;
  154. end;
  155. procedure TfrmDqflb.button_valid;
  156. begin
  157.   dbedit1.enabled := not dbedit1.enabled;
  158.   dbedit2.enabled := not dbedit2.enabled;
  159.   n_insert.enabled := not n_insert.enabled;
  160.   n_delete.enabled := not n_delete.enabled;
  161.   n_edit.enabled := not n_edit.enabled;
  162.   n_cancel.enabled := not n_cancel.enabled;
  163.   n_save.enabled := not n_save.enabled;
  164.   n_refresh.enabled := not n_refresh.enabled;
  165.   treeview1.enabled := not treeview1.Enabled;
  166. end;
  167. procedure TfrmDqflb.N_saveClick(Sender: TObject);
  168. var
  169.   s_bm, s_mc: string;
  170. begin
  171.   if mynode_global.level = 0 then
  172.   begin
  173.     if length(trim(dbedit1.text)) <> 2 then
  174.     begin
  175.       Application.messagebox('编码应为两位', '物资管理系统', mb_iconinformation + mb_defbutton1);
  176.       exit;
  177.     end;
  178.   end;
  179.   if mynode_global.level = 1 then
  180.   begin
  181.     if copy(dbedit1.text, 1, 2) <> copy(mynode_global.text, 2, 2) then
  182.     begin
  183.       Application.messagebox('前面两位不能变,请确认!', '物资管理系统', mb_iconinformation + mb_defbutton1);
  184.       dbedit1.text := copy(mynode_global.text, 2, 2);
  185.       exit;
  186.     end;
  187.     if length(trim(dbedit1.text)) <> 6 then
  188.     begin
  189.       Application.messagebox('编码应为六位', '物资管理系统', mb_iconinformation + mb_defbutton1);
  190.       exit;
  191.     end;
  192.   end;
  193.   if mynode_global.level = 2 then
  194.   begin
  195.     if copy(dbedit1.text, 1, 6) <> copy(mynode_global.text, 2, 6) then
  196.     begin
  197.       Application.messagebox('前面六位不能变,请确认!', '物资管理系统', mb_iconinformation + mb_defbutton1);
  198.       dbedit1.text := copy(mynode_global.text, 2, 6);
  199.       exit;
  200.     end;
  201.     if length(trim(dbedit1.text)) <> 11 then
  202.     begin
  203.       Application.messagebox('编码应为十一位', '物资管理系统', mb_iconinformation + mb_defbutton1);
  204.       exit;
  205.     end;
  206.   end;
  207.   s_bm := dbedit1.text;
  208.   s_mc := dbedit2.text;
  209.   DM.CDS_DQFLB_INDEX.IndexFieldNames := '类别编码';
  210.   DM.CDS_DQFLB_INDEX.Refresh;
  211.   if DM.CDS_DQFLB.state = dsinsert then
  212.   begin
  213.     if DM.CDS_DQFLB_INDEX.FindKey([s_bm]) then
  214.     begin
  215.       application.MessageBox('类别编码已重复', '物资管理系统', mb_iconinformation + mb_defbutton1);
  216.       pagecontrol1.ActivePageIndex := 0;
  217.       dbedit1.SetFocus;
  218.       exit;
  219.     end;
  220.   end;
  221.   if b_pd = true then
  222.     treeview1.items.addchild(mynode_global, '(' + s_bm + ') ' + s_mc)
  223.   else
  224.   begin
  225.     treeview1.Items.Delete(mynode_global1);
  226.     treeview1.items.addchild(mynode_global, '(' + s_bm + ') ' + s_mc);
  227.   end;
  228.   DM.CDS_DQFLB.post;
  229.   DM.CDS_DQFLB.applyupdates(0);
  230.   button_valid;
  231. end;
  232. procedure TfrmDqflb.N_refreshClick(Sender: TObject);
  233. begin
  234.   refresh;
  235.   treeview1.TopItem.selected := true;
  236. end;
  237. procedure TfrmDqflb.N_editClick(Sender: TObject);
  238. begin
  239.   b_pd := false;
  240.   mynode_global1 := treeview1.selected;
  241.   if mynode_global1.level = 0 then
  242.   begin
  243.     Application.messagebox('最顶层不能添加,请在上层添加', '物资管理系统', mb_iconinformation + mb_defbutton1);
  244.     exit;
  245.   end;
  246.   button_valid();
  247.   mynode_global := mynode_global1.parent;
  248.   if mynode_global.level = 0 then
  249.   begin
  250.     DM.CDS_DQFLB.edit;
  251.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99;1;_';
  252.     pagecontrol1.ActivePageIndex := 0;
  253.     dbedit1.setfocus;
  254.   end;
  255.   if mynode_global.level = 1 then
  256.   begin
  257.     gs_global := copy(mynode_global.text, 2, 2);
  258.     DM.CDS_DQFLB.edit;
  259.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999;1;_';
  260.     pagecontrol1.ActivePageIndex := 0;
  261.     dbedit1.setfocus;
  262.   end;
  263.   if mynode_global.level = 2 then
  264.   begin
  265.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999-9999;1;_';
  266.     gs_global := copy(mynode_global.text, 2, 6);
  267.     DM.CDS_DQFLB.edit;
  268.     pagecontrol1.ActivePageIndex := 0;
  269.     dbedit1.setfocus;
  270.   end;
  271. end;
  272. procedure TfrmDqflb.N_cancelClick(Sender: TObject);
  273. begin
  274.   DM.CDS_DQFLB.cancel;
  275.   button_valid();
  276. end;
  277. procedure TfrmDqflb.N_deleteClick(Sender: TObject);
  278. var
  279.   mynode_1: Ttreenode;
  280. begin
  281.   mynode_1 := treeview1.selected;
  282.   if mynode_1.level = 0 then
  283.     exit;
  284.   if mynode_1.level = 3 then
  285.   begin
  286.     if Application.messagebox('请确认是否要删除', '物资管理系统', mb_iconinformation + mb_yesno) = idyes then
  287.     begin
  288.       DM.CDS_DQFLB.Delete;
  289.       DM.CDS_DQFLB.ApplyUpdates(0);
  290.       treeview1.Items.delete(mynode_1);
  291.     end;
  292.   end;
  293.   if mynode_1.level = 2 then
  294.   begin
  295.     if Application.messagebox('请确认是否要删除,并且子目录也将被删除', '物资管理系统', mb_iconinformation + mb_yesno) = idyes then
  296.     begin
  297.       DM.CDS_DQFLB.filter := 'substring(类别编码,1,6)=' + '''' + copy(mynode_1.text, 2, 6) + '''';
  298.       DM.CDS_DQFLB.filtered := true;
  299.       DM.CDS_DQFLB.first;
  300.       while not DM.CDS_DQFLB.eof do
  301.       begin
  302.         DM.CDS_DQFLB.Delete;
  303.       end;
  304.       DM.CDS_DQFLB.ApplyUpdates(0);
  305.       treeview1.Items.delete(mynode_1);
  306.       DM.CDS_DQFLB.filtered := false;
  307.     end;
  308.   end;
  309.   if mynode_1.level = 1 then
  310.   begin
  311.     if Application.messagebox('请确认是否要删除,并且子目录也将被删除', '物资管理系统', mb_iconinformation + mb_yesno) = idyes then
  312.     begin
  313.       DM.CDS_DQFLB.filter := 'substring(类别编码,1,2)=' + '''' + copy(mynode_1.text, 2, 2) + '''';
  314.       DM.CDS_DQFLB.filtered := true;
  315.       DM.CDS_DQFLB.first;
  316.       while not DM.CDS_DQFLB.eof do
  317.       begin
  318.         DM.CDS_DQFLB.Delete;
  319.       end;
  320.       DM.CDS_DQFLB.ApplyUpdates(0);
  321.       treeview1.Items.delete(mynode_1);
  322.       DM.CDS_DQFLB.filtered := false;
  323.     end;
  324.   end;
  325. end;
  326. procedure TfrmDqflb.TreeView1Click(Sender: TObject);
  327. var
  328.   mynode: Ttreenode;
  329.   s_value_1, s_value_2, s_value_3, s_value_4: string;
  330. begin
  331.   if treeview1.Items.Count = 0 then
  332.     exit;
  333.   mynode := treeview1.selected;
  334.   if mynode.Level = 1 then
  335.   begin
  336.     s_value_1 := copy(mynode.text, 2, 2);
  337.     DM.CDS_DQFLB.IndexFieldNames := '类别编码';
  338.     DM.CDS_DQFLB.findkey([s_value_1]);
  339.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99;1;_';
  340.   end;
  341.   if mynode.Level = 2 then
  342.   begin
  343.     s_value_1 := copy(mynode.text, 2, 6);
  344.     DM.CDS_DQFLB.IndexFieldNames := '类别编码';
  345.     DM.CDS_DQFLB.FindKey([s_value_1]);
  346.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999;1;_';
  347.   end;
  348.   if mynode.Level = 3 then
  349.   begin
  350.     s_value_1 := copy(mynode.text, 2, 11);
  351.     DM.CDS_DQFLB.IndexFieldNames := '类别编码';
  352.     DM.CDS_DQFLB.FindKey([s_value_1]);
  353.     DM.CDS_DQFLB.FieldByName('类别编码').editmask := '99-999-9999;1;_';
  354.   end;
  355. end;
  356. procedure TfrmDqflb.N1Click(Sender: TObject);
  357. begin
  358.   application.createform(TfrmPrint, frmPrint);
  359.   frmPrint.srclist.items.add('类别编码');
  360.   frmPrint.srclist.items.add('类别名称');
  361.   frmPrint.vps_tablename := 'WZ_Dqflb';
  362.   frmPrint.vps_filter := DM.CDS_DQFLB.Filter;
  363.   frmPrint.vps_index := DM.CDS_DQFLB.IndexFieldNames;
  364.   frmPrint.edtPrintTitle.Text := '地区分类表';
  365.   try
  366.     frmPrint.showmodal;
  367.   finally
  368.     frmPrint.free;
  369.   end;
  370. end;
  371. procedure TfrmDqflb.DBGrid1TitleClick(Column: TColumn);
  372. begin
  373.  dbGridSort(dbgrid1,column);
  374. end;
  375. procedure TfrmDqflb.FormCreate(Sender: TObject);
  376. begin
  377.   With DM do
  378.   begin
  379.     CDS_DQFLB.Active := True;
  380.     CDS_DQFLB_INDEX.Active := True;
  381.   end;
  382. end;
  383. end.