Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как русифицировать надписи на кнопках сообщений пользователю? [D5]


novill ©   (2002-07-18 10:23:00) 

Уважаемые мастаки, помогите!
У меня программа выдает несколько десятков сообщений (ShowMessage) и диалогов (MessageDlg). Начальник неожиданно потребовал заменить надписи а кнопках на русские. Вместо "Cancel" - "Отмена", "Yes" - "Да",...
Может есть функция, которая позволяет выводить свой тескт на кнопках, или заменить тескт на стандарных сообщениях?
Ну не окнами же все делать! Помогите!


novill   (2002-07-18 13:37:00) [1]

В consts.pas я менял названия кнопок - ничего не происходило. :(
Я и подумать не мог, что его надо еще и в lib копировать.
Скопировал - получилось :) Но почему? - тайна покрытая мраком, откуда же дельфи брал названия кнопок при измененном consts.pas.
Спасибо!


Eugene Lachinov   (2002-07-18 13:16:00) [2]

>novill
Так ответ был, поменяй названия кнопок в consts.pas Delphi5\Source\ дальше не помню, скопируй его в Delphi5\Lib


novill   (2002-07-18 13:07:00) [3]

Eugene Lachinov, ты прав. :)
Оказалось, достаточно заменить MessageDlg на MessageBox, и все стало нормально.
Остаелся только один вопрос: какого @#$ Дельфи в MessageDlg и Showmesage ставит английские?
Мож кто знает.


Eugene Lachinov   (2002-07-18 12:14:00) [4]

>novill
Windows наверно у тебя русский и русифицировать MessageBox не надо


Skier   (2002-07-18 12:08:00) [5]

>Eugene Lachinov
Понял. Спасибо.


novill   (2002-07-18 12:07:00) [6]

>Eugene Lachinov
Огромное спасибо!
Правда,я не понял, почему остальные кнопки тоже русские.
Еще раз спасибо.


Виктор Щербаков   (2002-07-18 12:07:00) [7]

novill © (18.07.02 12:05)
Встроенное средство локализации приложений.


Eugene Lachinov   (2002-07-18 12:07:00) [8]

>Skier
В расшифровке и переводе на русский "Библия программиста под Windows" :-)


novill   (2002-07-18 12:05:00) [9]

>Игорь Шевченко
>Intergrated Translation Manager
Это что за штука?


Eugene Lachinov   (2002-07-18 12:05:00) [10]

В расшифровке и переводе на русский "Библия программиста под Windows" :-)


Skier   (2002-07-18 11:53:00) [11]

>Eugene Lachinov
MSDN - а что это ? (я в сокращениях не очень...)


Eugene Lachinov   (2002-07-18 11:48:00) [12]

>Skier
Если про MessageBox, то, наверно, из MSDN


Skier   (2002-07-18 11:37:00) [13]

>Eugene Lachinov
Красиво.
А где взял ?


Eugene Lachinov   (2002-07-18 11:26:00) [14]

Для MessageDlg изменить константы из Consts.pas,

системный MessageBox

var
hHook : THandle = 0;

procedure ChangeButtonCaption(Dialog : HWnd; ControlID : Integer;
const Caption : string);
begin
SetWindowText(GetDlgItem(Dialog, ControlID), PChar(Caption))
end;

function ChangeCaptions(nCode : Integer;
wParam : WPARAM;
lParam : LPARAM) : LRESULT; stdcall;
begin
Result := 0;
if nCode = HCBT_ACTIVATE then begin
ChangeButtonCaption(wParam, IDYES, "Да");
ChangeButtonCaption(wParam, IDNO, "Нет");
ChangeButtonCaption(wParam, IDCANCEL, "Отмена");
UnhookWindowsHookEx(hHook)
end
end;

function MessageBoxRus(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer;
begin
hHook := SetWindowsHookEx(WH_CBT, @ChangeCaptions, hInstance, GetCurrentThreadID);
Result := MessageBox(hWnd, lpText, lpCaption, uType);
end;


Skier   (2002-07-18 11:21:00) [15]

>novill
А лучше, чтобы не парится с переводом, создай свою
форму, которая будет работать как MessageDlg.


Игорь Шевченко   (2002-07-18 10:34:00) [16]

Intergrated Translation Manager - Project/Languages/Add
и редактировать ресурсы для русских надписей.


Наверх

Титульная страница Поиск, карта сайта Написать письмо