Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.042 c
2-1173183324
Интересующийся
2007-03-06 15:15
2007.04.01
Простой вопрос пр справку


15-1173115580
PARUS
2007-03-05 20:26
2007.04.01
Сидюк от компа


3-1168614838
Antonyan
2007-01-12 18:13
2007.04.01
Masterkey


3-1168319565
Vovan123+
2007-01-09 08:12
2007.04.01
Правильно запустить форму для проверки пароля


3-1168348619
novill
2007-01-09 16:16
2007.04.01
IB 7.5 Как хр. процедуре в переменнной типа date обнулить время?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский