Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - JvRichEdit.SelAttributes.Protected := False - bewirkt nichts
galagher - Do 04.05.17 18:56
Titel: JvRichEdit.SelAttributes.Protected := False - bewirkt nichts
Hallo!
Die Anweisung JvRichEdit1.SelAttributes.Protected := False wirkt sich nicht aus, der selektierte Text bleibt read-only. Wie kann ich das beheben?
lg
galagher
Delete - Do 04.05.17 20:05
- Nachträglich durch die Entwickler-Ecke gelöscht -
galagher - Do 04.05.17 20:47
Frühlingsrolle hat folgendes geschrieben : |
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:
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.
Delete - Do 04.05.17 20:57
- Nachträglich durch die Entwickler-Ecke gelöscht -
galagher - Do 04.05.17 21:31
galagher hat folgendes geschrieben : |
Weil Protected ein reserviertes Wort ist. |
Nun, im Zusammenhang mit der Eigenschaft Protected ist es ja gar nicht das reservierte Wort...
Frühlingsrolle hat folgendes geschrieben : |
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.
galagher hat folgendes geschrieben : |
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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!