Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
2-1143438044
Der Nechk@ssoff
2006-03-27 09:40
2006.04.09
Что за.....


15-1142772733
kaif
2006-03-19 15:52
2006.04.09
Определение понятия "иметь".


2-1143303177
Farpik
2006-03-25 19:12
2006.04.09
Небольшие вопросики!


4-1138097369
Игорь М.
2006-01-24 13:09
2006.04.09
Окно top most


11-1124346950
ImPuls$$
2005-08-18 10:35
2006.04.09
Шрифты в owner-drawn ListBox





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