Форум: "Основная";
Текущий архив: 2002.08.26;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c