Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Objekt zwischen zwei Listbox bewegen (https://www.delphipraxis.net/97744-objekt-zwischen-zwei-listbox-bewegen.html)

poterp 15. Aug 2007 12:19


Objekt zwischen zwei Listbox bewegen
 
hallo,
ich habe eine Anwendung mit mehrere Listboxen. Meine ziel ist es, sowohl die reihenfolge innerhalb ein Listbox ändern als auch objekte in andere Listbox ziehen. Reihenfolge Änderung Innerhalb ein listbox funktioniert aber Objekt in anderem Listboxen ziehen funktioniert nicht. hier ist meine quelle:
Delphi-Quellcode:
var
  Form3: TForm3;
// form level
   StartingPoint : TPoint;

implementation

{$R *.dfm} 
...............................
procedure TForm3.FormCreate(Sender: TObject);
begin
ListBox_strengths.Items.Add('ich');
ListBox_strengths.Items.Add('du');
ListBox_strengths.DragMode := dmAutomatic;
ListBox_themen.DragMode:= dmAutomatic;
ListBox_themen.Items.Add('mo');
ListBox_themen.Items.Add('no');
Listbox_themen.MultiSelect:=true;
end;

procedure TForm3.ListBox_themenDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
   DropPosition, StartPosition, I: Integer;
   DropPoint: TPoint;
   a: string;
 begin
    DropPoint.X := X;
   DropPoint.Y := Y;
   with Source as TListBox do
   begin
     StartPosition := ItemAtPos (StartingPoint,True) ;
     DropPosition := ItemAtPos(DropPoint,True) ;

     Items.Move(StartPosition, DropPosition) ;
   end;
    if Source is TListBox then
     begin
  for i := 0 to TListBox(Source).Items.Count-1 do
  if TListBox(Source).Selected[i] then
    a:= ListBox_themen.Items.Strings[i];
    ListBox_strengths.Items.Add(a);
 end;
end;

procedure TForm3.ListBox_themenDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
   Accept := Source = ListBox_themen;
    if Source is TListBox then
    begin
 accept:= true;
   end;
end;
......................................................................
procedure TForm3.ListBox_strengthsDragDrop(Sender, Source: TObject; X,
  Y: Integer);

var
   DropPosition, StartPosition, I: Integer;
   DropPoint: TPoint;
begin
   DropPoint.X := X;
   DropPoint.Y := Y;
   with Source as TListBox do
   begin
     StartPosition := ItemAtPos (StartingPoint,True) ;
     DropPosition := ItemAtPos(DropPoint,True) ;

     Items.Move(StartPosition, DropPosition) ;
   end;
    if Source is TListBox then begin
  for i := 0 to TListBox(Source).Items.Count-1 do
  if TListBox(Source).Selected[i] then
  ListBox_strengths.Items.Add(TListBox(Source).Items[i]);
end;
end;

procedure TForm3.ListBox_strengthsDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
    Accept := Source = ListBox_strengths;
     if Source is TListBox then
    begin
 accept:= true;
   end;
end;
onMouseDown von beide stehen: StartingPoint.X := X; StartingPoint.Y := Y;

weisst jemand, wo das Problem liegen kann?
grüß
poter

shmia 15. Aug 2007 12:32

Re: Objekt zwischen zwei Listbox bewegen
 
Du kannst gleich nochmal neu anfangen.
Wähle im Delphi-Menü:
Datei -> Neu... -> Formulare -> Dialog mit zwei Listenfeldern
Und du hast eine Vorlage mit der ganzen Drag & Drop Funktionalität.

Hansa 15. Aug 2007 13:26

Re: Objekt zwischen zwei Listbox bewegen
 
Auch hier gilt : braucht man so was nochmals dann unten auf "vererben" klicken. Dann braucht man seine gemachten Einstellungen/Änderungen nicht wieder komplett neu zu machen (Objektablage). Würde das von vorneherein als vererbt deklarieren, denn wer weiß ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz