AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

drag & drop mit VST und Listbox

Ein Thema von made in Germany · begonnen am 17. Apr 2008 · letzter Beitrag vom 18. Apr 2008
Antwort Antwort
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#1

drag & drop mit VST und Listbox

  Alt 17. Apr 2008, 23:24
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:
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;
wie grieg ich das jetzt über drag & drop zum laufen?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: drag & drop mit VST und Listbox

  Alt 18. Apr 2008, 07:26
Moin,

dein Code gehört in die Ereignisbehandlung für ListBox.OnDragDrop, auch für ListBox.OnDragOver solltest du eine Zeile vorsehen.

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
made in Germany

Registriert seit: 28. Apr 2006
50 Beiträge
 
#3

Re: drag & drop mit VST und Listbox

  Alt 18. Apr 2008, 16:45
so, hab den code noch etwas geändert.
bei
  Accept := (Source = VST) and Assigned(VST.GetFirstSelected); kam bei mir der Fehler "Variable erforderlich".

und
  nd := VST.GetNodeData(vn); benötigt einen zeiger oder sowas, mit
Delphi-Quellcode:
  
PNodeData(nd := VST.GetNodeData(vn)^);
funktionierts.

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 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