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

Вниз

Проблемы с размером шрифтов.   Найти похожие ветки 

 
YurikGl ©   (2004-03-11 17:42) [0]

Уважаемые мастера.
У меня к Вам небольшой вопрос. В "Свойства экрана/параметры/дополнительно" можно изменить масштаб шрифта. "Обычный размер 96dpi" или "Крупный размер 120dpi". Сам я пишу с установкой "Обычный размер 96dpi". На компьютере, где установлено "Крупный размер 120dpi" естественно все надписи поплыли. Кто как решает эту проблему?


 
Тимохов ©   (2004-03-11 17:47) [1]

Удалено модератором


 
YurikGl ©   (2004-03-11 17:48) [2]

Возможно-ли как-то "зафиксировать" шрифт?


 
WebErr ©   (2004-03-11 17:49) [3]

Удалено модератором


 
ssk   (2004-03-11 17:51) [4]

может попробовать Form.Scaled:=False; ?


 
Игорь Шевченко ©   (2004-03-11 18:04) [5]

Тимохов ©   (11.03.04 17:47)

И программа отправляется в Recycle Bin, где ей самое и место после подобных заявлений.

---
LMD


 
YurikGl ©   (2004-03-11 18:05) [6]

Удалено модератором


 
Игорь Шевченко ©   (2004-03-11 18:08) [7]

YurikGl ©   (11.03.04 18:05)

На сайте globus vcl был способ решения данной проблемы, с использованием TrueType шрифтов.


 
ssk   (2004-03-11 18:11) [8]

Вот у себя в факах нашел. Где взял, не помню. Попробуй.


Пропорциональные шрифты независимо от режима экрана

Примечание: в инспекторе объектов предварительно нужно поставить Scaled = False для тех Tform, в которых будет осуществляться масштабирование шрифтов.

type
 TFooClass = class(TControl);

procedure geAutoScale(MForm: TForm);
const
cScreenWidth :integer = 800;
cScreenHeight:integer = 600;
cPixelsPerInch:integer= 96;
cFontHeight:integer   = -11;  {В режиме проектирование значение из Font.Height}
var
i: integer;
begin
if (Screen.width > cScreenWidth)or(Screen.PixelsPerInch <> cPixelsPerInch) then
begin
 MForm.scaled := TRUE;
 MForm.height := MForm.height * screen.Height DIV cScreenHeight;
 MForm.width  := MForm.width  * screen.width DIV cScreenWidth;
 MForm.ScaleBy(screen.width, cScreenWidth);
end;
if (Screen.PixelsPerInch <> cPixelsPerInch) then
begin
 for i := MForm.ControlCount - 1 downto 0 do
  TFooClass(MForm.Controls[i]).Font.Height:=(MForm.Font.Height div cFontHeight)*TFooClass(MForm.Controls[i]).Font.Height;
end;
end;


 
Тимохов ©   (2004-03-11 18:32) [9]


>
> Игорь Шевченко ©   (11.03.04 18:04) [5]

просто надо писать программы, которые очень нужны, тогда они не будут в ресекле бине.

И вообще, это была ошибочная весвь мс. Некторые диалоги мс, также глючат при больших шрифтах. Указывать на них сейчас не хочу - надо перегружаться, чтобы перейти в большие шрифты. Но эти места есть.


 
Игорь Шевченко ©   (2004-03-11 18:39) [10]


> просто надо писать программы, которые очень нужны


Просто надо помнить, что программы пишутся для пользователей, а не пользователи существуют для программ.


> И вообще, это была ошибочная весвь мс


Аргументы ?

---
LMD


 
Тимохов ©   (2004-03-11 18:41) [11]


> Аргументы ?

Многие разработчики (в том числе и частично мс) забили на поддержку этого режима.


 
Игорь Шевченко ©   (2004-03-11 18:49) [12]

Тимохов ©   (11.03.04 18:41)


> Многие разработчики (в том числе и частично мс) забили на
> поддержку этого режима


АРГУМЕНТЫ?!

Не твое имхо, а ссылочки...


 
Тимохов ©   (2004-03-11 19:19) [13]


> Игорь Шевченко ©   (11.03.04 18:49) [12]

Под "забили" я имел в виду следующее - просто игнорируют этот параметр. В частности, у меня за таким делом замечен Norton Antivirus - шрифты как были маленькие, так и остались. Также мелкие шрифты замечены в заставках офисных программ.

И вообще - в 1 я пошутил. Сам я, конечно, поддерживаю работу в разных размерах шрифтов :))))), благо за меня это успешно делает дельфи.

