Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Ole Drop, um Text aus belibiger Anwendung ins Memo zu ziehen (https://www.delphipraxis.net/146990-ole-drop-um-text-aus-belibiger-anwendung-ins-memo-zu-ziehen.html)

lbccaleb 30. Jan 2010 19:35


Ole Drop, um Text aus belibiger Anwendung ins Memo zu ziehen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,

in diesem Thema habe ich festgestellt, dass es gar nicht so einfach ist von einer belibigen Anwendung Text in ein Standart Memo per Drag und Drop zu ziehen.

Nach ner Weile im Internet Googeln, habe ich dann eine passende Unit zusammengestellt, aus allem was ich da so finden konnte. Alles vorgegebene sind extra Komponenten oder für den kleinen Zweck viel zu viel Code.
Also habe ich aus allem eine kleine Unit entworfen, die da Abhilfe schaffen sollte.

Unit muss nur dem Projekt hinzugefügt werden, und die Zeilen die Kommentiert sind, angepasst werden... Das Demo Programm ist ebenfalls kommentiert.

Anmerkung:
Nutzer des RichEdit Controls (ob VCL oder nonVCL) brauchen dieses nicht, da bei dem Control die Funktion standartmäßig implementiert ist.

Anbei ist die benötigte Unit, und ein Demoprogramm. Eine Screenshot hänge ich mal nicht mit an, da auf dem ehh nur eine Form mit einem Edit zu sehen währe :mrgreen:
In das Memo kann nun ohne Probleme Text, der z.B.: im Browser makiert wurde, per Drag und Drop im Edit abgelegt werden.

Wollte das hier rein stellen, da ich mir Vorstellen könnte, dass noch ein paar mehr solch eine Funktion mal irgendwann gebrauchen könnten.

(Teile der Unit sind im Netz zusammengefischt, und daher auch ohne Copyrightvermerk)

Tonic1024 8. Dez 2011 15:54

AW: Ole Drop, um Text aus belibiger Anwendung ins Memo zu ziehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mir mal erlaub das Teil etwas aufzuarbeiten. Hatte Probleme unter D2k9 und dieser Ringverweis, wenn auch technisch okay, gefiel mir nicht.

Es sollte jetzt einfacher zu verstehen sein und unter Delphi 2009 und Neuer funktionieren. Es werden, ausser OLEDrop selbst, keine uses mehr benötigt. An der Technik ab ich nichts verändert - nur aufgeräumt. 8-)

Delphi-Quellcode:
// Vollständiger Quellcode
procedure TForm1.FormCreate(Sender: TObject);
begin
  OleDrop := TOleDrop.create(Panel1.Handle);
  OleDrop.OnTextDropped:=MemoDrop;
end;

procedure TForm1.MemoDrop(aText: PAnsiChar);
begin;
  Memo1.Text:=aText;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  OleDrop.Free;
end;
Download enthält die Unit, ein Demoprojekt und die EXE.

Gruß,

Toni

lbccaleb 8. Dez 2011 16:27

AW: Ole Drop, um Text aus belibiger Anwendung ins Memo zu ziehen
 
Ich benutze OLE-Drop immer noch in einem Programm, dh. werde ich mir deine Version auch noch mal ansehen! Danke dafür....

Edit:
Asso, der Ringverweis war, weil ich das in einem nonVCL Application verwende. Und deshalb die Uses "Forms" nicht einbinden wollte.
Und ich keine andere Lösung gefunden habe es besser hinzubekommen....

Tonic1024 9. Dez 2011 07:31

AW: Ole Drop, um Text aus belibiger Anwendung ins Memo zu ziehen
 
Sollte auch keine Kritik sein. Fands nur zu kompliziert für meinen Geschmack. NonVCL mach ich nur selten, darum hab ich darauf keine Rücksicht genommen. Mir gings in erster Linie darum die Unit auf das "neue Delphi" (Unicode-Umstellung ab D2k9) upzugraden.

Ich persönlich bin faul und will immer alles Essenzielle mit einer Zeile abfrühstücken. Das Ergebnis ist dadurch ziemlich "noobtauglich" geworden, denke ich. :-D

[Edit]Auf Forms kannst du verzichten wenn die MessageBox mit dem Dropzone-Handle (FDropzone) funktioniert. Müsstest du in deiner nonVCL Umgebung mal ausprobieren. Ansich dürfte die auch ne 0 schlucken, tippe ich mal.[/Edit]

Toni


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 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