AGB  ·  Datenschutz  ·  Impressum  







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

drag & drop zwischen zwei delphi5-anwendungen

Ein Thema von GJungbuth · begonnen am 28. Jun 2005 · letzter Beitrag vom 15. Okt 2006
Antwort Antwort
Benutzerbild von GJungbuth
GJungbuth

Registriert seit: 28. Jun 2005
Ort: Buxtehude
2 Beiträge
 
Delphi 5 Enterprise
 
#1

drag & drop zwischen zwei delphi5-anwendungen

  Alt 28. Jun 2005, 11:36
moin gemeinde,
habe viele (alle) beiträge zu drag&drop gelesen.
leider hilft mir keiner weiter.
auch http://www.swissdelphicenter.ch/de/showcode.php?id=1627
funktioniert in meinem fall NICHT. das DragOver-event wird nicht gefeuert, wenn ich aus einer delphi-anwendung einen eintrag aus einem treeview über die zweite anwendung drag.

ich möchte aus ein TreeView1 der ersten anwendung auf ein irgendein control der zweiten anwendung dropen. in der zweiten anwendung brauche ich zugriff auf TreeView1.Selected.Data der ersten anwendung.

wie kann ich das anstellen?
wissen ist macht.
weisst nix
-->>
macht nix
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: drag & drop zwischen zwei delphi5-anwendungen

  Alt 28. Jun 2005, 12:56
Zitat von GJungbuth:
auch http://www.swissdelphicenter.ch/de/showcode.php?id=1627
funktioniert in meinem fall NICHT. das DragOver-event wird nicht gefeuert, wenn ich aus einer delphi-anwendung einen eintrag aus einem treeview über die zweite anwendung drag.
Ein Treeview ist ein WinControl und hat somit ein eigenes Window-Handle.
Mit dem Beispielcode von oben kannst du so zwar auf dem Formular droppen, aber nicht auf dem TreeView.
Deshalb:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  OleInitialize(nil);
  {Allow window to accept drop events}
  OleCheck(RegisterDragDrop(Handle, Self));
  
  // Handle des TreeView registrieren
  OleCheck(RegisterDragDrop(TreeView1.Handle, Self));
end;
Aber Obacht!! Zum Zeitpunkt von OnCreate gibt es das Handle des TreeView evtl. noch nicht.
Dann müsste RegisterDragDrop später in OnShow (oder noch später) ausgeführt werden.
RevokeDragDrop muss auch aufgerufen werden - is klar.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von GJungbuth
GJungbuth

Registriert seit: 28. Jun 2005
Ort: Buxtehude
2 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: drag & drop zwischen zwei delphi5-anwendungen

  Alt 28. Jun 2005, 13:29
moin shmia,

Zitat von shmia:
...
Ein Treeview ist ein WinControl und hat somit ein eigenes Window-Handle.
Mit dem Beispielcode von oben kannst du so zwar auf dem Formular droppen, aber nicht auf dem TreeView.
Deshalb:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  OleInitialize(nil);
  {Allow window to accept drop events}
  OleCheck(RegisterDragDrop(Handle, Self));
  
  // Handle des TreeView registrieren
  OleCheck(RegisterDragDrop(TreeView1.Handle, Self));
end;
Aber Obacht!! Zum Zeitpunkt von OnCreate gibt es das Handle des TreeView evtl. noch nicht.
Dann müsste RegisterDragDrop später in OnShow (oder noch später) ausgeführt werden.
RevokeDragDrop muss auch aufgerufen werden - is klar.
danke für deine antwort.
aber wie ich bereits oben geschrieben habe, möchte ich nicht in den tree droppen, sonder aus dem tree einen node in ein anderes programm draggen.
wissen ist macht.
weisst nix
-->>
macht nix
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: drag & drop zwischen zwei delphi5-anwendungen

  Alt 28. Jun 2005, 14:03
Zitat von GJungbuth:
aber wie ich bereits oben geschrieben habe, möchte ich nicht in den tree droppen, sonder aus dem tree einen node in ein anderes programm draggen.
Ja, ich habe bisher nur etwas zur Zielanwendung geschrieben.
Die Quellanwendung muss das Interface IDragSource implementieren.
Dazu gibt es auf swissdelphicenter.ch ein Beispiel:
http://www.swissdelphicenter.ch/de/showcode.php?id=2335
In diesem Beispiel erzeugt die Funktion GetFileListDataObject ein Objekt vom Typ IDataObject.
In deinem Fall muss IDataObject anderst erzeugt werden.
Bei Google suchenIDataObject AND delphi
Interessant: http://www.grahamwideman.com/gw/tech...DropTheory.htm
Andreas
  Mit Zitat antworten Zitat
madina

Registriert seit: 1. Nov 2005
153 Beiträge
 
#5

Re: drag & drop zwischen zwei delphi5-anwendungen

  Alt 7. Nov 2005, 09:16
Hallo

welchen Libraray muß ich einbinden, weil mein Delphi mekert bei OleInitialize(nil);

{Allow window to accept drop events}
OleCheck(RegisterDragDrop(Handle, Self));

// Handle des TreeView registrieren
OleCheck(RegisterDragDrop(TreeView1.Handle, Self));

mfg
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: drag & drop zwischen zwei delphi5-anwendungen

  Alt 15. Okt 2006, 19:20
Zitat:
The OleInitialize function initializes the OLE library. You must initialize the library before you can call OLE functions.

HRESULT OleInitialize(

LPVOID pvReserved //Reserved, must be NULL
);
Parameter

pvReserved

In 32-bit OLE, this parameter must be NULL. The 32-bit version of OLE does not support applications replacing OLE's allocator and if the parameter is not NULL, OleInitialize returns E_INVALIDARG.

Return Values

S_OK

Indicates the library was initialized successfully.

S_FALSE

Indicates OLE library is already initialized; a pointer to the IMalloc implementation was not used.

OLE_E_WRONGCOMPOBJ

Indicates COMPOBJ.DLL is the wrong version for OLE2.DLL.

E_OUTOFMEMORY

Indicates the library was not initialized because the system was out of memory.

E_INVALIDARG

Indicates an argument was invalid.

E_UNEXPECTED

Indicates an unexpected error occurred.

Comments

Applications must call OleInitialize before calling any other function in the OLE library.
Typically, OleInitialize is called only once in the process that uses the OLE library. There can be multiple calls, but subsequent calls return S_FALSE. To close the library gracefully, each successful call to OleInitialize, including those that return S_FALSE, must be balanced by a corresponding call to the OleUninitialize function.

See Also

OleUninitialize, CoInitialize
  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 02:21 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