Замечу, что при > 120dpi (т.е. крупнее, чем крупный шрифт) плохо начинают работать и офисные программы - в диалогах иногда словечки наезжают немного друг на друга.

А вообще - предлагаю на эту тему забить, как на бесперспективную.

Также готов признать свою ошибку: фразу
"Многие разработчики (в том числе и частично мс) забили на поддержку этого режима" заменаю на , "случается так, что при больших шрифтах видны редкие глюки в экранных формах корректно работающих в маленьких шрифтах".

Когда будет больше времени, обещаю представить солидные аргументы в доказательство последней фразы в кавычках.


 
YuRock ©   (2004-03-11 19:46) [14]

> Тимохов
> И вообще, это была ошибочная весвь мс

Это одна из редких очень хороших и полезных "весвьей" "мс"

Дома у меня раньше был 14" монитор. Я делал 1024/768 + крупный шрифт - и отлично! Размеры - как в 800/600, а качество изображения улучшается на 40%!

И программы пишу на крупном шрифте, и не только на Delphi (дело не в Delphi, Windows надо уметь пользоваться)


 
Тимохов ©   (2004-03-11 20:01) [15]

Повторю

Когда будет больше времени, обещаю представить солидные
аргументы в доказательство фразы: случается так, что при больших шрифтах видны редкие глюки в экранных формах корректно работающих в маленьких шрифтах.


 
YuRock ©   (2004-03-11 20:35) [16]

> Тимохов ©   (11.03.04 20:01) [15]

Это не глюки, а результат ракализма программистов, их делавших.


 
Тимохов ©   (2004-03-12 12:54) [17]


> YuRock ©   (11.03.04 20:35) [16]

В том числе и авторов, т.е. программеров мс.
Дабы не провоцировать на перенос в Потр-ся скажу лишь, что в выходные не пожалею время и найду места в офисе (они там есть), где проявляются глюки.


 
Игорь Шевченко ©   (2004-03-12 13:08) [18]

Тимохов ©   (12.03.04 12:54)


> В том числе и авторов, т.е. программеров мс.


> в выходные не пожалею время и найду места в офисе (они там
> есть)


А кто без греха ?
Ошибаться свойственно всем, в том числе и программистам MS.
Но делать далеко идущие выводы из ошибок все-таки не следует, так как это уже несколько иначе называется.


 
Тимохов ©   (2004-03-12 13:10) [19]

да не делаю я.
как вы сказали "твое имхо". да, наверное, это сугубо мое имхо.
виноват, буду стараться деражать его при себе.


 
PVOzerski ©   (2004-03-12 14:29) [20]

>Под "забили" я имел в виду следующее - просто игнорируют этот
>параметр. В частности, у меня за таким делом замечен Norton
>Antivirus - шрифты как были маленькие, так и остались. Также
>мелкие шрифты замечены в заставках офисных программ.

Сдается мне, изложенное означает не "забили" а с точностью до наоборот: программы это учитывают и корректируют выводимый ими шрифт. Что требуется, видимо, и автору ветки.


 
Amoeba ©   (2004-03-12 14:38) [21]

Даю конкретную ссылку:
http://cpr.biblio-globus.ru/small_font_defence.htm


 
Тимохов ©   (2004-03-12 14:40) [22]


> Что требуется, видимо, и автору ветки.

Наверное, вы правы.

Вообще говоря здесь же два решения:
1. Забить на желание пользователя иметь большие шрифты и выводить все равно в тех, которых хочется (например, как на этом сайте - у меня игнорируется значение из меню Вид/Размер шрифта). Если мне надо это сделать, то я этого всегда добивался тем, что утанавливал в runtime font.height, а не font.size. Возможно я недостаточно образован и этого можно добиться другими способами, но мне этого было достаточно, т.к. я в дизайн тайме ничего не создаю - только в рантайме. Игнорирование желания пользователя имхо приемлемо, когда форма очень навернута, т.е. увеличиваться некуда.

2. Учеть желание пользователя. Здесь вроде вообще все просто - дельфи о нас позаботился. Рисуется форма, scaled = true и все - все само раздвинется и увеличится. Замечу, что важно, копоненты не располагать вплотную с точностью до точки - надо оставлять пару точек. Если это не делать (т.е. все ставить вплотную), что бывает, что при пропорциональном увеличении строчки налезают друг на друга. Я так понимаю, что это из-за округления при умножении на коэффициент.

Прошу прощения, если сказал, что-то не то - в дизайн тайме давно не работал. Написал же это для того, чтобы обелить себя в глазах Игоря Шевченко :)))


 
KSergey ©   (2004-03-12 14:50) [23]

>  [21] Amoeba ©   (12.03.04 14:38)

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

