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

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

А можно ли как-то заполучить строки вроде «Да», «Отмена» из Win?


Страницы:   1 2

Kolan ©   (2007-12-19 08:57:00) 

Виндовый MessageBox же как-то их получает, причем строки соответствуют языку винды.

Если можно, то как?


Kolan   (2007-12-19 13:41:00) [1]

> каждый раз получать значения из dll

Ок переделаю шас.

…

Переделал

unit KSystemResourceStrings;

interface

const
 OkID = 800;
 CancelID = 801;
 AbortID = 802;
 RetryID = 803;
 IgnoreID = 804;
 YesID = 805;
 NoID = 806;
 CloseID = 807;
 HelpID = 808;
 TryAgainID = 809;
 ContinueID = 810;

function LoadResourceString(AModuleName: string;
 AnID: Cardinal): string;
function LoadUser32ResourceString(AnID: Cardinal): string;

function GetOkString: string;
function GetCancelString: string;
function GetAbortString: string;
function GetRetryString: string;
function GetIgnoreString: string;
function GetYesString: string;
function GetNoString: string;
function GetCloseString: string;
function GetHelpString: string;
function GetTryAgainString: string;
function GetContinueString: string;

implementation
uses
 Windows,SysUtils;

var
 OkS: string;
 CancelS: string;
 AbortS: string;
 RetryS: string;
 IgnoreS: string;
 YesS: string;
 NoS: string;
 CloseS: string;
 HelpS: string;
 TryAgainS: string;
 ContinueS: string;

function LoadResourceString(AModuleName: string;
   AnID: Cardinal): string;
var
 Buffer: array[0𠢇] of Char;
begin
 Result := '';
 LoadString(GetModuleHandle(PAnsiChar(AModuleName)), AnID, Buffer, SizeOf(Buffer));
 Result := StrPas(Buffer);
end;

function LoadUser32ResourceString(AnID: Cardinal): string;
begin
 Result := LoadResourceString('user32.dll', AnID);
end;

function GetOkString: string;
begin
 Result := OkS;
end;

function GetCancelString: string;
begin
 Result := CancelS;
end;

function GetAbortString: string;
begin
 Result := AbortS;
end;

function GetRetryString: string;
begin
 Result := RetryS;
end;

function GetIgnoreString: string;
begin
 Result := IgnoreS;
end;

function GetYesString: string;
begin
 Result := YesS;
end;

function GetNoString: string;
begin
 Result := NoS;
end;

function GetCloseString: string;
begin
 Result := CloseS;
end;

function GetHelpString: string;
begin
 Result := HelpS;
end;

function GetTryAgainString: string;
begin
 Result := TryAgainS;
end;

function GetContinueString: string;
begin
 Result := ContinueS;
end;

initialization
 OkS := LoadUser32ResourceString(OkID);
 CancelS := LoadUser32ResourceString(CancelID);
 AbortS := LoadUser32ResourceString(AbortID);
 RetryS := LoadUser32ResourceString(RetryID);
 IgnoreS := LoadUser32ResourceString(IgnoreID);
 YesS := LoadUser32ResourceString(YesID);
 NoS := LoadUser32ResourceString(NoID);
 CloseS := LoadUser32ResourceString(CloseID);
 HelpS := LoadUser32ResourceString(HelpID);
 TryAgainS := LoadUser32ResourceString(TryAgainID);
 ContinueS := LoadUser32ResourceString(ContinueID);

end.


Kolan   (2007-12-19 12:23:00) [2]

> каждый раз получать значения из dll

Ок переделаю шас.


Palladin   (2007-12-19 12:21:00) [3]


> [23] Kolan ©   (19.12.07 12:19)

дело хозяйское, просто не вижу смысла каждый раз получать значения из dll


> что тогда пользователю придется помнить, что стоит эти функции
> вызывать в цикле, так как каждый раз будет обращение?

и это тоже


Kolan   (2007-12-19 12:19:00) [4]

> заведи их локально в модуле и в функциях возвращай их значение…

Ну а почему бы тогда просто функции не оставить?

Или ты хочешь сказать, что тогда пользователю придется помнить, что стоит эти функции вызывать в цикле, так как каждый раз будет обращение?


Palladin   (2007-12-19 12:15:00) [5]

дык блин глобальные переменные глобальным перменным рознь... если прямо так смущают что глобальные, то заведи их локально в модуле и в функциях возвращай их значение... а так глобальных переменных на самом деле очень даже много... DecimalSeparator например..


Kolan   (2007-12-19 12:13:00) [6]


> лучше на initialization считать и определить как глобальные
> переменные

Да и как говорит Leonid Tryanovsky Глобальные переменные MD и я к нему присоединяюсь. :)


Kolan   (2007-12-19 12:12:00) [7]


> а зачем ввиде функций? лучше на initialization считать и
> определить как глобальные переменные

Хз, сделал так… Иначе в голову не пришло.


