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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
1-1083856663
Alek_1
2004-05-06 19:17
2004.05.23
OleContainer


1-1083745547
KPP
2004-05-05 12:25
2004.05.23
ZLib - пример использования


14-1083269893
тихий вовочка
2004-04-30 00:18
2004.05.23
Определение термина "окно"


3-1083311385
Stupid
2004-04-30 11:49
2004.05.23
как на момент комполяции pFIBDatabase сделать Connected=False.?


11-1072108076
SPeller
2003-12-22 18:47
2004.05.23
Надо или нет?