Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: CL | DM;

Вниз

MessageBox   Найти похожие ветки 

 
GreatQuaker   (2002-08-14 05:25) [0]

Как в стандартном диалоговом окне MessageBox написания на кнопках Yes и No сделать соответственно на русском?
Заранее благодарен за внимание и помощь!


 
Ученик ©   (2002-08-14 08:46) [1]


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;

Пример вызова:
MessageBoxRus(0, "Текст", "Ошибка", MB_ICONHAND + MB_YESNOCANCEL);


 
andrey_pst ©   (2002-08-14 08:57) [2]

В Delpi5 так:
Меню Project/Languages/Add
и усё,добавляй Русский язык
Можешь все сообщения русифицировать


 
cdaDmitriy ©   (2002-08-14 09:18) [3]

>>>Ученик © Твое решение очень красивое но Я Думаю не все
поймут почему это работает

не проще ли написать / переписать

function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;

и вставить любой язык.


 
andrey_pst ©   (2002-08-14 09:23) [4]

>>>cdaDmitriy © Зачем писать/переписывать функции, если есть встроенные средства ? Так можно проги и на чистом WinAPI писать :)


 
Ученик ©   (2002-08-14 09:26) [5]

>cdaDmitriy (14.08.02 09:18)
>Я Думаю не все
>поймут почему это работает
Кто захочет разобраться, нажмет F1 :)

>не проще ли написать / переписать

>function MessageBox(const Text, Caption: PChar; Flags: >Longint): Integer;

Как быть с иконками в разных системах, например XP, и другой
уже есть MessageDlg




 
cdaDmitriy ©   (2002-08-14 09:40) [6]

>>> andrey_pst © && Ученик ©

Я не хочу говорить о

"Зачем писать/переписывать функции, если есть встроенные средства ? Так можно проги и на чистом WinAPI писать "

НО ВСЕ ТАКИ ДУМАЮ ЧТО С ПОМОЩЬЮ SetWindowsHook...

делать это - это примено что из пушки по воробьям

это мое мнение


А ТАК ЕЩЕ РАЗ ПОВТОРЮ

>>>Ученик © Твое решение очень красивое но не все
( а я думаю единицы) понимают SetWindowsHook...




 
Ученик ©   (2002-08-14 09:54) [7]

>cdaDmitriy © (14.08.02 09:40)

>НО ВСЕ ТАКИ ДУМАЮ ЧТО С ПОМОЩЬЮ SetWindowsHook...
>делать это - это примено что из пушки по воробьям
>это мое мнение

Может быть, но именно это рекомендуют в Visual Basic (правда задача чуть другая),

http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q180936&


 
MetalFan ©   (2002-08-14 10:18) [8]


> 2andrey_pst ©

По моему дельный совет!!!
попробывал, работает отлично!!!


 
Эдик   (2002-08-14 10:26) [9]

Можешь просто использовать Application.MessageBox("текст","заголовок",bt_flags)
кнопки будут на том языке, на каком сама ОС.
bt_flags - может быть: mb_YesNoCancel, mb_OKCancel... и так далее полный перечень в хелпе (F1)

кроме того, эта функция возвращает код нажатой кнопки (mrYes, mrOk и пр.), например:
case Application.MessageBox("Данные были изменены! Сохранить?","Внимание!",mb_YesNoCancel) of
mrYes: ....
mrNo: ...
mrCancel: Exit;
end;


 
cdaDmitriy ©   (2002-08-14 10:27) [10]

>> Ученик ©

поменять Caption это пол дела а если нужно менять

право <--> лево как быть да еще по желанию пользователя

т.е. прога мульти язычная с подержкой например иврита


 
Ученик ©   (2002-08-14 10:31) [11]

>cdaDmitriy © (14.08.02 10:27)
Разговор не в тему вопроса, удаляюсь :)))


 
SaS13 ©   (2002-08-14 10:38) [12]

можно скопировать файл consts.pas в директроию программы и заменить необходимые текстовые ресурсы, при следующей компиляции все будет как Вы хотите.



Страницы: 1 вся ветка

Текущий архив: 2002.08.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
1-85029
VZ-KZ
2002-08-16 08:19
2002.08.26
XL Report


1-84991
zavdim
2002-08-15 07:34
2002.08.26
Код возврата.


1-85094
Nikoss
2002-08-14 23:23
2002.08.26
при запуске на форме нет ни одного компонента


1-85028
Андрусь
2002-08-16 13:18
2002.08.26
Как проинициализировать указатель...


1-85026
Chinas
2002-08-16 14:48
2002.08.26
Немогу вызвать fsMDIForm и fsMDIChild из DLL