Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-35467
NailMan
2002-07-16 06:50
2002.08.12
Кастрация сетевой карты


4-35496
bmai
2002-06-05 04:31
2002.08.12
Переключение раскладки клавиатуры в другом приложении.


7-35470
vlad_ri
2002-05-17 15:13
2002.08.12
Матричный принтер, режим


14-35457
Baz
2002-07-18 17:05
2002.08.12
Домены.


14-35439
blackman
2002-07-11 17:08
2002.08.12
Забыть про все ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский