1

Тема: Обрізання елементів управління Delphi під Windows 7 x32bit

Доброго часу доби на Форумі.

Є програмка, написана на сьомому Дельфі. Під хрюшею працює успішно, а от коли запустили той же екзешник під свіжою сімкою - декілька віджетів по правій межі візуально обрізалися (не видно кнопки випадання списку у комбобоксі, наприклад, а також пари-трійки кнопок). Розтягування вікна програми не помагає - приховані частини не показуються.
Цікаво, що під іншою сімкою, яка ставилася місяцями раніше, все працює добре. 0_о

У чому граблі?

I belong to the Dead Generation.

2

Re: Обрізання елементів управління Delphi під Windows 7 x32bit

Кілька пікселів могла вкрасти ширша рамка вікна. У ХРюші рамка має товщину 1 піксель, а у Сімки - 5.
Але скоріше за все справа в різному DPI. Інсталятор Сімки автоматично виставляє його в залежності від параметрів монітора. У ХРюші він завжди однаковий - 96, і я бачив усього кілька чоловік, які його собі поміняли (це досить нетривіальна операція). Тому відповідно й увесь софт завжди розроблявся для DPI=96. VCL у сьомій делфі в курсі того, що DPI може бути різним. Вона навіть намагається масштабувати форму, але цей механізм нормально працює тільки коли параметр форми AutoScroll виставлений у False. Біда у тому, що за замовчуванням він True, і нікому ніколи не приходило в голову його змінювати. Через це ви бачите те, що бачите. На вкладці Сумісність у властивостях виконуваного файлу є галочка, яка начебто мала б цю проблему виправити, але у мене вона чомусь не працює.

Подякували: Bartash, ADR2

3

Re: Обрізання елементів управління Delphi під Windows 7 x32bit

Torbins написав:

Кілька пікселів могла вкрасти ширша рамка вікна. У ХРюші рамка має товщину 1 піксель, а у Сімки - 5.
Але скоріше за все справа в різному DPI. Інсталятор Сімки автоматично виставляє його в залежності від параметрів монітора. У ХРюші він завжди однаковий - 96, і я бачив усього кілька чоловік, які його собі поміняли (це досить нетривіальна операція). Тому відповідно й увесь софт завжди розроблявся для DPI=96. VCL у сьомій делфі в курсі того, що DPI може бути різним. Вона навіть намагається масштабувати форму, але цей механізм нормально працює тільки коли параметр форми AutoScroll виставлений у False. Біда у тому, що за замовчуванням він True, і нікому ніколи не приходило в голову його змінювати. Через це ви бачите те, що бачите. На вкладці Сумісність у властивостях виконуваного файлу є галочка, яка начебто мала б цю проблему виправити, але у мене вона чомусь не працює.

Галочка сумісності, вочевидь, існує для сумісності самих віндів.-_-

Вона навіть намагається масштабувати форму, але цей механізм нормально працює тільки коли параметр форми AutoScroll виставлений у False. Біда у тому, що за замовчуванням він True, і нікому ніколи не приходило в голову його змінювати.

Себто єдиний шлях - перекомпіляція?

I belong to the Dead Generation.

4

Re: Обрізання елементів управління Delphi під Windows 7 x32bit

Екзешник можна іще редактором ресурсів, або HEX-редактором підправити. Але краще звичайно перекомпілювати.

5

Re: Обрізання елементів управління Delphi під Windows 7 x32bit

Torbins написав:

Екзешник можна іще редактором ресурсів, або HEX-редактором підправити. Але краще звичайно перекомпілювати.

Шкода...
Але дякую за пораду. :)

I belong to the Dead Generation.