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 Richedit OnBeforeChange (https://www.delphipraxis.net/146873-richedit-onbeforechange.html)

Culxxaw 28. Jan 2010 15:12


Richedit OnBeforeChange
 
Hallo liebe DP Community,

wollte einmal fragen, ob es eine Möglichkeit gibt einem Richedit ein OnBeforeChange-Event beizubringen. Also im Prinzip ein Event, dass ausgeführt wird bevor die Änderung im Richedit übernommen wird. Das Standard OnChange-Event wird leider erst hinter der sichbaren Änderung ausgeführt.

Danke im Voraus

s.h.a.r.k 28. Jan 2010 15:18

Re: Richedit OnBeforeChange
 
Hilft vielleicht OnKeyPress? Dort kannst du den entsprechenden Tastendruck abfangen. Allerdings wird dann immer noch Copy & Paste möglich sein.

Ansonsten musst eben einfach Ableiten (TCustomRichEdit) und hoffen, dass du die entsprechende Methode überschreiben kannst.

Culxxaw 28. Jan 2010 15:25

Re: Richedit OnBeforeChange
 
Das ist das Problem. OnKeyPress hilft leider nicht. Das verschieben von Wörtern mit der Maus und Copy&Paste wäre dennoch möglich.
Das mit dem Ableiten habe ich mir schon gedacht. Allerdings habe ich absolut keine Ahnung welche Methode ich dort überschreiben muss. Der Code nach dem Motto:

Code:
procedure TmeinRE.change;
begin
//vor onchange
inherited;
end;
... klappt leider nicht. Wahrscheinlich weil das ganze Ereignis ja erst nach der Änderung ausgeführt wird.

himitsu 28. Jan 2010 15:37

Re: Richedit OnBeforeChange
 
Copy&Paste funktioniert auch über Windowsbotschaften, welche man abfangen kann
und das Verschieben mit der Maus lößt bestimmt auch irgendwas aus.

s.h.a.r.k 28. Jan 2010 16:05

Re: Richedit OnBeforeChange
 
Zitat:

Zitat von himitsu
Copy&Paste funktioniert auch über Windowsbotschaften, welche man abfangen kann
und das Verschieben mit der Maus lößt bestimmt auch irgendwas aus.

Aber wäre es nicht sinnvoller zu schauen, wie man ein OnBeforeChange-Ereignis einfügt? Ich weiß halt von vorn herein nicht, wie viel Arbeit das bedeuten kann und wo genau man ansetzen muss. Habe Edits meist auf "höherer Ebene" abegeleitet.

Culxxaw 28. Jan 2010 23:08

Re: Richedit OnBeforeChange
 
Also mit der Methode von himitsu könnte man sich ein OnBeforeChange-Event selber basteln.

Im JvRichedit gibt es das sogennante "OnGetDragDropEffect"-Event, dass ausgelöst wird, bevor ein Stück Text mit der Maus verschoben wird (Drag&Drop halt...). Dies in Kombination mit folgender Quelle: How do i intercept the Onpaste event... (habe es noch nicht für Richedit getestet) und dem OnkeyPress-Event ergibt eigentlich ein OnBeforeChange-Event.

Das ist wahrscheinlich eine sehr unfeine Methode aber es müsste funktionieren. Hoffe ich habe keinen Weg ausgelassen. Ich werde das bei der nächsten Möglichkeit einmal testen, bin aber trotzdem jederzeit für Verbesserungsvorschläge offen.


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