Hi,
einfach bei der Listbox die Eigenschaft DragMode auf dmAutomatic stellen, damit kannst du dann die Elemente per Drag&Drop bewegen.
Wenn du nun ein Element per Drag über ein Controll ziehst, wird bei diesem Cotroll (z.B. einem TEdit) das OnDragOver-Ereignis ausgelöst. Hier musst du nur prüfen, wo das Objekt her kommt, dass dieses Ereignis ausgelöst hat. Wenn es die ListBox ist, setzt du accept auf True (du würdest ein Drag&Drop annehmen) und beim loslassen wird dann wiederum das OnDragDrop-Ereignis ausgelöst. Hier musst du nur noch den ausgewählten Text ins Edit eintragen.
Also 3 Schritte,
1) Bei der Listbox DragMode auf dmAutomatic setzen
2) Beim Edit das Ereignis OnDragOver erstellen
3) Beim Edit das Ereignis OnDragDrop erstellen
Dann sollte dein Code ungefähr so aussehen
Delphi-Quellcode:
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source = ListBox1 then
begin
Accept := true;
end;
end;
procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
(Sender as TEdit).Text := ListBox1.Items[ListBox1.ItemIndex];
end;
Das war's schon. Achtung, hab im DragDrop jetzt nicht überprüft ob der Sender überhaupt eine Listbox ist und ob die Referenz darauf gültig ist, sollte man natürlich immer machen.
Gruß Der Unwissende