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

Delphi/CppBuilder

开发平台:

Delphi

  1. unit U_szcx;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls,
  5.   Buttons, ExtCtrls;
  6. type
  7.   TfrmSzcx = class(TForm)
  8.     Panel1: TPanel;
  9.     SrcList: TListBox;
  10.     IncludeBtn: TSpeedButton;
  11.     IncAllBtn: TSpeedButton;
  12.     ExcludeBtn: TSpeedButton;
  13.     ExAllBtn: TSpeedButton;
  14.     DstList: TListBox;
  15.     Panel2: TPanel;
  16.     SpeedButton1: TSpeedButton;
  17.     SpeedButton2: TSpeedButton;
  18.     procedure IncludeBtnClick(Sender: TObject);
  19.     procedure ExcludeBtnClick(Sender: TObject);
  20.     procedure IncAllBtnClick(Sender: TObject);
  21.     procedure ExcAllBtnClick(Sender: TObject);
  22.     procedure SpeedButton1Click(Sender: TObject);
  23.     procedure FormActivate(Sender: TObject);
  24.     procedure SpeedButton2Click(Sender: TObject);
  25.     procedure SrcListDblClick(Sender: TObject);
  26.     procedure DstListDblClick(Sender: TObject);
  27.   private
  28.     { Private declarations }
  29.   public
  30.     { Public declarations }
  31.     procedure MoveSelected(List: TCustomListBox; Items: TStrings);
  32.     procedure SetItem(List: TListBox; Index: Integer);
  33.     function GetFirstSelection(List: TCustomListBox): Integer;
  34.     procedure SetButtons;
  35.   end;
  36. var
  37.   frmSzcx: TfrmSzcx;
  38.   Ordered: Boolean = False;
  39. implementation
  40. {$R *.DFM}
  41. procedure TfrmSzcx.IncludeBtnClick(Sender: TObject);
  42. var
  43.   Index: Integer;
  44. begin
  45.   Index := GetFirstSelection(SrcList);
  46.   MoveSelected(SrcList, DstList.Items);
  47.   SetItem(SrcList, Index);
  48. end;
  49. procedure TfrmSzcx.ExcludeBtnClick(Sender: TObject);
  50. var
  51.   Index: Integer;
  52. begin
  53.   Index := GetFirstSelection(DstList);
  54.   MoveSelected(DstList, SrcList.Items);
  55.   SetItem(DstList, Index);
  56. end;
  57. procedure TfrmSzcx.IncAllBtnClick(Sender: TObject);
  58. var
  59.   I: Integer;
  60. begin
  61.   for I := 0 to SrcList.Items.Count - 1 do
  62.     DstList.Items.AddObject(SrcList.Items[I],
  63.       SrcList.Items.Objects[I]);
  64.   SrcList.Items.Clear;
  65.   SetItem(SrcList, 0);
  66. end;
  67. procedure TfrmSzcx.ExcAllBtnClick(Sender: TObject);
  68. var
  69.   I: Integer;
  70. begin
  71.   for I := 0 to DstList.Items.Count - 1 do
  72.     SrcList.Items.AddObject(DstList.Items[I], DstList.Items.Objects[I]);
  73.   DstList.Items.Clear;
  74.   SetItem(DstList, 0);
  75. end;
  76. procedure TfrmSzcx.MoveSelected(List: TCustomListBox; Items: TStrings);
  77. var
  78.   I: Integer;
  79. begin
  80.   for I := List.Items.Count - 1 downto 0 do
  81.     if List.Selected[I] then
  82.     begin
  83.       Items.AddObject(List.Items[I], List.Items.Objects[I]);
  84.       List.Items.Delete(I);
  85.     end;
  86. end;
  87. procedure TfrmSzcx.SetButtons;
  88. var
  89.   SrcEmpty, DstEmpty: Boolean;
  90. begin
  91.   SrcEmpty := SrcList.Items.Count = 0;
  92.   DstEmpty := DstList.Items.Count = 0;
  93.   IncludeBtn.Enabled := not SrcEmpty;
  94.   IncAllBtn.Enabled := not SrcEmpty;
  95.   ExcludeBtn.Enabled := not DstEmpty;
  96.   ExAllBtn.Enabled := not DstEmpty;
  97. end;
  98. function TfrmSzcx.GetFirstSelection(List: TCustomListBox): Integer;
  99. begin
  100.   for Result := 0 to List.Items.Count - 1 do
  101.     if List.Selected[Result] then Exit;
  102.   Result := LB_ERR;
  103. end;
  104. procedure TfrmSzcx.SetItem(List: TListBox; Index: Integer);
  105. var
  106.   MaxIndex: Integer;
  107. begin
  108.   with List do
  109.   begin
  110.     SetFocus;
  111.     MaxIndex := List.Items.Count - 1;
  112.     if Index = LB_ERR then Index := 0
  113.     else if Index > MaxIndex then Index := MaxIndex;
  114.     Selected[Index] := True;
  115.   end;
  116.   SetButtons;
  117. end;
  118. procedure TfrmSzcx.SpeedButton1Click(Sender: TObject);
  119. begin
  120.   Ordered := True;
  121.   close;
  122. end;
  123. procedure TfrmSzcx.FormActivate(Sender: TObject);
  124. begin
  125.   Ordered := False;
  126. end;
  127. procedure TfrmSzcx.SpeedButton2Click(Sender: TObject);
  128. begin
  129.   close;
  130. end;
  131. procedure TfrmSzcx.SrcListDblClick(Sender: TObject);
  132. begin
  133.   IncludeBtn.click;
  134. end;
  135. procedure TfrmSzcx.DstListDblClick(Sender: TObject);
  136. begin
  137.   ExcludeBtn.click;
  138. end;
  139. end.