AGB  ·  Datenschutz  ·  Impressum  







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

Drag&Drop im TVirtualStringTree

Ein Thema von dominikkv · begonnen am 8. Mai 2007 · letzter Beitrag vom 8. Mai 2007
Antwort Antwort
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 14:53
Hi
ich hab nen TVirtualStringTree und möchte daraus über Drag&Drop Nodes in ein andrers Programm ziehen können.
In dem TVirtualStringTree sind verschiedene Musiktitel aufgelistet und mein Programm "weiß" wo sich das entsprechende mp3-File befinet.
Ich stelle mir das so vor als ob man nen mp3 vom Explorer zB in den WMP zieht, nur eben nicht vom Explorer sondern von meinem Prog...

gibt es vllt irgendwo ein tutorial für D&D??
oder kann mir jemand erklären wie ich das machen muss?
thx

mfg.dominik
Dominik
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 15:09
klar gibt es da tutorials. such doch mal. ich hab seinerzeit erst gesucht und gleich gefunden. das tue ich jetzt nicht für dich...
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 15:11
Zitat von bttb930:
klar gibt es da tutorials. such doch mal. ich hab seinerzeit erst gesucht und gleich gefunden. das tue ich jetzt nicht für dich...
jo hab eigendlich schon gesucht aber nix gefunden...
werd nochmal schauen, wenn aber jemand ein paar tipps hat bin ich dankbar
Dominik
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 18:35
ich hab hier etwas gefunden
Delphi-Quellcode:
procedure TForm1.FileListBox1MouseMove(Sender: TObject; Shift:
  TShiftState;
  X, Y: Integer);
const
  Threshold = 5;
var
  SelFileList: TStrings;
  i: Integer;
  DataObject: IDataObject;
  Effect: DWORD;
begin
  with Sender as TFileListBox do
  begin
    if (SelCount > 0) and (csLButtonDown in ControlState)
      and ((Abs(X - FDragStartPos.x) >= Threshold)
      or (Abs(Y - FDragStartPos.y) >= Threshold)) then
      begin
      Perform(WM_LBUTTONUP, 0, MakeLong(X, Y));
      SelFileList := TStringList.Create;
      try
        SelFileList.Capacity := SelCount;
        for i := 0 to Items.Count - 1 do
          if Selected[i] then SelFileList.Add(Items[i]);
        DataObject := GetFileListDataObject(Directory, SelFileList);
      finally
        SelFileList.Free;
      end;
      Effect := DROPEFFECT_NONE;
      DoDragDrop(DataObject, Self, DROPEFFECT_COPY, Effect);
    end;
  end;
end;
allerdings gibt er mir bei der Zeile
DoDragDrop(DataObject, Self, DROPEFFECT_COPY, Effect); den Fehler beim compilieren aus:
Zitat:
[Pascal Fehler] Unit1.pas(144): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
in der OH ist DoDragDrop so definiert:
Zitat:
WINOLEAPI DoDragDrop(
IDataObject * pDataObject, //Pointer to the data object
IDropSource * pDropSource, //Pointer to the source
DWORD dwOKEffect, //Effects allowed by the source
DWORD * pdwEffect //Pointer to effects on the source
);
was ist hier falsch?
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 18:56
hallo,

du brauchst da ein element, das das Interface IDropSource implementiert. Das Form tut das anscheinend nicht.

Du must wahrscheinlihc die Unit ActiveX dazu einbinden, mach dann mal folgendes:

WO in deinem Delphi-Quelltext die Form-Klasse deklariert wird:

TForm1 = class (TForm) daraus machst du:


TForm1 = class (TForm, IDropSource) Wenn du eine Delphi-Version >= Professional hast, reicht ein beherzter Druck auf "Strg+Shift+C" und du hast deine Stubs da.

Eventuell solltest du statt dem "self" das du übergibst, einmal versuchen, direkt den VirtualStringTree zu übergeben - kann mir gut vorstellen, dass der das schon implementiert.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Drag&Drop im TVirtualStringTree

  Alt 8. Mai 2007, 20:27
hi
danke für deine hilfe...
es hat sich jetzt herrausgestellt das der letzte parameter kein DWORD sein darf sondern ein normaler Integer...obwohl das im beispiel (was ich ja nicht selbst gecoded hab) UND in der OH falsch drinnstand...

jetzt hab ich mein D&D
thx an alle
Dominik
  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 10:36 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