AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Automatisches Drag&Drop von JvRichEdit überschreiben / deakt
Thema durchsuchen
Ansicht
Themen-Optionen

Automatisches Drag&Drop von JvRichEdit überschreiben / deakt

Ein Thema von MrKnogge · begonnen am 5. Apr 2007 · letzter Beitrag vom 8. Apr 2007
Antwort Antwort
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#1

Automatisches Drag&Drop von JvRichEdit überschreiben / d

  Alt 5. Apr 2007, 21:16
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:
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;
Aber bei einem JvRichEdit wird nicht mal die Funktion aufgerufen.

Wie schaffe ich es, einfach nur die gedroppten Dateinamen zu erhalten, ohne das JvRichEdit automatisch Objekte erstellt ?

Viele Grüße
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 5. Apr 2007, 23:12
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:
TMyRichEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or ES_NOOLEDRAGDROP;
end;
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)?
Delphi-Quellcode:
TMyRichEdit.CreateWindowHandle(const Params: TCreateParams);
begin
  inherited;
  if HandleAllocated then
    DragAcceptFiles(Handle, True);
end;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 5. Apr 2007, 23:16
Zu 1:
Danke werde ich gleich mal testen

Zu2:
Ja daran habe ich gedacht, habe es momentan im OnCreate der Form:
DragAcceptFiles(JvRichEdit1.Handle, true); Werde es aber mal ins CreateWindowHandle packen (finde ich auch übersichtlicher)

[Add]
Funktioniert leider nicht.

Gruß
Angehängte Dateien
Dateityp: zip beispiel_150.zip (1,9 KB, 4x aufgerufen)
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 7. Apr 2007, 14:26
<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;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 7. Apr 2007, 22:56
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ß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 8. Apr 2007, 12:32
Zitat von MrKnogge:
Gibt es auch eine Möglichkeit, dass zusätzlich noch weiterhin Rtf-Text per Drag&Drop hinzugefügt werden kann ?
Dazu musst du einfach das Hinzufügen von ES_NOOLEDRAGDROP in der Routine "CreateParams" unterlassen (bzw. die ganze Routine löschen). Bei meinen Tests funktionierte dann beides.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 8. Apr 2007, 14:10
Bei mir werden txt-Dateien die ich auf dem JvRichEdit droppe dann wieder als Objekt eingefügt.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 8. Apr 2007, 17:35
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).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Automatisches Drag&Drop von JvRichEdit überschreiben

  Alt 8. Apr 2007, 17:57
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ß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  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 16:20 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