![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, правильно ли подавляются сообщения об ошибках? [D7, 2000]
An software developer © (2008-04-11 12:23:00)
var y1_corr,y2_corr:Integer;
function is_it_9x:boolean; //determine is in Windows 95 or 98
type vers=TOSVERSIONINFO;
var v:vers;
begin
result:=true;
v.dwOSVersionInfoSize:= sizeof(TOSVERSIONINFO);
GetVersionEx(v);
if v.dwPlatformId>=2 then result:=false;
end;
procedure TForm1.FormCreate(Sender: TObject);
type TIsAppThemed = function:BOOL;
var M:TMessage; DLL: THandle; IsAppThemed:TIsAppThemed;
begin
y1_corr:=0; y2_corr:=0; // correct component positions with XP styles
if NOT is_it_9x then SetErrorMode(1); //SetErrorMode works only in 2000/XP and higher
DLL:= LoadLibrary('uxtheme.dll'); // XP library
if NOT is_it_9x then SetErrorMode(0); //SetErrorMode works only in 2000/XP and higher
IF DLL <> 0 THEN
BEGIN
@IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');
if IsAppThemed then y1_corr:=5;
IF DLL <>0 THEN FreeLibrary(DLL);
END;
Caption:=IntToStr(y1_corr);
end;
Задача: нужно что бы интерфейс программы корректно отображался во всех виндовсах (9x/2000/XP). В XP необходима коррекция при включённых стилях с помощью переменной y1_corr.
Через библиотеку uxtheme.dll определяется, включены ли в XP стили.
Нужно что бы при вызове uxtheme.dll (если ёе нет) не возникало сообщение об ошибках. Я не нашёл куда вставить try..except и использовал SetErrorMode. Вроде работает. Правильно ли блокируются ошибки, нет ли каких подводных камней?
An software developer (2008-04-11 13:33:00) [1]
var y1_corr, y2_corr: Integer;
function is_it_9x: boolean; //determine is in Windows 95 or 98
type vers = TOSVERSIONINFO;
var v: vers;
begin
result := true;
v.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
GetVersionEx(v);
if v.dwPlatformId >= 2 then result := false;
end;
procedure TForm1.FormCreate(Sender: TObject);
type TIsAppThemed = function: BOOL;
var M: TMessage; DLL: THandle; IsAppThemed: TIsAppThemed;
begin
y1_corr := 0; y2_corr := 0; // correct component positions with XP styles
if not is_it_9x then SetErrorMode(1); //SetErrorMode works only in 2000/XP and higher
DLL := LoadLibrary('uxtheme.dll'); // XP library
if not is_it_9x then SetErrorMode(0); //SetErrorMode works only in 2000/XP and higher
if DLL <> 0 then
begin
@IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');
if IsAppThemed then y1_corr := 5;
if DLL <> 0 then FreeLibrary(DLL);
end;
Caption := IntToStr(y1_corr);
end;
сформатировано Delphi formatter'ом
Anatoly Podgoretsky (2008-04-11 13:12:00) [2]> An software developer (11.04.2008 13:04:03) [3]
Какой хреновый форматер.
An software developer (2008-04-11 13:04:00) [3]
BEGIN
result := true;
v.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
GetVersionEx(v);
IF v.dwPlatformId >= 2 THEN result := false;
END;
PROCEDURE TForm1.FormCreate(Sender: TObject);
TYPE TIsAppThemed = FUNCTION: BOOL;
VAR M: TMessage; DLL: THandle; IsAppThemed: TIsAppThemed;
BEGIN
y1_corr := 0; y2_corr := 0; // correct component positions with XP styles
IF NOT is_it_9x THEN SetErrorMode(1); //SetErrorMode works only in 2000/XP and higher
DLL := LoadLibrary('uxtheme.dll'); // XP library
IF NOT is_it_9x THEN SetErrorMode(0); //SetErrorMode works only in 2000/XP and higher
IF DLL <> 0 THEN
BEGIN
@IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');
IF IsAppThemed THEN y1_corr := 5;
IF DLL <> 0 THEN FreeLibrary(DLL);
END;
Caption := IntToStr(y1_corr);
END;
сформатировано Source formatter'ом
Kolan (2008-04-11 12:27:00) [4]Отвратительный код. Офирми нормально, ничего не понятно
ЗЫ
An software developer an если первая буква гласная
Kolan (2008-04-11 12:27:00) [5]Оформи