Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DragDrop von TMemo auf TRichEdit (https://www.delphipraxis.net/107671-dragdrop-von-tmemo-auf-trichedit.html)

KesseK 31. Jan 2008 15:15


DragDrop von TMemo auf TRichEdit
 
Ich möchte den Inhalt eines TMemo mittels DragDrop in ein TRichEdit schreiben,
dazu benutze ich diesen Code:

Delphi-Quellcode:
procedure TForm1.InhaltDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if (Source is TMemo) then
  Richedit1.text := (Source as TMemo).Text;
end;

procedure TForm1.RichEdit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := true;
end;
Leider passiert überhaupt nichts, er schreibt den Inhalt nicht in das Richedit.
Wenn ich die Zeile zum Überschreiben ins DragOver setze funktionierts. Allerdings
soll man vorher den Mausbutton los lassen und so muss es im DragDrop bleiben.

Vielleicht kann mir jemand helfen.

Grüße

bitsetter 31. Jan 2008 16:17

Re: DragDrop von TMemo auf TRichEdit
 
Hallo,

geht das nicht eher so?
Delphi-Quellcode:
procedure TForm1.RichEdit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if (Source is TMemo) then
   (Sender as TRichEdit).Text := TMemo(Source).Text;
end;

procedure TForm1.RichEdit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TMemo;
end;
Edit: onDragOver und onDragDrop sind Ereignisse des TRichedit wie man sieht.

KesseK 1. Feb 2008 07:13

Re: DragDrop von TMemo auf TRichEdit
 
Danke bitsetter, klappt wunderbar :)

Nun möchte ich aber, das der Text der TMemo an der Stelle landet, an der ich mit dem Mauszeiger bin. Es müssen also Zeilen hinzugefügt und der Inhalt übertragen werden. Mit
Delphi-Quellcode:
(Sender as TRichEdit) := (Source as TMemo).Text;
wird ja immer der Text der bereits im RichEdit ist überschrieben. Mit Lines.add füge ich Zeilen hinzu, aber wie kann ich das mit dem Mauszeiger handhaben, so dass der Text genau an der Stelle eingefügt wird wo ich los lasse?

Ein paar Stichworte reichen.

Vielen Dank und Grüße

ps: falls ich für die Frage einen neuen Thread öffnen soll, dann bitte bescheid geben.

marabu 1. Feb 2008 12:20

Re: DragDrop von TMemo auf TRichEdit
 
Hallo Sammy,

versuche es so:

Delphi-Quellcode:
procedure TDemoForm.RichEditDragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  pt: TPoint;
begin
  pt := Point(X, Y);
  with Sender as TRichEdit do
  begin
    SelStart := SendMessage(Handle, EM_CHARFROMPOS, 0, Integer(@pt));
    SelText := (Source as TMemo).Text;
  end;
end;
Grüße vom marabu

KesseK 1. Feb 2008 12:34

Re: DragDrop von TMemo auf TRichEdit
 
Ja, funktioniert genau so wie es sein soll. Problem ist somit behoben.

Vielen herzlichen Dank Marabu

Grüße


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