![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А можно ли как-то заполучить строки вроде «Да», «Отмена» из Win?
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));