Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вид формы...


cypher ©   (2002-09-24 21:53:00) 

... тема уже не раз обсуждалась, но толком никто так и не ответил.
Как _правильно_ готовить форму, чтобы при разных настройках рабочего стола (размер шрифта, стиль, цвет и прочее) она была номральной (не уплывали кнопки, надписи были в порядке и пр.).
Желательно полноценный пример.


Reindeer Moss Eater   (2002-09-25 14:10:00) [1]

const
App_FontSize = 10;
var
DC:HDC;
ScreenLogPixels:integer;
begin
DC:=GetDC(0);
ScreenLogPixels:=GetDeviceCaps(DC,LOGPIXELSY);
ReleaseDC(0,DC);
DefFontData.Height:= - MUlDiv(App_FontSize,ScreenLogPixels,72);
Font.Size:=DefFontData.Height;
end;


MegaBass   (2002-09-25 13:41:00) [2]


var
oldFont, newFont: HFONT;
lDC: HDC;
begin
lDC := GetDC(0;)
newFont := CreateFOnt(...читай хелп);или CreateFontIndirect(...);
oldFont := SelectObject(lDC, newFont);
...
тут все будет правильным фонтом
...
SelectObject(lDC, oldFont);
end;


Оля   (2002-09-25 13:00:00) [3]

> Reindeer Moss Eater
типа, если я это вставлю в свой проект должно все получиться?
попробовала...
const
App_FontSize:=10;
[Error] nay.pas(493): "=" expected but ":=" found
// ну с этим понятно, конст - `=`

а вот, что с этим делать ?
[Error] nay.pas(559): Undeclared identifier: "ScreenLogPixels"


Reindeer Moss Eater   (2002-09-25 11:52:00) [4]

>ОЛЯ
см. Reindeer Moss Eater (25.09.02 08:45)


Оля   (2002-09-25 11:11:00) [5]

А кто подскажет как программно узнать какой размер шрифта установлен на машине 96 или 120 dpi, разрешение экрана?
Мне кажется получив такую информацию можно попытатся масштабировать компоненты в зависимости от установок шрифта и разрешения экрана.


Anatoly Podgoretsky   (2002-09-25 10:36:00) [6]

Если учесть что размеры шрифтов могут меняться относительно нормального в пределах от 10 лр 500 % то задачка сложная
Реально обычно поступают так, разработку ведут при крупном размер шрифта 125% и проверяют при нормальном. Естественно, что все нужные свойства формы выставляются должным образом. Придерживая этого правила можно получить приемлемый вид в большинстве случаев. Альтернативой является подстройка всех размеров и положений в рантайм


Bond   (2002-09-25 10:27:00) [7]

Используй только реальные цвета. Сам выставляй размеры и тип всех шрифтов на кнопках, надписях


Reindeer Moss Eater   (2002-09-25 08:45:00) [8]

const
App_FontSize:=10;
var
DC:HDC;
begin
DC:=GetDC(0);
ScreenLogPixels:=GetDeviceCaps(DC,LOGPIXELSY);
ReleaseDC(0,DC);
DefFontData.Height:= - MUlDiv(App_FontSize,ScreenLogPixels,72);
Font.Size:=DefFontData.Height;
end;


После этого при любом размере системного шрифта форма будет со шрифтом десятка (таким, как он выглядит при нормальном размере шрифта 96 точек на дюйм)


cypher   (2002-09-25 01:07:00) [9]

У например окно диалога настроек программы... там порядка 10 Tab"ов. в каждом табе туева хуча чекбоксов и каптионов. все выравнено как нада.
ставим в системе КРУПНЫЙ шрифт, и все поползло поехало.

Вообще, все Фонты основаны на каком-то ДефаулФонте. пробовал менять его при запуске программы (по создания главной формы) - результат никакой =\


OxOTHuK   (2002-09-24 22:39:00) [10]

2 cypher
а если без этого не обойтись, старайся все фиксить, закреплять Анкорами, Алигнами... храни ini-файл настройки, в который запихни все что можно, а при запуске все доставай...
но совет zam2000более ценный, старайся следовать ему...
=)


zam2000   (2002-09-24 22:23:00) [11]

в каждом компоненте использовать реальные цвета(например clSilver вместо clBtnFace), (RUSSIAN_CHARSET вместо DEFAULT_CHARSET) и.т.д, использовать сплиттеры, кнопок вообще поменьше, а те что есть должны быть на тулбарах, надписей на кнопках вообще надо избегать, вместо надписей иконки и hints.
Вот общие принципы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо