![]() |
Fehler in DBRichEdit beim Ereignis OnSetText?
Bei den DB-Feldern TWideStringField und TWideMemoField nutze ich das Ereignis OnSetText um die Eingabe der Anwender zu überprüfen - z.B. den verwendeten Zeichensatz. Wenn ich den Text in einer DBRichEdit-Komponente ändere, wird bei OnSetText als Text nur (WIDEMEMO) übergeben. Ändere ich den Text für dasselbe WideMemo-Feld in einer DBMemo-Komponente, enthält Text bei OnSetText den vollständigen Text. So kann ich OnSetText i.V.m. DBRichEdit-Komponenten nicht benutzen und müsste das überall im Code separat machen und bei neuen DBRichEdit-Feldern auch wieder dran denken.
Macht das irgendeinen Sinn oder kann mir jemand das (Fehl)-Verhalten bestätigen? |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Ich nehme alles zurück und behaupte das Gegenteil: Bei DBRichEdit scheint das OnSetText-Ereignis überhaupt nicht ausgelöst zu werden, wenn der Text geändert wurde. Auch blöd... Bei DBMemo wird es ausgelöst.
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
OnSetText wird nur bei Text/SetEditText aufgerufen. Direkt SetText/SetWideText, AsString/SetAsString, SetData uvm. aufgerufen, triggert kein OnSetText. OnSetText/OnGetText ist mehr für EditText/DisplayText da, um z.B. Ansicht von/zu einem internen Wert umzurechnen. OnChange/OnValidate/... wären da wohl die passenderen Events Natürlich kannst du auch von TWideMemoField ableiten und eine/mehrere der vielen anderen Events/Methoden überschreiben und dich somit auch da reinhängen, was da RichEdit nutzen tut. |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Mich hatte vor allem gewundert, dass DBMemo das Ereignis wirft und DBRichEdit eben nicht.
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
Delphi-Quellcode:
anstatt
AsString
Delphi-Quellcode:
in der Methode UpdateData von TDBRichEdit.
Text
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Wie kann ich das bei Emba melden? Bei den zig Seiten sehe ich nicht mehr durch.
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
![]() |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Danke! Und schon erledigt...
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Es kommt auch drauf an, ob man das RTF-Geraffel als "Text" ansieht.
Per se ist .AsString ja erstmal nicht falsch, auch wenn im Falle dieser Komponente .Text wohl passender wäre. |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
Richtig wäre es daher, RTF immer als Binärdatentyp zu verarbeiten. |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
Damals im ANSI wurde Binärzueugs/Bytes oft 1:1 unverändert in den String/AnsiString übernommen und jetzt wird ja dieser "Text" bestimmt/eventuell von ANSI nach UTF-16 in den String/UnicodeString konvertiert. |
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
Zitat:
Delphi-Quellcode:
Parameters nicht der geeignete Event und mangels Alternative die gewünschte Funktionalität nicht so einfach realisierbar.
string
|
AW: Fehler in DBRichEdit beim Ereignis OnSetText?
In diesem Fall wäre aber auch ein TWideStringField (VARCHAR mit nicht ANSI-Codepage) bzw. TWideMemoField (TEXT mit nicht ANSI-Codepage) bereits unpasend.
Also sowohl im Delphi, als auch in der Datenbank die falsche Codiering. AsAnsiString oder eigentlich besser AsBytes bzw. SetData wäre somit eigentlich besser. (nur dann eben ohne dieses Event) OnChange OnValidate (nur sehe nicht ob/wann das aufgerufen wird) Oder mehr wie beim TDBImage, also ein binärer BLOB und Zuweisung TGraphic <-> TField via Assign/AssignTo (hab nur nicht entdeckt, was da dann intern verwendet wird) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 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