LMD VCL - Unicode Support
General unicode support notes:
- Starting from 2021 release LMD libraries support only Unicode IDE version, so most of our native Unicode support was deprecated.
- String type is now used accross the code, since it supports Unicode natively by IDE.
- One symbol, in general case, isn't equal one byte.
- Use Unicode API function instead of its Ansi version. These function has W suffix. As example DrawTextW, ExtTextOutW etc.
- For any operation on Unicode string use routines from LMDStrings.pas (must be in core modules).
Detailed notes (units contains in LMDRTL package)
LMDUnicode Unit contains Unicode related low level implementation. Services provided by this unit can be used in some special situations, for example for working with Unicode enabled external COM objects, like script engines, ect.
The usage of WideString and WideChar types has been replaced with string and Char types correspondingly starting from 2021 release. Function names have been changed from LMDWideXXX to LMDUnicodeXXX.
LMDUnicodeStrings Unit is deprecated starting from 2021 release. It still defines TLMDWideStrings and TLMDWideStringList deprecated classes. Standard Delphi string list classes like TStrings and TStringList should be used instead.
LMDTypes Unit declares TLMDString and TLMDChar (PLMDChar deprecated types, as well, as some other supporting types, which should not be used since 2021 release. Instead, standard Delphi's string a sn Char (PChar) types should be used. TLMDStrings and TLMDStringList types are also deprecated now, and should be replaced with TStrings and TStringList types.
LMDStrings Unit contain many string utilities. Almost every function is duplicated three times: LMDAnsiXXX version – uses standard Delphi string type. Please note, that this is actually a version that always consistent with any Vcl version. It actually Unicode for Unicode Vcl (in .Net). LMDWideXXX version – always uses WideString type. Unicode in any Vcl version. LMDXXX version – uses standard Delphi's string type since 2021 release (previously, TLMDString type used).
LMDUnicodeControl Unit is renamed to LMDHintHooks and no longer relates to Unicode support in our libraries.
LMDUnicodeCtrls Unit is deprecated now and provides references to deprecated control types: TLMDWideButton, TLMDWideCheckBox and TLMDWideRadioButton.
LMDUnicodeDialogs Unit contains 2 classes - TLMDOpenDilaog and TLMDSaveDialog, that supports unicode features of Windows NT family OSes. They can be used to open/save files with unicode names, can be customized by unicode strings (unicode Title, Filters etc.). Also they used by TLMDFileOpenDialog/TLMDFileSaveDialog (since LMD Tools 2007.1) as Windows XP replacement of Windows Vista new dialogs.