Thx, Dein Code ist etwas übersichtlicher, als meiner und auch kleiner.
So gefällts mir besser. Nur noch ein Schönheitsfehler, zumindest aus meiner Sicht 8) :
Delphi-Quellcode:
procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source is TListBox;
end;
procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
lbSource,lbSender : TListBox;
begin
lbSource := Source as TListBox;
lbSender := Sender as TListbox;
lbsender.Items.Add(lbSource.Items[lbSource.ItemIndex]);
lbSource.Items.Delete (lbSource.ItemIndex);
end;
procedure TForm1.ListBox2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbLeft then with Sender as TListBox do begin
if ItemAtPos (Point (x,y),true) >= 0 then
BeginDrag (false);
end;
end;
Dieser Code steht jetzt 4mal im Programm (für 4 Listboxen). Es ist also immer derselbe, bis auf den Prozedur-Namen. Wie kann ich den verallgemeinern oder besser noch zur Laufzeit auswerten, je nachdem, wieviele Listboxen ich im Endeffekt brauche ?
Mir fällt gerade ein, daß ich das ganze auf die Form übertragen könnte. Aber das DragDrop der Form hat kein accept. So wirds wohl nicht gehen, oder was muß ich da hin schreiben ?
Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
end;