Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизНеизвестный компонент Найти похожие ветки
← →
smaller (2007-03-12 13:21) [0]Помогите пожалйста определить компонент 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.
← →
MBo © (2007-03-12 13:34) [1]type
TShowFont = class(TControl);
это вписать и всё.
← →
Kolan © (2007-03-12 13:38) [2]> [1] MBo © (12.03.07 13:34)
> type
> TShowFont = class(TControl);
>
> это вписать и всё.
Я вот тоже веточку создавал
http://delphimaster.net/view/1-1173442190/
правда проигнорировали.
Как "НЕ бороться" с кр. шрифтом, а "подружится" с ним? Пользователь ведь незря его выбрал, зачем его мучать еслион плохо видит например...
← →
smaller (2007-03-12 16:44) [3]После добавки TShowFont = class(TControl);
unit компилируется, спасибо!
Ну а проверить, работает этот компонент или нет я не могу, потому как оказалось, что не умею поставить самодельный невизуальный компонент на форму.
Не подскажите ли кстати, как это делается?
← →
Elen © (2007-03-12 17:26) [4]
> Не подскажите ли кстати, как это делается?
Попробуй его проинсталить в Делфи. Создай на него Package и проинсталь его в указанную тобой вкладку.
← →
RASkov (2007-03-12 17:57) [5]> [3] smaller (12.03.07 16:44)
Если это[0] весь код компонента, то испытать его можно простым вызовом процедуры UpdateFonts, или т.е. нет смысла делать этот код компонентом.
Достаточно одной процедуры в общем модуле для проекта...
← →
RASkov (2007-03-12 18:02) [6]
> то испытать его можно простым вызовом процедуры UpdateFonts
Кстати здесь даже и создавать его(компонент) не надо, помоему можно и так:procedure TForm1.ButtonClick();
var C: TglSmallFontsDefence;
begin
C.UpdateFonts(Form1);
end;
> Достаточно одной процедуры в общем модуле для проекта...
Т.е. достаточно процедурыprocedure UpdateFonts(Control: TWinControl);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c