Bearbeitbarkeit von Header/Body/Footer sperren

  • Hallo zusammen,
    ich bin ziemlich neu bei den WPTools und noch etwas überwältigt von der Unmenge an Properties ;-) , darum hier jetzt eine Anfängerfrage:
    Wie kann ich die Bereiche Header, Body und Footer separat vor Bearbeitung schützen? Gibt es spezielle Properties, bzw. gibt es ein Event, wie z.B. OnLeaveRTFDataBlock, nur ohne FromBlock (da ich ja ggf. nicht von einem Block zum anderen wechseln will, sondern von ausserhalb komme), das mich dann nicht in den gewählten Bereich wechseln lässt?
    Für jegliche Hilfe/Codeschnipsel wäre ich sehr dankbar.

    Mit besten Grüßen
    Bastian Neumann

    • Offizieller Beitrag

    Hallo,

    OnLeaveRTFDataBlock ist schon der richtige event, es wird ja auch der "ToBlock" übergeben.

    Um also die Bearbeitung der Footer zu deaktivieren, die Header aber bearbeitbar zu belassen kann man diesen code benutzen:

    Code
    procedure TForm1.WPRichText1LeaveRTFDataBlock(Sender: TObject; FromBlock,
      ToBlock: TWPRTFDataBlock; var Allowed: Boolean);
    begin
     Allowed := ToBlock.Kind <> wpIsFooter;
    end;
  • Danke für die rasche Antwort. Funktioniert prima, wenn man aus einem Bereich (Header/Body/Footer) in einen anderen wechselt. Allerdings nicht in dem Bereich, in dem man startet (i.A. im Body). Hier wird ja das Event OnLeaveRTFDataBlock nicht ausgelöst, da ich den Bereich nicht verlasse. Also müsste es noch eine andere Möglichkeit geben, den Body als readonly oder etwas analoges zu markieren? Readonly an sich betrifft ja den gesamten Editor, wenn ich das richtig verstanden habe...

    Was mir noch aufgefallen ist: wenn ich im Body eine Grafik eingebunden habe, kann ich trotz der Sperrung über OnLeaveRTFDataBlock (Allowed := ToBlock.Kind <> wpIsBody;) das Bild anklicken, und danach ist, aufgrund des oben erwähnten Nichtauslösen des OnLeaveRTFDataBlock-Events, der gesamte Text im Body editierbar. Ich habe das gleiche auch mit dem Header getestet, hier trat dieser Effekt nicht auf.

    Beste Grüße
    Bastian Neumann

  • Danke, genau danach habe ich gesucht.

    BeforeChange(Sender: TObject; var AllowChange: Boolean);
    Über AllowChange kann ich hier regeln, ob geschrieben werden darf oder nicht.

    Ist leider nur kurz in den release notes erwähnt, und ansonsten habe ich keine Dokumentation dazu gefunden.

    Beste Grüße
    Bastian