AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls RichEdit Schutz mit SelAttributes.Protected wieder aufheben
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit Schutz mit SelAttributes.Protected wieder aufheben

Ein Thema von Popov · begonnen am 19. Okt 2012 · letzter Beitrag vom 19. Okt 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

RichEdit Schutz mit SelAttributes.Protected wieder aufheben

  Alt 19. Okt 2012, 06:58
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 SelAttributes.Protected := True; zu schützen. Soweit klappt alles auch wunderbar.

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?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: RichEdit Schutz mit SelAttributes.Protected wieder aufheben

  Alt 19. Okt 2012, 07:59
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: RichEdit Schutz mit SelAttributes.Protected wieder aufheben

  Alt 19. Okt 2012, 23:29
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 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