![]() |
Wie Caretposition in RichEdit setzen?
Hallo,
habe mit folgendem Code aus einem fremden RichEdit die Caretposition herausbekommen:
Delphi-Quellcode:
So weit so gut. Nun habe ich ja zum Schluß den Text den ich kopiert habe in meinem RichEdit eingefügt. Möchte nun aber in meinem RichEdit den Caret genau an die gleiche Position setzen wie er in dem fremden RichEdit vor dem kopieren war. Ebenfalls möchte ich den Caret des fremden RichEdit wieder an seine ursprüngliche Position setzen. Wie kann ich die beiden Werte für die Linie und die Spalte für mein Vorhaben verwenden?
//RichEdit1 füllen
//Caretposition vom ersten Fenster speichern SendMessage(StrToInt(Fenster1_Handle), EM_GETSEL, wParam(@lCol), 0); lLine := SendMessage(StrToInt(Fenster1_Handle), EM_LINEFROMCHAR, lCol, 0); lCol := lCol - SendMessage(StrToInt(Fenster1_Handle), EM_LINEINDEX, -1, 0); //Inhalt des ersten Fensters kopieren SendMessage(StrToInt(Fenster1_Handle), EM_SETSEL, 0, -1); SendMessage(StrToInt(Fenster1_Handle), WM_COPY, 0, 0); SendMessage(StrToInt(Fenster1_Handle), EM_SETSEL, 0, 0); RichEdit1.ReadOnly := False; RichEdit1.PasteFromClipboard; RichEdit1.ReadOnly := True; Gruß Markus |
Re: Wie Caretposition in RichEdit setzen?
![]() Falls es das noch nicht geben sollte: ![]() //Nachtrag: Warum machst du das ganze so umständlich? CaretPos tuts doch auch. Außerdem: Warum nimmst du die Zwischenablage? Der User wirds dir danken, wenn sein Clipboard-Inhalt weg is. Besser:
Delphi-Quellcode:
mfg
RichEdit2.Lines.Assign(RichEdit1.Lines);
Christian |
Re: Wie Caretposition in RichEdit setzen?
Zufälliger Weise ist der Text in einem RichEdit einer Fremden Anwendung und das geht soviel ich weiß nur über das Handle mittels SendMessage oder hab ich da was falsch verstanden?
|
Re: Wie Caretposition in RichEdit setzen?
Zitat:
mfg Christian P.S.: Alle Angaben sind wie immer ohne Gewähr... |
Re: Wie Caretposition in RichEdit setzen?
Zitat:
|
Re: Wie Caretposition in RichEdit setzen?
Hallo,
warum setzt Du nicht mit
Delphi-Quellcode:
Dein Caret zurück?
SendMessage(Handle, EM_SETSEL, Alte_Position, Alte_Position);
Gruß xaromz |
Re: Wie Caretposition in RichEdit setzen?
Hi allerseits,
@r2c2: Kein Problem ist mir auch schon des öfteren passiert. :) @Luckie: Hmmm das muß ich mal ausprobieren. Ich hoffe ich bekomme so auch die Formatierungen wie Schriftfarbe usw. auch mitgeliefert. :gruebel: @xaromz: Danke für den Tipp. Da bin ich Heute Mittag als ich mal nicht viel zu tun hatte beim Arbeiten durch herumprobieren auch draufgekommen. Trotzdem Danke. Jetzt fehlt nur noch das der RichEdit-Inhalt des fremden RichEdit nach dem markieren und Kopieren wieder an genau die gleiche Stelle gescrollt wird so das nicht auffällt das jemals was passiert ist. Daran happert es bis jetzt noch. Hat evtl. jemand da noch nen Tipp? |
Re: Wie Caretposition in RichEdit setzen?
nein, da musst du über den Stream gehen. Code dazu hat Nico hier im Forum schon mal gepostet.
|
Re: Wie Caretposition in RichEdit setzen?
Suche mal nach EM_STREAMIN bzw. EM_STREAMOUT hier im Forum. Darüber kommst du an den Inhalt des Richedit ohne die Markierung oder die Zwischenablage zu verändern.
|
Re: Wie Caretposition in RichEdit setzen?
Das mit dem Stream wäre natürlich die beste Lösung. Habe mir auch schon einige Programmcodes dazu angesehen aber komme damit einfach nicht klar. Auch beim Swissdelphicenter hab ich schon geschaut und was ausprobiert aber außer ein dutzend Fehlermeldungen geht da auch nix. Es kann doch nicht so schwer sein den kompletten Inhalt heraus zu streamen. Oder etwa doch? Kann mir da jemand mal nen kleinen Beispielcode geben?
@Lucky: Wenn ich nach dem Namen Nico suche finde ich leider nix. Bin leider nicht so oft hier das ich auf anhieb weiß wen Du damit genau meinst. :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 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