Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

Если экран с крупным шрифтом - на форме всё налазит друг на друга   Найти похожие ветки 

 
Vitalik__   (2006-03-25 10:55) [0]

на вкладке Свойства:Экран -> Параметры -> Дополнительно -> Общие можно увеличить масштабный коэффициент. как мне узнать, увеличен ли он или нет. и желательно на сколько, чтобы обработать все элементы на форме, чтобы они не наезжали друг на друга.


 
Vitalik__   (2006-03-25 19:10) [1]

неужели никто не стречался с таой задачей?


 
Desdechado ©   (2006-03-25 19:11) [2]

они не будут наезжать, если выставить
Form.Scaled=True
Form.PixelsPerInch=текущее на мониторе


 
Amoeba ©   (2006-03-27 11:04) [3]

Можно сделать и так, чтобы проблема вообще не имела места (взято из библиотеки GlobusLib):

Предлагаемое решение способно защитить программу от влияния режима крупных шрифтов и не отказываться от шрифта MS Sans Serif при разработке программы. Подход состоит в том, чтобы заменять все шрифты MS Sans Serif на Arial при запуске программы при крупных шрифтах. Создавать программу, естественно, следует при мелких шрифтах.

Можно написать невизуальный компонент и добавить его на каждую форму. Компонент при загрузке проверяет режим и при обнаружении режима "Big Fonts" "обходит" все визуальные компоненты для замены шрифта. Также компонент заботится о том, чтобы свойство Scaled у форм было отключено.

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.



Вы можете добавить свойство Options типа перечисления, в котором задать опции исключения некоторых классов компонентов. К примеру, можно добавить возможность отключать замену шрифтов для потомков TCustomGrid. Очень часто пользователи используют режим крупных шрифтов, чтобы улучшить читаемость таблиц данных (TDBGrid). Тогда не надо лишать их этой возможности.



Страницы: 1 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1143132413
Уч.
2006-03-23 19:46
2006.04.09
type Packed Record и Record в чем разница?


2-1143434756
nyron
2006-03-27 08:45
2006.04.09
поиск по форме


2-1143284734
Толян
2006-03-25 14:05
2006.04.09
рисование таблицы


9-1127749540
Ford
2005-09-26 19:45
2006.04.09
IDirect3DDevice9 Не хочет создаваться


2-1143393140
Bogdan1024
2006-03-26 21:12
2006.04.09
Неудобная TChart