Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

MessageDlg по-русски - как?   Найти похожие ветки 

 
united   (2004-05-07 17:56) [0]

Как добиться того, чтобы надписи на кнопках и в заголовке окна, которое показывается с помощью MessageDlg все надписи были по-русски?
Нашёл в dialogs.pas вот такой вот кусок
ButtonNames: array[TMsgDlgBtn] of string = (
   "Yes", "No", "OK", "Cancel", "Abort", "Retry", "Ignore", "All", "NoToAll",
   "YesToAll", "Help");


поменял его на

 ButtonNames: array[TMsgDlgBtn] of string = (
   "Да", "Нет", "OK", "Отмена", "Прекратить", "Повторить", "Игнорировать", "Все", "Нет для всех",
   "Да для всех", "Помощь");<


не помогло :-(


 
WebErr ©   (2004-05-07 18:07) [1]

Переписать Windows.h :)
Вообще-то можно и самому любое диалоговое окно создать, для этого нужен файл .rc и немного энтузиазма при прочтении help по поводу ресурса DIALOG.
Хотя, если Вас смущает только Caption у окна MessageDlg, то можно воспользоваться API функцией MessageBox. :)


 
ASMiD ©   (2004-05-07 18:08) [2]

Попользуйся Application.MessageBox и то - если винды русские.


 
oss ©   (2004-05-07 18:10) [3]

после изменени vcl пересобрал ?


 
united   (2004-05-07 18:10) [4]

как его пересобрать?


 
Семен Сорокин ©   (2004-05-07 18:10) [5]

united   (07.05.04 17:56)  
копируешь к себе в проект файл consts.pas, изменяешь значения строковых констант, переоткрываешь проект, делаешь билд - все ОК, уже сколько лет этим пользуюсь. :))


 
WebErr ©   (2004-05-07 18:17) [6]


> Семен Сорокин ©   (07.05.04 18:10) [5]

Клёво... Сам бы не догадался лохматить чужую бабушку :)


 
united   (2004-05-07 18:21) [7]

Скопировал consts.pas в папку с проектом
потом Add file to project.
он добавился.
я там исправил всё, что надо

build all

никакого эффекта

:-(


 
united   (2004-05-07 18:22) [8]

2Семен Сорокин ©  

сорри, я напутал кое-что

огромное спасибо, всё работает.


 
Семен Сорокин ©   (2004-05-07 18:24) [9]

united   (07.05.04 18:22) [8]
кроме того есть другие подобные файлы, например sysconst.pas, в ADO вроде свой есть и в RX.


 
ASMiD ©   (2004-05-07 18:27) [10]

Это все здорово, но существует отличная от 0 вероятность получения бо-ольшого геморроя при переходе на другую версию дельфы.


 
Семен Сорокин ©   (2004-05-07 18:30) [11]

ASMiD ©   (07.05.04 18:27) [10]
Это все здорово, но существует отличная от 0 вероятность получения бо-ольшого геморроя при переходе на другую версию дельфы.

абсолютно никакого геморроя, во первых файл не обязятельно добавлять к проекту (Add file to project), а при переходе просто удалить старый и взять новый (в 5-7-ых Delphi он есть), главное помнить об этом :)))


 
ASMiD ©   (2004-05-07 18:34) [12]


>  главное помнить об этом :)))


Вот именно!
А по закону вредности через некоторое время подобные фичи забываются. Пройдено не раз.


 
Amoeba ©   (2004-05-11 14:52) [13]

Модули русификации найдешь на http://polesoft.narod.ru


 
webpauk   (2004-05-11 15:45) [14]

unit RusDlg;

interface

implementation

uses Classes, Forms, Consts, Dialogs; //, RtpCtrls;

resourcestring
   SMsgDlgRusWarning = "Предупреждение";
   SMsgDlgRusError = "Ошибка";
   SMsgDlgRusInformation = "Информация";
   SMsgDlgRusConfirm = "Подтверждение";
   SMsgDlgRusYes = "&Да";
   SMsgDlgRusNo = "&ет";
   SMsgDlgRusOK = "OK";
   SMsgDlgRusCancel = "Отмена";
   SMsgDlgRusHelp = "&Помощь";
   SMsgDlgRusHelpNone = "Помощь недоступна";
   SMsgDlgRusHelpHelp = "Помощь";
   SMsgDlgRusAbort = "&Прервать";
   SMsgDlgRusRetry = "По&вторить";
   SMsgDlgRusIgnore = "&Игнорировать";
   SMsgDlgRusAll = "&Все";
   SMsgDlgRusNoToAll = "H&ет для Всех";
   SMsgDlgRusYesToAll = "Д&а для Всех";

const
   Captions: array[TMsgDlgType] of Pointer = (@SMsgDlgRusWarning,
   @SMsgDlgRusError,
   @SMsgDlgRusInformation, @SMsgDlgRusConfirm, nil);

   ButtonCaptions: array[TMsgDlgBtn] of Pointer = (
   @SMsgDlgRusYes, @SMsgDlgRusNo, @SMsgDlgRusOK, @SMsgDlgRusCancel,
   @SMsgDlgRusAbort,
   @SMsgDlgRusRetry, @SMsgDlgRusIgnore, @SMsgDlgRusAll, @SMsgDlgRusNoToAll,
   @SMsgDlgRusYesToAll,
   @SMsgDlgRusHelp);

procedure _ChangeCaptions(List: PPointerList;Last: Pointer);
var  i, Max: Integer;
      IsFind: Boolean;
begin
   Max := (Integer(Last)-Integer(List)) div SizeOf(Pointer);
   IsFind := False;
   for i := 0 to Max - 2 do
   if (List[i] = @SMsgDlgWarning) and (List[i+2] = @SMsgDlgInformation) then
     begin
      IsFind := True;
      break;
     end;
   if IsFind then Move(Captions, List[i], SizeOf(Captions));
   IsFind := False;
   for i := i to Max - 2 do
     if (List[i] = @SMsgDlgYes) and (List[i+2] = @SMsgDlgOK) then
       begin
         IsFind := True;
         break;
       end;
   if IsFind then Move(ButtonCaptions, List[i], SizeOf(ButtonCaptions));
end;

initialization
_ChangeCaptions(@DebugHook, @Application);
end.



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

Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.045 c
3-1082714737
Mim1
2004-04-23 14:05
2004.05.23
Interbase - DBExpress vs IBDatabase


1-1083923137
Erik
2004-05-07 13:45
2004.05.23
Динамическое определение типа?


14-1083693907
Шишкин Илья
2004-05-04 22:05
2004.05.23
Проверьте ссылку


1-1084267650
Andrey79
2004-05-11 13:27
2004.05.23
Шрифт для Code Editor


7-1081923947
Anka
2004-04-14 10:25
2004.05.23
Смена раскладки клавиатуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский