Для этого вам придется создать два идентичных .rc-файла, один для 16-битной версии, второй для
32-битной, т.к. используемые ресурсы для каждой платформы свои. В данном примере мы создадим один
файл с именем STRTBL16.rc, а другой с именем STRTBL32.rc. Скомпилируйте файл STRTBL16.rc с помощью
16-битного компилятора BRCC.exe (расположен в каталоге BIN Delphi 1) и файл STRTBL32.rc с помощью
BRCC32.exe (расположен в той же директории 32-битной версии Delphi).
Во время работы приложения мы выясняем язык операционной системы, установленный по умолчанию.
Метод получения такой информации отличается для 16- и 32-битной версии Windows. Чтобы сделать код
более читабельным, мы позаимствовали "языковые" константы из файла Windows.pas, применяемого в
32-битной версии Delphi.
Code: |
{$IFDEF WIN32} {$R STRTBL32.RES} {$ELSE} {$R STRTBL16.RES} const LANG_ENGLISH = $09; const LANG_SPANISH = $0a; const LANG_SWEDISH = $1d; {$ENDIF}
function GetLanguage : word; {$IFDEF WIN32} {$ELSE}
var s : string; i : integer; {$ENDIF} begin {$IFDEF WIN32} GetLanguage := GetUserDefaultLangID and $3ff; {$ELSE}
s[0] := Char(GetProfileString('intl', 'sLanguage', 'none', @s[1], sizeof(s)-2)); for i := 1 to length(s) do s[i] := UpCase(s[i]); if s = 'ENU' then GetLanguage := LANG_ENGLISH else if s = 'ESN' then GetLanguage := LANG_SPANISH else if s = 'SVE' then GetLanguage := LANG_SWEDISH else GetLanguage := LANG_ENGLISH; {$ENDIF} end;
procedure TForm1.FormCreate(Sender: TObject); var a : array[0..255] of char; StrTblOfs : integer; begin {Получаем текущий язык системы и начало соответствующих строк в таблице} case GetLanguage of LANG_ENGLISH : StrTblOfs := 0; LANG_SPANISH : StrTblOfs := 16; LANG_SWEDISH : StrTblOfs := 32; else StrTblOfs := 0; end;
{Загружаем и устанавливаем заголовок кнопки "Yes" в соответствии с языком} if LoadString(hInstance, StrTblOfs + 1, @a, sizeof(a)) <> 0 then Button1.Caption := StrPas(a);
{Загружаем и устанавливаем заголовок кнопки "No" в соответствии с языком} if LoadString(hInstance, StrTblOfs + 2, @a, sizeof(a)) <> 0 then Button2.Caption := StrPas(a); end; |
Взято из Советов по Delphi от Валентина Озерова Сборник Kuliba
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!