Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
Delphi 7 Professional
|
Problem mit Drag Drob
23. Mär 2005, 00:05
Hallo,
ich möchte von einer tfilelist in eine listbox schieben wie kan ich das machen. ich nur wie ich von listbox zu listbox schiebe .
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source is TListBox;
end;
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i,i2 : integer;
lbSource,lbSender : TListBox;
begin
lbSource := Source as TListBox;
lbSender := Sender as TListbox;
//Drag and drop der gleichen LB verhindern
if lbSource <> lbSender then
begin
//items kopieren
//du löschst items, deswegen müßte die for Schleife rückwärts zählen, dann würden die itmes aber spiegelverkehrt hinzugefügt
//ich nehm da lieber eine while schleife, eine for-schleife macht dir das leben schwerer (finde ich)
i:=0;
while i<=lbSource.count-1 do //hier muß Source stehen, du willst von source nach Sender!
begin
if lbSource.Selected [i] then
begin
//Variante 1 = hinzufügen
//lbSender.Items.Add(lbSource.Items[i]);
//Variante 2 = Einfügen
i2:=lbSender.ItemAtPos(point(x,y),false);
lbSender.Items.insert(i2,lbSource.Items[i]);
//Einträge in sourceListbox löschen
lbSource.Items.Delete (i);
continue; //inc(i) "überspringen" und mit gleichem item (wegen Löschung) weiterarbeiten
end;
inc(i);
end;
end;
end;
procedure TForm1.ListBox1MouseDown(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;
wo muss man was ändern wen es den geht
gruss bernd
Bernd
|
|
Zitat
|