![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MessageBox [D3, Win95/98]
GreatQuaker © (2002-08-14 05:25:00)Как в стандартном диалоговом окне MessageBox написания на кнопках Yes и No сделать соответственно на русском?
Заранее благодарен за внимание и помощь!
SaS13 (2002-08-14 10:38:00) [1]можно скопировать файл consts.pas в директроию программы и заменить необходимые текстовые ресурсы, при следующей компиляции все будет как Вы хотите.
Ученик (2002-08-14 10:31:00) [2]>cdaDmitriy © (14.08.02 10:27)
Разговор не в тему вопроса, удаляюсь :)))
cdaDmitriy (2002-08-14 10:27:00) [3]>> Ученик ©
поменять Caption это пол дела а если нужно менять
право <--> лево как быть да еще по желанию пользователя
т.е. прога мульти язычная с подержкой например иврита
Эдик (2002-08-14 10:26:00) [4]Можешь просто использовать Application.MessageBox("текст","заголовок",bt_flags)
кнопки будут на том языке, на каком сама ОС.
bt_flags - может быть: mb_YesNoCancel, mb_OKCancel... и так далее полный перечень в хелпе (F1)
кроме того, эта функция возвращает код нажатой кнопки (mrYes, mrOk и пр.), например:
case Application.MessageBox("Данные были изменены! Сохранить?","Внимание!",mb_YesNoCancel) of
mrYes: ....
mrNo: ...
mrCancel: Exit;
end;
MetalFan (2002-08-14 10:18:00) [5]
> 2andrey_pst ©
По моему дельный совет!!!
попробывал, работает отлично!!!
Ученик (2002-08-14 09:54:00) [6]>cdaDmitriy © (14.08.02 09:40)
>НО ВСЕ ТАКИ ДУМАЮ ЧТО С ПОМОЩЬЮ SetWindowsHook...
>делать это - это примено что из пушки по воробьям
>это мое мнение
Может быть, но именно это рекомендуют в Visual Basic (правда задача чуть другая),
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q180936&
cdaDmitriy (2002-08-14 09:40:00) [7]>>> andrey_pst © && Ученик ©
Я не хочу говорить о
"Зачем писать/переписывать функции, если есть встроенные средства ? Так можно проги и на чистом WinAPI писать "
НО ВСЕ ТАКИ ДУМАЮ ЧТО С ПОМОЩЬЮ SetWindowsHook...
делать это - это примено что из пушки по воробьям
это мое мнение
А ТАК ЕЩЕ РАЗ ПОВТОРЮ
>>>Ученик © Твое решение очень красивое но не все
( а я думаю единицы) понимают SetWindowsHook...
Ученик (2002-08-14 09:26:00) [8]>cdaDmitriy (14.08.02 09:18)
>Я Думаю не все
>поймут почему это работает
Кто захочет разобраться, нажмет F1 :)
>не проще ли написать / переписать
>function MessageBox(const Text, Caption: PChar; Flags: >Longint): Integer;
Как быть с иконками в разных системах, например XP, и другой
уже есть MessageDlg
andrey_pst (2002-08-14 09:23:00) [9]>>>cdaDmitriy © Зачем писать/переписывать функции, если есть встроенные средства ? Так можно проги и на чистом WinAPI писать :)
cdaDmitriy (2002-08-14 09:18:00) [10]>>>Ученик © Твое решение очень красивое но Я Думаю не все
поймут почему это работает
не проще ли написать / переписать
function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer;
и вставить любой язык.
andrey_pst (2002-08-14 08:57:00) [11]В Delpi5 так:
Меню Project/Languages/Add
и усё,добавляй Русский язык
Можешь все сообщения русифицировать
Ученик (2002-08-14 08:46:00) [12]
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);