Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 04.05.17 18:56 
Hallo!

Die Anweisung JvRichEdit1.SelAttributes.Protected := False wirkt sich nicht aus, der selektierte Text bleibt read-only. Wie kann ich das beheben?

lg
galagher

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 04.05.17 20:05 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: galagher
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 04.05.17 20:47 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
das Problem besteht nicht nur bei der Jedi-Komponente (TJvRichEdit), sondern auch bei der Standard-Komponente (TRichEdit).
Da beide den Vorfahren TCustomMemo haben, liegt das Problem entweder dort, oder beide Komponenten wurden mit dem selben "Fehler" erzeugt.

Eine einfache behelfsmässige Lösung:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.JvRichEdit1ProtectChange(Sender: TObject; StartPos,
  EndPos: Integer; var AllowChange: Boolean);
begin
  AllowChange := True;
end;

Das "True" sollte man natürlich durch einen boolschen Wert, der anhängig von irgendeiner Bedingung ist, ersetzen, sonst führt man Protected ja ad absurdum! Da es mir aber nur um die Eigenschaft Protected als solche geht (ist gesetzt - ja/nein), ist mir das zunächst egal. Ich "missbrauche" Protected nämlich, um einen Hyperlink im Text zu realisieren. Klickt man auf einen solchen Text, springt das Programm zu einer anderen Stelle im Text.

Dennoch ist es ein Bug, denn es müsste ja genügen, SelAttributes.&Protected := False zu setzen.
Vielleicht baue ich den Jedi-Code noch um!

Noch eine Frage: Warum setzt Delphi da ein & ein? Also statt SelAttributes.Protected erweitert Delphi das zu SelAttributes.&Protected.

//Edit: Ich sehe schon: Weil Protected ein reserviertes Wort ist.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 04.05.17 20:57 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: galagher
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2510
Erhaltene Danke: 44

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 04.05.17 21:31 
user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Weil Protected ein reserviertes Wort ist.
Nun, im Zusammenhang mit der Eigenschaft Protected ist es ja gar nicht das reservierte Wort...

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Die Lösung wäre in etwa, den Code für die CNNotify() Methode aus dem verlinkten Beitrag zu übernehmen, und die Variable FAllowOneUnProtection: Boolean; in der Setter-Methode der SelAttributes Eigenschaft unterzubringen. Sobald die Eigenschaft true gesetzt wird, soll die Variable false werden, und umgekehrt. So stell' ich mir das vor.
Ja, so ist es definitiv sauber.

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
Wieso dieses &-Zeichen angezeigt wird, weiss ich auch nicht. Das wird wohl an Delphi 10.1 liegen, denn dort erscheint es auch für die TRichEdit Komponente. In Delphi 2006 ist es nicht der Fall.
Das macht Delphi XE2 auch.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!