Kolan   (2007-12-19 12:11:00) [8]

> Retry в русской 2000 на кнопке отображается как «Повторить
> поп» )

Нет суда по MessageBox и его флагу MB_ABORTRETRYIGNORE — 803,  «По&втор» — это Retry


Palladin   (2007-12-19 12:11:00) [9]


> [16] Kolan ©   (19.12.07 12:09)

а зачем ввиде функций? лучше на initialization считать и определить как глобальные переменные


Palladin   (2007-12-19 12:10:00) [10]


> 809,  «&Повторить»
> Try Again чтоли?

Retry помоему


Kolan   (2007-12-19 12:09:00) [11]

Се, получилось. Постю сюда модуль, мало ли мож кому пригодится…

unit KSystemResourceStrings;

interface

const
 OkID = 800;
 CancelID = 801;
 AbortID = 802;
 RetryID = 803;
 IgnoreID = 804;
 YesID = 805;
 NoID = 806;
 CloseID = 807;
 HelpID = 808;
 TryAgainID = 809;
 ContinueID = 810;

function LoadResourceString(AModuleName: string;
 AnID: Cardinal): string;
function LoadUser32ResourceString(AnID: Cardinal): string;

function LoadOkString: string;
function LoadCancelString: string;
function LoadAbortString: string;
function LoadRetryString: string;
function LoadIgnoreString: string;
function LoadYesString: string;
function LoadNoString: string;
function LoadCloseString: string;
function LoadHelpString: string;
function LoadTryAgainString: string;
function LoadContinueString: string;

implementation
uses
 Windows,SysUtils;

function LoadResourceString(AModuleName: string;
   AnID: Cardinal): string;
var
 Buffer: array[0𠢇] of Char;
begin
 Result := '';
 LoadString(GetModuleHandle(PAnsiChar(AModuleName)), AnID, Buffer, SizeOf(Buffer));
 Result := StrPas(Buffer);
end;

function LoadUser32ResourceString(AnID: Cardinal): string;
begin
 Result := LoadResourceString('user32.dll', AnID);
end;

function LoadOkString: string;
begin
 Result := LoadUser32ResourceString(OkID);
end;

function LoadCancelString: string;
begin
 Result := LoadUser32ResourceString(CancelID);
end;

function LoadAbortString: string;
begin
 Result := LoadUser32ResourceString(AbortID);
end;

function LoadRetryString: string;
begin
 Result := LoadUser32ResourceString(RetryID);
end;

function LoadIgnoreString: string;
begin
 Result := LoadUser32ResourceString(IgnoreID);
end;

function LoadYesString: string;
begin
 Result := LoadUser32ResourceString(YesID);
end;

function LoadNoString: string;
begin
 Result := LoadUser32ResourceString(NoID);
end;

function LoadCloseString: string;
begin
 Result := LoadUser32ResourceString(CloseID);
end;

function LoadHelpString: string;
begin
 Result := LoadUser32ResourceString(HelpID);
end;

function LoadTryAgainString: string;
begin
 Result := LoadUser32ResourceString(TryAgainID);
end;

function LoadContinueString: string;
begin
 Result := LoadUser32ResourceString(ContinueID);
end;

end.


clickmaker   (2007-12-19 12:06:00) [12]


> [14] Kolan ©   (19.12.07 12:03)

Retry в русской 2000 на кнопке отображается как "Повторить поп" )


Kolan   (2007-12-19 12:03:00) [13]

> ну да…

Ок

803,  «По&втор»
Retry

809,  «&Повторить»
Try Again чтоли?


Palladin   (2007-12-19 11:55:00) [14]


> Но мое правильное?

ну да...


Kolan   (2007-12-19 11:51:00) [15]


> так быстрее

Но мое правильное?


Kolan   (2007-12-19 11:50:00) [16]

803,  «По&втор»
809,  «&Повторить»

Как по английски?


Palladin   (2007-12-19 11:47:00) [17]

так быстрее
Function ls(Const s:String;ah:Cardinal):String;
Begin
SetLength(Result,5000);
SetLength(Result,LoadString(GetModuleHandle(PChar(s)),ah,@Result[1],5000));
End;


Kolan   (2007-12-19 11:42:00) [18]

function LoadResourceString(AModuleName: string; AnID: Cardinal): string;
var
 Buffer: array[0𠢇] of Char;
begin
 LoadString(GetModuleHandle(PAnsiChar(AModuleName)), AnID, Buffer, SizeOf(Buffer));
 Result := StrPas(Buffer);
end;


Правильно? С памятью не напортачил?


palva   (2007-12-19 11:25:00) [19]

LoadLibrary
LoadString


clickmaker   (2007-12-19 11:25:00) [20]


> [5] Kolan ©   (19.12.07 11:17)

LoadString(GetModuleHandle("user32.dll"), 801, szText, sizeof(szText));


Страницы:   1 2

Наверх

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