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

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

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);


Наверх

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