![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неизвестный компонент [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);
это вписать и всё.