2017-04-26 40 views
-1

我的代碼工作和拖放,但我想要添加的是拖放項目從ListBox1到ListBox2與他們的圖像。另外當我想重新排列ListBox2中的項目時,它將重複,而不刪除前一個。從ListBox1拖放ListBoxItems到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; 
+0

我在'TListboxItem'類聲明的基礎上添加了'firemonkey'標籤。每當你的問題涉及到firemonkey框架,在標籤中指明它,目標平臺可能是重要的知道,也是你正在使用的Delphi版本。後者是因爲去年發​​生了密集的發展。 –

+0

好的,謝謝你,我會更具體地指出。這是我第一次發帖 – Samar

+0

沒關係,我們都有了第一次,只要注意**所有**請求的細節。我會針對您的問題採取行動,但我要求您在帖子中包含如何填充第一個列表框。也刪除'OnDragOver'中的明顯不可能的東西(發件人不能同時是'TListBoxItem'和'TImage'!) –

回答

2
上爲ListBox

把DblClick事件,將所選項目的父另一個列表框。

procedure TForm1.ListBox1DblClick(Sender: TObject); 
begin 
    if ListBox1.Selected <> nil then 
    ListBox1.Selected.Parent := ListBox2; 
end; 
+0

@Samar如果你仔細想想,我相信你明白爲什麼* ...它不工作...... *是最無用的單詞之一。所以,請添加新評論並確切說明哪些內容無效。 –

+0

@TomBrunberg好,所以在我的代碼中,我面臨兩個問題,我希望你能幫助我解決任何問題。第一個當我拖放項目(每個項目都有文本和圖像)從listbox1到listbox2只有文本被移動。 而第二個問題是,當我想切換列表框中的項目的地方它重複。我只想項目切換而不重複。 – Samar

+0

@Samar **最初**您要求d&d **或**雙擊移動物品從LB1移動到LB2(沒有關於重新安排LB2中的物品)。你不能突然改變你的問題到另一個問題。 IOW你要求提供2個選項中的1個,Kohull回答你的第二個選項。我的簡單測試表明它可以正常工作。答案是正確的,除非你能解釋它如何不回答你最初要求的兩種選擇。 –