![]() |
Automatisches Drag&Drop von JvRichEdit überschreiben / d
Moin,
wenn ich eine beliebige Datei auf ein JvRichEdit ziehe, so erstellt das JvRichEdit automatisch ein Objekt. Das möchte ich gerne deaktivieren, da ich mich selber darum kümmern möchte. Folgenden Code habe ich bisher bei einer ListBox verwendet:
Delphi-Quellcode:
Aber bei einem JvRichEdit wird nicht mal die Funktion aufgerufen.
uses JvExStdCtrls, JvRichEdit, shellapi;
... type TJvRichEdit = class(JvRichEdit.TJvRichEdit) private procedure GetDroppedFileNames(var msg : TWMDropFiles); message WM_DROPFILES; end; ... procedure TJvRichEdit.GetDroppedFileNames(var msg : TWMDropFiles); var sFileName : string; dwFileCount : cardinal; i : cardinal; dwReqdLength : cardinal; begin dwFileCount := DragQueryFile(msg.Drop, $FFFFFFFF, nil, 0); for i := 0 to dwFileCount - 1 do begin // Pfadlänge ermitteln dwReqdLength := DragQueryFile(msg.Drop,i,nil,1); // Dateinamen abfragen sFileName := StringOfChar(#00,dwReqdLength); // length + 1 DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1); // Datei laden Lines.LoadFromFile(sFileName); end; end; Wie schaffe ich es, einfach nur die gedroppten Dateinamen zu erhalten, ohne das JvRichEdit automatisch Objekte erstellt ? Viele Grüße |
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
1. Der RichEdit-Fensterklasse kannst du das eigenständige OLE Drag&Drop verbieten, indem du das Fensterstil-Bit ES_NOOLEDRAGDROP setzt.
Überschreibe dazu in deiner abgeleiteten Klasse die Routine "CreateParams":
Delphi-Quellcode:
2. Normalerweise geht auch der von dir gewünschte Weg ohne Probleme. Hast du auch an alles gedacht, z.B. das DragAcceptFiles (am besten in in CreateWindowHandle)?
TMyRichEdit.CreateParams(var Params: TCreateParams);
begin inherited; Params.Style := Params.Style or ES_NOOLEDRAGDROP; end;
Delphi-Quellcode:
TMyRichEdit.CreateWindowHandle(const Params: TCreateParams);
begin inherited; if HandleAllocated then DragAcceptFiles(Handle, True); end; |
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Zu 1:
Danke werde ich gleich mal testen Zu2: Ja daran habe ich gedacht, habe es momentan im OnCreate der Form:
Delphi-Quellcode:
Werde es aber mal ins CreateWindowHandle packen (finde ich auch übersichtlicher)
DragAcceptFiles(JvRichEdit1.Handle, true);
[Add] Funktioniert leider nicht. Gruß |
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
<schimpf>
Schon mal Haltepunkte beim Debuggen gesetzt? Schon mal auf die Compiler-Warnungen geachtet? ;) </schimpf> Dann wäre die aufgefallen, dass ohne override nichts läuft - deine Routinen werden überhaupt nicht aufgerufen.
Delphi-Quellcode:
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWindowHandle(const Params: TCreateParams); override; |
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Danke, ich hatte zwar bemerkt, dass die Funktion nicht aufgerufen wurde, woran es aber lag habe ich nicht gewusst.
Gibt es auch eine Möglichkeit, dass zusätzlich noch weiterhin Rtf-Text per Drag&Drop hinzugefügt werden kann ? Gruß |
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Zitat:
|
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Bei mir werden txt-Dateien die ich auf dem JvRichEdit droppe dann wieder als Objekt eingefügt.
|
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Tja - ist wohl so. Ich muss zugeben, dass ich es hier nur mit einem Standard-RichEdit ausprobiert habe. Offensichtlich geht's nicht mehr, sobald du OLE Drag&Drop aktiviert hast (geht beim JvRichEdit übrigens auch über eine Property).
|
Re: Automatisches Drag&Drop von JvRichEdit überschreiben
Danke für den Hinweis, ich habe es nämlich erst gar nicht mit dem standard RichEdit probiert, klappt wunderbar. (Ist mir sogar lieber ohne FremdKompos auszukommen)
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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-2025 by Thomas Breitkreuz