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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_QXGL_GNSZ;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls,
  5.   Buttons, ExtCtrls, ComCtrls;
  6. type
  7.   TfrmQXGL_GNB = class(TForm)
  8.     Panel1: TPanel;
  9.     StatusBar1: TStatusBar;
  10.     SrcLabel: TLabel;
  11.     DstLabel: TLabel;
  12.     IncludeBtn: TSpeedButton;
  13.     IncAllBtn: TSpeedButton;
  14.     ExcludeBtn: TSpeedButton;
  15.     ExAllBtn: TSpeedButton;
  16.     SrcList: TListBox;
  17.     Dstlist: TListBox;
  18.     Panel2: TPanel;
  19.     btnOK: TSpeedButton;
  20.     btnCancel: TSpeedButton;
  21.     procedure IncludeBtnClick(Sender: TObject);
  22.     procedure ExcludeBtnClick(Sender: TObject);
  23.     procedure IncAllBtnClick(Sender: TObject);
  24.     procedure ExcAllBtnClick(Sender: TObject);
  25.     procedure SrcListDblClick(Sender: TObject);
  26.     procedure DstlistDblClick(Sender: TObject);
  27.     procedure btnOKClick(Sender: TObject);
  28.     procedure btnCancelClick(Sender: TObject);
  29.     procedure FormActivate(Sender: TObject);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     { Public declarations }
  34.     {移动两个列表框的函数}
  35.     procedure MoveSelected(List: TCustomListBox; Items: TStrings);
  36.     procedure SetItem(List: TListBox; Index: Integer);
  37.     function GetFirstSelection(List: TCustomListBox): Integer;
  38.     procedure SetButtons;
  39.   end;
  40. var
  41.   frmQXGL_GNB: TfrmQXGL_GNB;
  42. implementation
  43. uses U_qxgl_zhsz, WzglDB;
  44. {$R *.DFM}
  45. procedure TfrmQXGL_GNB.IncludeBtnClick(Sender: TObject);
  46. var
  47.   Index: Integer;
  48. begin
  49.   Index := GetFirstSelection(SrcList);
  50.   MoveSelected(SrcList, DstList.Items);
  51.   SetItem(SrcList, Index);
  52. end;
  53. procedure TfrmQXGL_GNB.ExcludeBtnClick(Sender: TObject);
  54. var
  55.   Index: Integer;
  56. begin
  57.   Index := GetFirstSelection(DstList);
  58.   MoveSelected(DstList, SrcList.Items);
  59.   SetItem(DstList, Index);
  60. end;
  61. procedure TfrmQXGL_GNB.IncAllBtnClick(Sender: TObject);
  62. var
  63.   I: Integer;
  64. begin
  65.   for I := 0 to SrcList.Items.Count - 1 do
  66.     DstList.Items.AddObject(SrcList.Items[I],
  67.       SrcList.Items.Objects[I]);
  68.   SrcList.Items.Clear;
  69.   SetItem(SrcList, 0);
  70. end;
  71. procedure TfrmQXGL_GNB.ExcAllBtnClick(Sender: TObject);
  72. var
  73.   I: Integer;
  74. begin
  75.   for I := 0 to DstList.Items.Count - 1 do
  76.     SrcList.Items.AddObject(DstList.Items[I], DstList.Items.Objects[I]);
  77.   DstList.Items.Clear;
  78.   SetItem(DstList, 0);
  79. end;
  80. procedure TfrmQXGL_GNB.MoveSelected(List: TCustomListBox; Items: TStrings);
  81. var
  82.   I: Integer;
  83. begin
  84.   for I := List.Items.Count - 1 downto 0 do
  85.     if List.Selected[I] then
  86.     begin
  87.       Items.AddObject(List.Items[I], List.Items.Objects[I]);
  88.       List.Items.Delete(I);
  89.     end;
  90. end;
  91. procedure TfrmQXGL_GNB.SetButtons;
  92. var
  93.   SrcEmpty, DstEmpty: Boolean;
  94. begin
  95.   SrcEmpty := SrcList.Items.Count = 0;
  96.   DstEmpty := DstList.Items.Count = 0;
  97.   IncludeBtn.Enabled := not SrcEmpty;
  98.   IncAllBtn.Enabled := not SrcEmpty;
  99.   ExcludeBtn.Enabled := not DstEmpty;
  100.   ExAllBtn.Enabled := not DstEmpty;
  101. end;
  102. function TfrmQXGL_GNB.GetFirstSelection(List: TCustomListBox): Integer;
  103. begin
  104.   for Result := 0 to List.Items.Count - 1 do
  105.     if List.Selected[Result] then Exit;
  106.   Result := LB_ERR;
  107. end;
  108. procedure TfrmQXGL_GNB.SetItem(List: TListBox; Index: Integer);
  109. var
  110.   MaxIndex: Integer;
  111. begin
  112.   with List do
  113.   begin
  114.     SetFocus;
  115.     MaxIndex := List.Items.Count - 1;
  116.     if Index = LB_ERR then Index := 0
  117.     else if Index > MaxIndex then Index := MaxIndex;
  118.     Selected[Index] := True;
  119.   end;
  120.   SetButtons;
  121. end;
  122. procedure TfrmQXGL_GNB.SrcListDblClick(Sender: TObject);
  123. begin
  124.   includebtn.Click;
  125. end;
  126. procedure TfrmQXGL_GNB.DstlistDblClick(Sender: TObject);
  127. begin
  128.   excludebtn.Click;
  129. end;
  130. //更新具体组号的权限
  131. procedure TfrmQXGL_GNB.btnOKClick(Sender: TObject);
  132. var
  133.   i: integer;
  134. begin
  135.   with DM do
  136.   begin
  137.     CDS_QXGL_ZHNR.First;
  138.     while not CDS_QXGL_ZHNR.Eof do
  139.     begin
  140.       CDS_QXGL_ZHNR.Delete;
  141.     end;
  142.     CDS_QXGL_ZHSZ.ApplyUpdates(0);
  143.     for i := 0 to dstlist.items.count - 1 do
  144.     begin
  145.       CDS_QXGL_ZHNR.insert;
  146.       CDS_QXGL_ZHNR.FieldByName('功能项').asstring := dstlist.Items.Strings[i];
  147.       CDS_QXGL_ZHNR.post;
  148.     end;
  149.     CDS_QXGL_ZHSZ.applyupdates(0);
  150.   end;
  151.   close;
  152. end;
  153. procedure TfrmQXGL_GNB.btnCancelClick(Sender: TObject);
  154. begin
  155.   close;
  156. end;
  157. procedure TfrmQXGL_GNB.FormActivate(Sender: TObject);
  158. begin
  159.   if srclist.Items.Count > 0 then
  160.   begin
  161.     Includebtn.Enabled := true;
  162.     IncAllbtn.Enabled := True;
  163.   end;
  164.   if Dstlist.Items.Count > 0 then
  165.   begin
  166.     ExcludeBtn.Enabled := true;
  167.     ExAllbtn.Enabled := True;
  168.   end;
  169. end;
  170. end.