Проблеми з розміром шрифтів

Шановні майстри. У мене до Вас невелике питання. У розділі "Властивості екрана/параметри/додатково" можна змінити масштаб шрифту. "Звичайний розмір 96dpi" або "Великий розмір 120dpi". Сам я пишу з установкою "Звичайний розмір 96dpi". На комп'ютері, де встановлено "Великий розмір 120dpi", природно всі написи попливли. Хто як вирішує цю проблему?

Чи можливо якось "зафіксувати" шрифт?

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

І програма відправляється в Recycle Bin, де їй саме місце після подібних заяв.

На сайті globus vcl був спосіб вирішення цієї проблеми, використовуючи TrueType шрифти.

Ось у себе у факах знайшов. Десь узяв, не пам'ятаю. Спробуй.

Пропорційні шрифти незалежно від режиму екрану

Примітка: в інспекторі об'єктів потрібно поставити Scaled = False для тих Tform, в яких буде здійснюватися масштабування шрифтів.

type TFooClass = class(TControl);

procedure geAutoScale(MForm: TForm); const cScreenWidth :integer = 800; cScreenHeight:integer = 600; cPixelsPerInch:integer=96; cFontHeight:integer = -11; var i: integer; begin if (Screen.width &ct 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;

І взагалі, це була помилкова весла мс.Деякі діалоги мс, також глючать при великих шрифтах. Вказувати на них зараз не хочу – треба перевантажуватись, щоб перейти у великі шрифти. Але ці місця є.

> просто треба писати програми, які дуже потрібні

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

> І взагалі, це була помилкова весь мс.

> Аргументи ?Багато розробників (у тому числі й частково мс) забили на підтримку цього режиму.

> Багато розробників (у тому числі й частково мс) забили на > підтримку цього режиму

Не твоє імхо, а посилання.

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

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

А взагалі – пропоную на цю тему забити, як на безперспективну.

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

Коли буде більше часу, обіцяю надати солідні аргументи на доказ останньої фрази у лапках.

> Тимохів> І взагалі, це була помилкова весь мс.

Це одна з рідкісних дуже хороших і корисних "весів" "мс"

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

І програми пишу на великомушрифті, і не тільки на Delphi (справа не в Delphi, Windows треба вміти користуватися)

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

Це не глюки, а результат ракалізму програмістів, які їх робили.

А хто без гріха? Помилятися властиво всім, у тому числі і програмістам MS. Але робити далекосяжні висновки з помилок все-таки не слід, так як це вже трохи інакше називається.

та не роблю я. як ви сказали "твоє імхо". так, напевно, це суто моє імхо.

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

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

Взагалі кажучи тут два рішення: 1. Забити на бажання користувача мати великі шрифти та виводити все одно в тих, яких хочеться (наприклад, як на цьому сайті – у мене ігнорується значення з меню Вид/Розмір шрифту). Якщо мені треба це зробити, то я цього завжди домагався тим, що встановлював runtime font.height, а не font.size. Можливо я недостатньо освічений і цього можна досягти іншими способами, але цього було достатньо, т.к. я в дизайн таймі нічого не створюю – тільки в рантаймі. Ігнорування бажання користувача имхо прийнятно, коли форма дуже навернена, тобто. збільшуватися нема куди.

2. Врахувати бажання користувача. Тут начебто взагалі все просто – дельфі про насподбав. Малює форму, scaled = true і все - все саме розсунеться і збільшиться. Зауважу, що важливо, копоненти не розташовувати впритул з точністю до точки - треба залишати пару точок. Якщо це робити (тобто. все ставити впритул), що буває, що з пропорційному збільшенні рядки налазять друг на друга. Я так розумію, що це через заокруглення при множенні на коефіцієнт.

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

Люди! Ось постійно на такі питання відповідь одна: треба робити правильно! Так, суперечці немає. Але особисто мені ще жодного разу не трапилася предметна відповідь на копит "а як саме це робити правильно"? 1>А чи є соотв. посібник від MS, де б ця методика описувалася? Щось ніколи мені не траплялося.

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

> А чи є соотв. керівництво від MS, де ця методика > описувалася?

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

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

> Але MS у своїх продуктах це якось явно інакше робить! >

Робить інакше, викликом MulDiv та GetDeviceCaps(. LOGPIXELSY) :)

re [21] Дякую за посилання. Розбиратимуся.

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

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

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