![]() |
drag & drop mit VST und Listbox
abend,
ich grieg das mit dem drag & drop irgendwie nicht hin. die markierten strings aus VST (daten.CPath) sollen per drag and drop in eine listbox übertragen werden. über einen button hab ichs schon geschafft
Delphi-Quellcode:
wie grieg ich das jetzt über drag & drop zum laufen?
procedure TForm1.Button1Click(Sender: TObject);
var node, selnode: PVirtualNode; daten: CTreedata; anz, i:integer; begin SelNode := VST.GetFirstSelected; while SelNode <> nil do begin daten := CTreedata (VST.GetNodeData(selnode)^); Listbox1.Items.Add(CTreedata(daten).CPath); SelNode := VST.GetNextSelected(SelNode); end; end; |
Re: drag & drop mit VST und Listbox
Moin,
dein Code gehört in die Ereignisbehandlung für ListBox.OnDragDrop, auch für ListBox.OnDragOver solltest du eine Zeile vorsehen.
Delphi-Quellcode:
Grüße vom marabu
procedure TDemoForm.ListBoxDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin Accept := (Source = VST) and Assigned(VST.GetFirstSelected); end; procedure TDemoForm.ListBoxDragDrop(Sender, Source: TObject; X, Y: Integer); var vn: PVirtualNode; nd: PNodeData; begin with Sender as TListBox do begin vn := VST.GetFirstSelected; while Assigned(vn) do begin nd := VST.GetNodeData(vn); Items.Add(nd.CPath); vn := VST.GetNextSelected(vn); end; end; end; |
Re: drag & drop mit VST und Listbox
so, hab den code noch etwas geändert.
bei
Delphi-Quellcode:
kam bei mir der Fehler "Variable erforderlich".
Accept := (Source = VST) and Assigned(VST.GetFirstSelected);
und
Delphi-Quellcode:
benötigt einen zeiger oder sowas, mit
nd := VST.GetNodeData(vn);
Delphi-Quellcode:
funktionierts.PNodeData(nd := VST.GetNodeData(vn)^); hier nochmal der gesamte quelltext:
Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin if Assigned(VST.FocusedNode) then Accept := (Source = VST);// and Assigned(VST.GetFirstSelected); end; procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var selnode: PVirtualNode; daten: CTreedata; begin with Sender as TListBox do begin selnode := VST.GetFirstSelected; while Assigned(selnode) do begin daten := CTreedata (VST.GetNodeData(selnode)^); Items.Add(daten.CPath); selnode := VST.GetNextSelected(selnode); end; end; end; danke marabu :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz