Текущий архив: 2008.05.11;
Скачать: CL | DM;
Вниз
Подскажите, правильно ли подавляются сообщения об ошибках? Найти похожие ветки
← →
An software developer (2008-04-11 12:23) [0]
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. Вроде работает. Правильно ли блокируются ошибки, нет ли каких подводных камней?
← →
Kolan © (2008-04-11 12:27) [1]Отвратительный код. Офирми нормально, ничего не понятно…
ЗЫ
An software developer — an если первая буква гласная…
← →
Kolan © (2008-04-11 12:27) [2]Оформи
← →
An software developer (2008-04-11 13:04) [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"ом
← →
Anatoly Podgoretsky © (2008-04-11 13:12) [4]> An software developer (11.04.2008 13:04:03) [3]
Какой хреновый форматер.
← →
An software developer (2008-04-11 13:33) [5]
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"ом
Страницы: 1 вся ветка
Текущий архив: 2008.05.11;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.018 c