![]() |
RichEdit Schutz mit SelAttributes.Protected wieder aufheben
Ich bearbeite im TRichEdit einen Text automatisch, wobei einige Bereiche nicht behandelt werden dürfen. Der einfachste Weg das zu verhindern ist die Bereiche mit
Delphi-Quellcode:
zu schützen. Soweit klappt alles auch wunderbar.
SelAttributes.Protected := True;
Als letzte Aktion sollen alle Schutzbereiche wieder gelöst werden. Nur einfach alles markieren und es wieder auf False stellen geht nicht. Oder ich mache etwas falsch. Nutze ich dazu die Prozedur OnProtectChange und stelle dort AllowChange dementsprechend, ist alles kein Problem. Aber ich würde das am liebsten ohne OnProtectChange regeln, da ich alles gerne in einer einzigen Funktion vereinigt hätte. Ansonsten muß ich es anders lösen. Gibt es noch eine andere mir nicht bekannte Methode? |
AW: RichEdit Schutz mit SelAttributes.Protected wieder aufheben
Sinn oder Unsinn zu beurteilen überlasse ich Dir, nur ein proof of concept
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls,richedit; type TRichedit=Class(ComCtrls.TRichedit) private FAllowOneUnProtection: Boolean; published procedure CNNotify(var Message: TWMNotifyRE); message CN_NOTIFY; Property AllowOneUnProtection:Boolean read FAllowOneUnProtection write FAllowOneUnProtection; End; TForm1 = class(TForm) RichEdit1: TRichEdit; Button1: TButton; Button2: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure Lock(RichEdit: TRichEdit); begin with RichEdit do begin AllowOneUnProtection := false; SelAttributes.Protected := true; end; end; procedure UnLock(RichEdit: TRichEdit); begin with RichEdit do begin AllowOneUnProtection := true; SelAttributes.Protected := false; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Lock(RichEdit1); end; procedure TForm1.Button2Click(Sender: TObject); begin UnLock(RichEdit1); end; { TRichedit } procedure TRichedit.CNNotify(var Message: TWMNotifyRE); begin inherited; if AllowOneUnProtection then begin with Message do case NMHdr.code of EN_PROTECTED: with ENProtected.chrg do Result := 0; end; AllowOneUnProtection := false; end; end; end. |
AW: RichEdit Schutz mit SelAttributes.Protected wieder aufheben
Eine sehr interessante Methode eine Komponente zu erweitern. Nicht das es mir neu ist, macht man mit dem Formular auch täglich, aber etwas das ich mal über Komponenten wusste und irgendwo im Aktenberg meines Kopfes abgelegt habe.
Aber man davon abgesehen, dass ich optimalerweise eine Möglichkeit suche es Teil einer Funktion zu sein, scheint D7 Probleme mit dem Beispiel zu haben. Ich muß mal gucken ob es mir gelingt es umzuschreiben. Ungeachtet dessen ist die Idee nicht schlecht. Trotzdem habe ich gehofft lediglich etwas übersehen zu haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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