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

Вниз

!!! Компонент. Помогите !!!   Найти похожие ветки 

 
V.Turecky   (2002-07-30 14:54) [0]

Здравствуйте.

Пожалуйста, помогите разобратся с компонентом. Он отказываеться компилироватся, выдает ошибку. Я прокоментировал где именно.

unit glSmallFontsDefence;
{
Если у пользователя установлен крупный шрифт,
компонент автоматически использует в программе
шрифт Arial за счет чего размер шрифта не
увеличивается. При этом он также следит, чтобы
и размеры формы не изменялись.
}
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TglSmallFontsDefence = class(TComponent)
private
procedure UpdateFonts(Control: TWinControl);
{ Private declarations }
protected
procedure Loaded; override;
public
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;

procedure Register;

implementation

function IsSmallFonts: boolean;{Значение функции TRUE если мелкий шрифт}
var DC: HDC;
begin
DC:=GetDC(0);
Result:=(GetDeviceCaps(DC, LOGPIXELSX) = 96);
{ В случае крупного шрифта будет 120}
ReleaseDC(0, DC);
end;

procedure Register;
begin
RegisterComponents("Controls", [TglSmallFontsDefence]);
end;

{ TglSmallFontsDefence }

constructor TglSmallFontsDefence.Create(AOwner: TComponent);
begin
inherited;
if (Owner is TForm) then (Owner as TForm).Scaled := false;
end;

procedure TglSmallFontsDefence.Loaded;
begin
inherited;
if (Owner is TForm) then (Owner as TForm).Scaled := false;
if csDesigning in ComponentState then
begin
if not IsSmallFonts then
ShowMessage("Проектирование приложения в режиме крупных" +
" шрифтов недопустимо!"#13#10+
"Компонент TglSmallFontsDefence отказывается" +
" работать в таких условиях.");
end else
UpdateFonts((Owner as TForm));
end;

procedure TglSmallFontsDefence.UpdateFonts(Control: TWinControl);
var
i: integer;
fnt:Tfont;
procedure UpdateFont(Font: TFont);
begin
if CompareText(Font.Name, "MS Sans Serif") <> 0 then exit;
Font.Name := "Arial";
end;
begin
if IsSmallFonts then exit;

//Эта строка неработает. Компилятор не может идентифицировать TShowFont?
UpdateFont(TShowFont(Control).Font);

with Control do
for i:=0 to ControlCount-1 do
begin

//Здесь такая-же ситуация и по-моему, ешё чего-то неправильно.
UpdateFont(TShowFont(Controls[i]).Font);

if Controls[i] is TWinControl then UpdateFonts(Controls[i] as TWinControl);
end;

end;


end.


 
DiamondShark ©   (2002-07-30 15:17) [1]

Дык в тексте идентификатор TShowFont больше нигде не наблюдается, а телепаты в отпуске.


 
V.Turecky   (2002-07-30 16:00) [2]


> Дык в тексте идентификатор TShowFont больше нигде не наблюдается,
> а телепаты в отпуске.


Т.е никак?



Страницы: 1 вся ветка

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
3-35142
Loco
2002-07-21 16:02
2002.08.12
SQL


1-35276
Kurt
2002-07-30 16:22
2002.08.12
Все о том же поиске по тексту (RichEdit, Memo)! Большие обьемы те


4-35504
tararasyk
2002-06-05 18:41
2002.08.12
Запуск taskmgr.exe и блокировка в Win2000


3-35198
Prog_mail
2002-07-20 11:24
2002.08.12
Помогите с отчетом


1-35377
BlackSun
2002-07-24 20:22
2002.08.12
PostData