listbox1往listbox2增加选种的,同时删除listbox1中选种的。 procedure TForm1.ListBox1DblClick(Sender: TObject); var j,ii:integer; begin Listbox1.DeleteSelected; j:=ListBox1.Count-1; for ii:=0 to j do begin if ListBox1.Selected[ii] then begin listbox2.Items.Add (listbox1.items[ii]); ListBox1.ItemIndex:=ii; listbox1.DeleteSelected; end; end;end;
***********************listbox1往listbox2增加, procedure TForm1.ListBox1DblClick(Sender: TObject); var i,j:integer; begin for i:=0 to listbox1.count-1 do begin if ListBox1.Selected[i] then begin for j:=0 to listbox2.count-1 do if listbox.items[i]=listbox2[i] then //listbox2已存该items break; if j=listbox2.count+1 then //没有重复的 listbox2.Items.Add (listbox1.items[i]); end; end; end;
Delphi 自己带的例子。 unit Unit2;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls, Buttons;type TDualListDlg = class(TForm) OKBtn: TButton; CancelBtn: TButton; HelpBtn: TButton; SrcList: TListBox; DstList: TListBox; SrcLabel: TLabel; DstLabel: TLabel; IncludeBtn: TSpeedButton; IncAllBtn: TSpeedButton; ExcludeBtn: TSpeedButton; ExAllBtn: TSpeedButton; procedure IncludeBtnClick(Sender: TObject); procedure ExcludeBtnClick(Sender: TObject); procedure IncAllBtnClick(Sender: TObject); procedure ExcAllBtnClick(Sender: TObject); private { Private declarations } public { Public declarations } procedure MoveSelected(List: TCustomListBox; Items: TStrings); procedure SetItem(List: TListBox; Index: Integer); function GetFirstSelection(List: TCustomListBox): Integer; procedure SetButtons; end;var DualListDlg: TDualListDlg;implementation{$R *.dfm}procedure TDualListDlg.IncludeBtnClick(Sender: TObject); var Index: Integer; begin Index := GetFirstSelection(SrcList); MoveSelected(SrcList, DstList.Items); SetItem(SrcList, Index); end;procedure TDualListDlg.ExcludeBtnClick(Sender: TObject); var Index: Integer; begin Index := GetFirstSelection(DstList); MoveSelected(DstList, SrcList.Items); SetItem(DstList, Index); end;procedure TDualListDlg.IncAllBtnClick(Sender: TObject); var I: Integer; begin for I := 0 to SrcList.Items.Count - 1 do DstList.Items.AddObject(SrcList.Items[I], SrcList.Items.Objects[I]); SrcList.Items.Clear; SetItem(SrcList, 0); end;procedure TDualListDlg.ExcAllBtnClick(Sender: TObject); var I: Integer; begin for I := 0 to DstList.Items.Count - 1 do SrcList.Items.AddObject(DstList.Items[I], DstList.Items.Objects[I]); DstList.Items.Clear; SetItem(DstList, 0); end;procedure TDualListDlg.MoveSelected(List: TCustomListBox; Items: TStrings); var I: Integer; begin for I := List.Items.Count - 1 downto 0 do if List.Selected[I] then begin Items.AddObject(List.Items[I], List.Items.Objects[I]); List.Items.Delete(I); end; end;procedure TDualListDlg.SetButtons; var SrcEmpty, DstEmpty: Boolean; begin SrcEmpty := SrcList.Items.Count = 0; DstEmpty := DstList.Items.Count = 0; IncludeBtn.Enabled := not SrcEmpty; IncAllBtn.Enabled := not SrcEmpty; ExcludeBtn.Enabled := not DstEmpty; ExAllBtn.Enabled := not DstEmpty; end;function TDualListDlg.GetFirstSelection(List: TCustomListBox): Integer; begin for Result := 0 to List.Items.Count - 1 do if List.Selected[Result] then Exit; Result := LB_ERR; end;procedure TDualListDlg.SetItem(List: TListBox; Index: Integer); var MaxIndex: Integer; begin with List do begin SetFocus; MaxIndex := List.Items.Count - 1; if Index = LB_ERR then Index := 0 else if Index > MaxIndex then Index := MaxIndex; Selected[Index] := True; end; SetButtons; end;end.
procedure TForm1.ListBox1DblClick(Sender: TObject);
var j,ii:integer;
begin
Listbox1.DeleteSelected;
j:=ListBox1.Count-1;
for ii:=0 to j do
begin
if ListBox1.Selected[ii] then
begin
listbox2.Items.Add (listbox1.items[ii]);
ListBox1.ItemIndex:=ii;
listbox1.DeleteSelected;
end;
end;end;
procedure TForm1.ListBox1DblClick(Sender: TObject);
var i,j:integer;
begin
for i:=0 to listbox1.count-1 do
begin
if ListBox1.Selected[i] then
begin
for j:=0 to listbox2.count-1 do
if listbox.items[i]=listbox2[i] then
//listbox2已存该items
break;
if j=listbox2.count+1 then //没有重复的
listbox2.Items.Add (listbox1.items[i]);
end;
end;
end;
listbox1.itmes:=listbox2.itmes;
即把listbox2的所有内容传递给listbox1
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Forms, Dialogs, Controls, StdCtrls,
Buttons;type
TDualListDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
HelpBtn: TButton;
SrcList: TListBox;
DstList: TListBox;
SrcLabel: TLabel;
DstLabel: TLabel;
IncludeBtn: TSpeedButton;
IncAllBtn: TSpeedButton;
ExcludeBtn: TSpeedButton;
ExAllBtn: TSpeedButton;
procedure IncludeBtnClick(Sender: TObject);
procedure ExcludeBtnClick(Sender: TObject);
procedure IncAllBtnClick(Sender: TObject);
procedure ExcAllBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure MoveSelected(List: TCustomListBox; Items: TStrings);
procedure SetItem(List: TListBox; Index: Integer);
function GetFirstSelection(List: TCustomListBox): Integer;
procedure SetButtons;
end;var
DualListDlg: TDualListDlg;implementation{$R *.dfm}procedure TDualListDlg.IncludeBtnClick(Sender: TObject);
var
Index: Integer;
begin
Index := GetFirstSelection(SrcList);
MoveSelected(SrcList, DstList.Items);
SetItem(SrcList, Index);
end;procedure TDualListDlg.ExcludeBtnClick(Sender: TObject);
var
Index: Integer;
begin
Index := GetFirstSelection(DstList);
MoveSelected(DstList, SrcList.Items);
SetItem(DstList, Index);
end;procedure TDualListDlg.IncAllBtnClick(Sender: TObject);
var
I: Integer;
begin
for I := 0 to SrcList.Items.Count - 1 do
DstList.Items.AddObject(SrcList.Items[I],
SrcList.Items.Objects[I]);
SrcList.Items.Clear;
SetItem(SrcList, 0);
end;procedure TDualListDlg.ExcAllBtnClick(Sender: TObject);
var
I: Integer;
begin
for I := 0 to DstList.Items.Count - 1 do
SrcList.Items.AddObject(DstList.Items[I], DstList.Items.Objects[I]);
DstList.Items.Clear;
SetItem(DstList, 0);
end;procedure TDualListDlg.MoveSelected(List: TCustomListBox; Items: TStrings);
var
I: Integer;
begin
for I := List.Items.Count - 1 downto 0 do
if List.Selected[I] then
begin
Items.AddObject(List.Items[I], List.Items.Objects[I]);
List.Items.Delete(I);
end;
end;procedure TDualListDlg.SetButtons;
var
SrcEmpty, DstEmpty: Boolean;
begin
SrcEmpty := SrcList.Items.Count = 0;
DstEmpty := DstList.Items.Count = 0;
IncludeBtn.Enabled := not SrcEmpty;
IncAllBtn.Enabled := not SrcEmpty;
ExcludeBtn.Enabled := not DstEmpty;
ExAllBtn.Enabled := not DstEmpty;
end;function TDualListDlg.GetFirstSelection(List: TCustomListBox): Integer;
begin
for Result := 0 to List.Items.Count - 1 do
if List.Selected[Result] then Exit;
Result := LB_ERR;
end;procedure TDualListDlg.SetItem(List: TListBox; Index: Integer);
var
MaxIndex: Integer;
begin
with List do
begin
SetFocus;
MaxIndex := List.Items.Count - 1;
if Index = LB_ERR then Index := 0
else if Index > MaxIndex then Index := MaxIndex;
Selected[Index] := True;
end;
SetButtons;
end;end.