Люди!
Вот постоянно на такие вопросы ответ один: надо делать правильно!
Да, спору нет.
Но лично мне еще ни разу не попался предметный ответ на копрос "а как именно это делать правильно"?
А есть ли соотв. руководство от MS, где бы эта методика описывалась? Что-то никогда мне не попадалось...

А может таки найдется смелый, кто нормально распишет как? Или как всегда "нова хава"?

PS
Вообще-то, есть множество "волшебных" компонент, авторы которых обещают что все сделают за тебя.
Я правда их ни разу не использовал, но может кто-то может поделиться опытом?

>  [14] YuRock ©   (11.03.04 19:46)
> И программы пишу на крупном шрифте, и не только на Delphi
> (дело не в Delphi, Windows надо уметь пользоваться)

А нельзя ли поподробнее? На крупном - а потом что? А на мелком как это выглядит? А на "крупнее крупного"? Ну пробовать мне лень ;) Уж договоите, раз начали...


 
Игорь Шевченко ©   (2004-03-12 15:05) [24]


> А есть ли соотв. руководство от MS, где бы эта методика
> описывалась?


Есть, в MSDN, насколько мне помнится. Когда-то у них был раздел о дизайне пользовательского интерфейса, но ссылка двухлетней давности, к сожалению, потеряла актуальность, а искать снова, честно говоря, лень.


> А может таки найдется смелый, кто нормально распишет как?


А вроде в fido7.ru.delphi в разделе FAQ было написано ? Я, опять же, давно не смотрел, но можно поискать в нете, этот FAQ во многих местах продублирован, может, даже на сайте Подгорецкого.


 
KSergey ©   (2004-03-12 15:28) [25]

>  [24] Игорь Шевченко ©   (12.03.04 15:05)
> Есть, в MSDN, насколько мне помнится. Когда-то у них был
> раздел о дизайне пользовательского интерфейса

Да вот помнится там говорилось лишь о юзабилити, о том как это должно выглядеть, но не о том как это сделать. Или я заблуждаюсь?

> А вроде в fido7.ru.delphi в разделе FAQ было написано ?

Ага, есть ;) "Используйте TT шрифты или Scaled:=что-то там"
Короче, тоже, что звучало здесь.
Но ведь MS в своих продуктах это как-то явно иначе делает! (не в буквальном смысле используемых свойств, а технически другими методами)
Опять говорю лишь только по тем сведениям, которые у меня остались в памяти, но врятли в FAQ по дельфям было другое - мне бы запомнилось...


 
Игорь Шевченко ©   (2004-03-12 15:53) [26]


> Но ведь MS в своих продуктах это как-то явно иначе делает!
>


Делает иначе, вызовом MulDiv и GetDeviceCaps(..., LOGPIXELSY{X}) :)


 
YurikGl ©   (2004-03-13 09:19) [27]

re [21]
Спасибо за ссылку. Буду разбираться.


 
Vemer ©   (2004-03-13 13:00) [28]

To Тимохов >
Вариант 3 - когда продукт пишеться под конкретного заказчика проще сначала выяснить использует ли он "увеличенный" режим и собираеться ли использовать. В большинстве случаев оба ответа "нет"..


 
YurikGl ©   (2004-03-13 14:34) [29]

re [28]
Только у конкретного заказчика 50 компов и столько-же юзеров. Не будешь же каждый проверять.
З.Ы. Просто у третьего юзера, у которого я это проверял было 120dpi


 
Vemer ©   (2004-03-13 21:09) [30]

re(29)
Там написано - вариант..
У моих пока 4 компа макс. :).


 
Тимохов ©   (2004-03-14 12:04) [31]


> Vemer ©   (13.03.04 13:00) [28]

У наших заказчиков компов 200 или больше, но их администрирование (вершее помошь в администрировании) проводится отделом нашей же фирмы. Так, что и спрашивать ничего не надо :))
Пока все довольны. Диалоги у нас реагируют на крупный шрифт, а формы данных - нет (большие они очень :(((). Пока все довольны.



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

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

Наверх




Память: 0.56 MB
Время: 0.027 c
4-1074795270
-=GaLaN=-
2004-01-22 21:14
2004.04.04
Обработка сообщения с приемом данных


1-1079342197
Begin
2004-03-15 12:16
2004.04.04
Обработка сообщений главной формы


9-1063191841
Agent[007]
2003-09-10 15:04
2004.04.04
Создание своих типов...


6-1075407578
Arsen
2004-01-29 23:19
2004.04.04
Save As... в TWebBrowser


3-1078611647
Rauf
2004-03-07 01:20
2004.04.04
Помогите плиз с SQL