Home › Forums › Konopka Signature VCL Controls (formerly Raize Components) › setting the charset on a TrzRichEdit at runtime
- This topic has 1 reply, 2 voices, and was last updated 2023-07-06 at 12:27 am by Ray Konopka.
-
AuthorPosts
-
-
July 5, 2023 at 12:55 pm #3670
Delphi 7.0 / Win 10 / Raise 5.51
I need to change the character set on some controls from the default into chinese at runtime. I use the following proc to do it:procedure UT_Set_Charset(TheCtrl: TObject); // ***************************************************************************** // this proc will set the correct charset based on users lcid // ***************************************************************************** var DecVal: Integer; // LCID decimal value as integer HexVal: String; // LCID hex value as string begin DecVal := GetSystemDefaultLCID; // get LCID as decimal HexVal := IntToHex(DecVal,4); // save LCID as hex if HexVal = '0404' then // if taiwan chinese begin if (TheCtrl is TEdit) then // if a edit with (TheCtrl as TEdit) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; exit; end; if (TheCtrl is TRzEdit) then // if a rzedit with (TheCtrl as TRzEdit) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; exit; end; if (TheCtrl is TMemo) then // if a memo with (TheCtrl as TMemo) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; exit; end; if (TheCtrl is TRzMemo) then // if a rzmemo with (TheCtrl as TRzMemo) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; exit; end; if (TheCtrl is TRichEdit) then // if a RichEdit with (TheCtrl as TRichEdit) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; SelAttributes.Charset := CHINESEBIG5_CHARSET; exit; end; if (TheCtrl is TRzRichEdit) then // if a rzRichEdit with (TheCtrl as TRzRichEdit) do begin SelectAll; Font.Charset := CHINESEBIG5_CHARSET; SelAttributes.Charset := CHINESEBIG5_CHARSET; exit; end; end; end; // of UT_Set_Charset
This works for the edits and the memos but not for the RichEdits. I had to do this because while other controls like stringgrids seem to automatically know to use the CHINESEBIG5_CHARSET if the LCID is 0404.
I know this is not a Raize problem because the base delphi 7 RichEdit has the same issue.
Any idea what I am doing wrong.
Steve…
- This topic was modified 1 year, 5 months ago by Steve Black.
-
July 6, 2023 at 12:27 am #3676
Hi Steve,
Oh wow. I haven’t really had to think about charsets in quite some time–at least not since Delphi shifted to Unicode support in Delphi 2009. As you noted, the root cause of the issue is in the TRichEdit base control (and perhaps in the underlying Windows Rich Edit control). As such, I would suggest posting a question about this in the Delphi Developer Facebook Group. Perhaps someone there will have some better insight into this.
Ray
-
-
AuthorPosts
- You must be logged in to reply to this topic.