将 ListBox 项目从 ListBox 拖放到 ListBox 及其图像并避免重复 Delphi
Drag Drop ListBoxItems from ListBox1 to ListBox2 with their images and avoiding duplication Delphi
我的代码正在运行并且可以拖放,但我想添加的是将项目从 ListBox1 拖放到 ListBox2 及其图像。此外,当我想重新排列 ListBox2 中的项目时,它会重复而不删除前一个项目。
或者,如果可能的话,我很想知道如何通过双击将项目从 ListBox1 移动到 ListBox2,而无需拖放。
我使用的是10.2版本
这是我的代码,如果有人能帮助我,我将不胜感激:
type
TListBoxItem = class(FMX.ListBox.TListBoxItem)
private
function GetData: String;
procedure SetData(const Value: String);
published
property Data:String Read GetData Write SetData;
end;
var
Form13: TForm13;
procedure TForm13.ListBox3DragDrop(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
var
T,D:TListBoxItem;
Begin
ListBox3.ItemHeight:=81;
ListBox3.Canvas.Font.Size:=20;
T:= TListBoxItem.Create(nil);
D:= TListBoxItem(Data.Source);
T.Data:= D.Data;
ListBox3.AddObject(T);
end;
procedure TForm13.ListBox3DragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Operation: TDragOperation);
begin
if (Sender is TListBoxItem) and (Data.Source is TListBoxItem) and (Sender is TImage)
and Not (Sender = Data.Source)
and (TListBoxItem(Data.Source).Text<>'')
then Operation:=TDragOperation.Move
else Operation:=TDragOperation.None;
end;
{ TListBoxItem }
function TListBoxItem.GetData: String;
begin
Result := Text;
end;
procedure TListBoxItem.SetData(const Value: String);
begin
Text:=Value;
end;
将 DblClick 事件放在列表框 1 上,将所选项目的父项移动到另一个列表框。
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if ListBox1.Selected <> nil then
ListBox1.Selected.Parent := ListBox2;
end;
我的代码正在运行并且可以拖放,但我想添加的是将项目从 ListBox1 拖放到 ListBox2 及其图像。此外,当我想重新排列 ListBox2 中的项目时,它会重复而不删除前一个项目。
或者,如果可能的话,我很想知道如何通过双击将项目从 ListBox1 移动到 ListBox2,而无需拖放。
我使用的是10.2版本
这是我的代码,如果有人能帮助我,我将不胜感激:
type
TListBoxItem = class(FMX.ListBox.TListBoxItem)
private
function GetData: String;
procedure SetData(const Value: String);
published
property Data:String Read GetData Write SetData;
end;
var
Form13: TForm13;
procedure TForm13.ListBox3DragDrop(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
var
T,D:TListBoxItem;
Begin
ListBox3.ItemHeight:=81;
ListBox3.Canvas.Font.Size:=20;
T:= TListBoxItem.Create(nil);
D:= TListBoxItem(Data.Source);
T.Data:= D.Data;
ListBox3.AddObject(T);
end;
procedure TForm13.ListBox3DragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Operation: TDragOperation);
begin
if (Sender is TListBoxItem) and (Data.Source is TListBoxItem) and (Sender is TImage)
and Not (Sender = Data.Source)
and (TListBoxItem(Data.Source).Text<>'')
then Operation:=TDragOperation.Move
else Operation:=TDragOperation.None;
end;
{ TListBoxItem }
function TListBoxItem.GetData: String;
begin
Result := Text;
end;
procedure TListBoxItem.SetData(const Value: String);
begin
Text:=Value;
end;
将 DblClick 事件放在列表框 1 上,将所选项目的父项移动到另一个列表框。
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
if ListBox1.Selected <> nil then
ListBox1.Selected.Parent := ListBox2;
end;