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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_qxgl_zhsz;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ComCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Db, DBClient,
  6.   Buttons;
  7. type
  8.   TfrmQXGL_FZSZ = class(TForm)
  9.     Panel1: TPanel;
  10.     Panel2: TPanel;
  11.     StatusBar1: TStatusBar;
  12.     Panel3: TPanel;
  13.     Panel4: TPanel;
  14.     DS_QXGL_ZHSZ: TDataSource;
  15.     DS_QXGL_ZHNR: TDataSource;
  16.     Label1: TLabel;
  17.     DBedtZh: TDBEdit;
  18.     Label2: TLabel;
  19.     DBedtZBT: TDBEdit;
  20.     Label3: TLabel;
  21.     DBedtZSM: TDBEdit;
  22.     DBGrid: TDBGrid;
  23.     btnInsert: TSpeedButton;
  24.     btnDelete: TSpeedButton;
  25.     btnEdit: TSpeedButton;
  26.     btnCancel: TSpeedButton;
  27.     btnSave: TSpeedButton;
  28.     btnRefresh: TSpeedButton;
  29.     DBNMain: TDBNavigator;
  30.     DBNDetail: TDBNavigator;
  31.     btnFuncs: TSpeedButton;
  32.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  33.     procedure btnInsertClick(Sender: TObject);
  34.     procedure btnDeleteClick(Sender: TObject);
  35.     procedure btnEditClick(Sender: TObject);
  36.     procedure btnCancelClick(Sender: TObject);
  37.     procedure btnSaveClick(Sender: TObject);
  38.     procedure btnRefreshClick(Sender: TObject);
  39.     procedure btnFuncsClick(Sender: TObject);
  40.     procedure FormCreate(Sender: TObject);
  41.   private
  42.     procedure btn_valid;
  43.     { Private declarations }
  44.   public
  45.     { Public declarations }
  46.   end;
  47. var
  48.   frmQXGL_FZSZ: TfrmQXGL_FZSZ;
  49. implementation
  50. uses U_mainform, U_QXGL_GNSZ, WzglDB;
  51. {$R *.DFM}
  52. //当窗体被创建时,打开数据集
  53. procedure TfrmQXGL_FZSZ.FormCreate(Sender: TObject);
  54. begin
  55.   with DM do
  56.   begin
  57.     CDS_QXGL_ZHSZ.Active := True;
  58.     CDS_QXGL_ZHNR.Active := True;
  59.     CDS_QXGL_ZHSZ_INDEX.Active := True;
  60.     CDS_QXGL_ZHNR_INDEX.Active := True;
  61.   end;
  62. end;
  63. procedure TfrmQXGL_FZSZ.FormClose(Sender: TObject; var Action: TCloseAction);
  64. begin
  65.   action := cafree;
  66.   FrmQxgl_Fzsz := nil;
  67. end;
  68. //按钮有效性,在添加、编辑 和保存、恢复间切换按钮的有效性。
  69. procedure TfrmQXGL_FZSZ.btn_valid;
  70. begin
  71.   DBNMain.Enabled := not DBNMain.Enabled;
  72.   btnInsert.enabled := not btnInsert.enabled;
  73.   btnDelete.enabled := not btnDelete.enabled;
  74.   btnEdit.enabled := not btnEdit.enabled;
  75.   btnCancel.enabled := not btnCancel.enabled;
  76.   btnSave.enabled := not btnSave.enabled;
  77.   btnRefresh.enabled := not btnRefresh.enabled;
  78.   btnFuncs.enabled := not btnFuncs.enabled;
  79.   panel1.Enabled := not panel1.Enabled;
  80. end;
  81. //添加数据
  82. procedure TfrmQXGL_FZSZ.btnInsertClick(Sender: TObject);
  83. begin
  84.   DM.CDS_QXGL_ZHSZ.Insert;
  85.   btn_valid;
  86.   DBedtZh.SetFocus;
  87. end;
  88. //删除数据
  89. procedure TfrmQXGL_FZSZ.btnDeleteClick(Sender: TObject);
  90. begin
  91.   if DM.CDS_QXGL_ZHSZ.recordcount = 0 then
  92.   begin
  93.     application.messagebox('没有记录可删除', '物资管理系统', mb_iconinformation + mb_defbutton1);
  94.     exit;
  95.   end;
  96.   if application.messagebox('请确认是否删除', '物资管理系统', mb_iconinformation + mb_yesno) = idyes then
  97.   begin
  98.     DM.CDS_QXGL_ZHSZ.delete;
  99.     DM.CDS_QXGL_ZHSZ.ApplyUpdates(0);
  100.   end;
  101. end;
  102. //编辑数据
  103. procedure TfrmQXGL_FZSZ.btnEditClick(Sender: TObject);
  104. begin
  105.   if DM.CDS_QXGL_ZHSZ.recordcount = 0 then
  106.   begin
  107.     application.messagebox('没有记录可编辑', '物资管理系统', mb_iconinformation + mb_defbutton1);
  108.     exit;
  109.   end;
  110.   DM.CDS_QXGL_ZHSZ.edit;
  111.   btn_valid;
  112.   DBedtZh.setfocus;
  113. end;
  114. //恢复数据
  115. procedure TfrmQXGL_FZSZ.btnCancelClick(Sender: TObject);
  116. begin
  117.   DM.CDS_QXGL_ZHSZ.Cancel;
  118.   DM.CDS_QXGL_ZHSZ.cancelupdates;
  119.   btn_valid;
  120. end;
  121. //保存数据
  122. procedure TfrmQXGL_FZSZ.btnSaveClick(Sender: TObject);
  123. var
  124.   vs_zh: string;
  125. begin
  126.   if DBedtZh.text = '' then
  127.   begin
  128.     application.MessageBox('组号还未输入', '物资管理系统', mb_iconinformation + mb_defbutton1);
  129.     DBedtZh.setfocus;
  130.     exit;
  131.   end;
  132. //判断组号输入是否重复
  133.   vs_zh := DBedtZh.Text;
  134.   DM.CDS_QXGL_ZHSZ_INDEX.IndexFieldNames := '组号';
  135.   DM.CDS_QXGL_ZHSZ_INDEX.Refresh;
  136.   if DM.CDS_QXGL_ZHSZ.state = dsinsert then  //只有当处于添加状态时,检查,因为编辑时,是不让修改组号的。
  137.   begin
  138.     if DM.CDS_QXGL_ZHSZ_INDEX.FindKey([vs_zh]) then
  139.     begin
  140.       application.MessageBox('组号已重复', '物资管理系统', mb_iconinformation + mb_defbutton1);
  141.       DBedtZh.SetFocus;
  142.       exit;
  143.     end;
  144.   end;
  145.   if DBedtZBT.text = '' then
  146.   begin
  147.     application.MessageBox('组标题还未输入', '物资管理系统', mb_iconinformation + mb_defbutton1);
  148.     DBedtZBT.setfocus;
  149.     exit;
  150.   end;
  151.   DM.CDS_QXGL_ZHSZ.Post;
  152.   DM.CDS_QXGL_ZHSZ.applyupdates(0);
  153.   btn_valid;
  154. end;
  155. //刷新数据
  156. procedure TfrmQXGL_FZSZ.btnRefreshClick(Sender: TObject);
  157. begin
  158.   DM.CDS_QXGL_ZHSZ.Refresh;
  159. end;
  160. //设置组号的具体权限
  161. procedure TfrmQXGL_FZSZ.btnFuncsClick(Sender: TObject);
  162. var
  163.   i, i1, i2: integer;
  164.   vs_caption: string;
  165. begin
  166.   if DM.CDS_QXGL_ZHSZ.RecordCount = 0 then
  167.     exit;
  168.   application.CreateForm(TfrmQxgl_Gnb, frmQxgl_Gnb);
  169.   DM.CDS_QXGL_ZHNR_INDEX.Refresh;
  170.   DM.CDS_QXGL_ZHNR_INDEX.filter := '组号=' + '''' + DM.CDS_QXGL_ZHSZ.fieldbyname('组号').asstring + '''';
  171.   DM.CDS_QXGL_ZHNR_INDEX.filtered := true;
  172.   DM.CDS_QXGL_ZHNR_INDEX.IndexFieldNames := '功能项';
  173.   for i := 0 to 4 do
  174.   begin
  175.     for i1 := 0 to frmMain.mainmenu.Items[i].count - 1 do
  176.     begin
  177.       vs_caption := frmMain.mainmenu.items[i].items[i1].caption;
  178.       if not DM.CDS_QXGL_ZHNR_INDEX.FindKey([vs_caption]) then
  179.         frmQxgl_GNB.Srclist.Items.Add(vs_caption);
  180.       for i2 := 0 to frmMain.mainmenu.Items[i].items[i1].count - 1 do
  181.       begin
  182.         vs_caption := frmMain.mainmenu.items[i].items[i1].items[i2].caption;
  183.         if not DM.CDS_QXGL_ZHNR_INDEX.FindKey([vs_caption]) then
  184.           frmQxgl_Gnb.Srclist.Items.Add(vs_caption);
  185.       end;
  186.     end;
  187.   end;
  188.   DM.CDS_QXGL_ZHNR_INDEX.First;
  189.   while not DM.CDS_QXGL_ZHNR_INDEX.eof do
  190.   begin
  191.     frmQxgl_Gnb.Dstlist.items.add(DM.CDS_QXGL_ZHNR_INDEX.fieldbyname('功能项').asstring);
  192.     DM.CDS_QXGL_ZHNR_INDEX.Next;
  193.   end;
  194.   try
  195.     frmQxgl_Gnb.showmodal;
  196.   finally
  197.     frmQxgl_Gnb.free;
  198.     DM.CDS_QXGL_ZHSZ.refresh;
  199.   end;
  200. end;
  201. end.