Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неизвестный компонент [D7, XP]


smaller ©   (2007-03-12 13:21:00) 

Помогите пожалйста определить компонент TShowFont(Control)
В D7 такого не могу найти даже в хелпе, а без него  ниже приводимый
код (защита от крупных шрифтов) не работает. Может быть этот компонент собственная разработка автора ?

unit glSmallFontsDefence;
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('Gl Components', [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;
 procedure UpdateFont(Font: TFont);
 begin
   if CompareText(Font.Name, 'MS Sans Serif') <> 0 then exit;
   Font.Name := 'Arial';
 end;
begin
 if IsSmallFonts then exit;
 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.


RASkov   (2007-03-12 18:02:00) [1]


> то испытать его можно простым вызовом процедуры UpdateFonts

Кстати здесь даже и создавать его(компонент) не надо, помоему можно и так:

procedure TForm1.ButtonClick();
var C: TglSmallFontsDefence;
begin
 C.UpdateFonts(Form1);
end;


> Достаточно одной процедуры в общем модуле для проекта...

Т.е. достаточно процедуры
procedure UpdateFonts(Control: TWinControl);


RASkov   (2007-03-12 17:57:00) [2]

> [3] smaller   (12.03.07 16:44)

Если это[0] весь код компонента, то испытать его можно простым вызовом процедуры UpdateFonts, или т.е. нет смысла делать этот код компонентом.
Достаточно одной процедуры в общем модуле для проекта...


Elen   (2007-03-12 17:26:00) [3]


> Не подскажите ли кстати, как это делается?

Попробуй его проинсталить в Делфи. Создай на него Package и проинсталь его в указанную тобой вкладку.


smaller   (2007-03-12 16:44:00) [4]

После  добавки  TShowFont = class(TControl);    
unit    компилируется,  спасибо!
Ну а проверить, работает этот компонент или нет я не могу, потому как оказалось, что не умею поставить самодельный невизуальный компонент на форму.

Не подскажите ли кстати, как это делается?


Kolan   (2007-03-12 13:38:00) [5]

> [1] MBo ©   (12.03.07 13:34)
> type
> TShowFont = class(TControl);
>
> это вписать и всё.


Я вот тоже веточку создавал
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1173442190&n=0
правда проигнорировали.

Как "НЕ бороться" с кр. шрифтом, а "подружится" с ним? Пользователь ведь незря его выбрал, зачем его мучать еслион плохо видит например...


MBo   (2007-03-12 13:34:00) [6]

type
TShowFont = class(TControl);

это вписать и всё.


Наверх

Титульная страница Поиск, карта сайта Написать письмо