TMenuItem и большие иконки

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: TMenuItem и большие иконки

Сообщение Лекс Айрин » 31.07.2015 15:15:26

kazalex, если тебе не нравится, что без иконок пункт меньше, то можно его распереть пустой (прозрачной) картинкой.

Добавлено спустя 10 минут 34 секунды:
vitaly_l, я бы вообще не стал привязываться к DPI... ибо однажды можно встрять по полной. Да и некрасиво это. Есть в системе стандартный шрифт. Если пользователь его установил, значит он его устраивает. Проще взять его и дать, если уж совсем хочется сделать пользователю приятное, возможность выбрать свой. Хоть "Венский сад". А то ведь, Юзер может и задрать разрешение.

Плюс ко всему этому, человек использует иконки нестандартного размера. Имхо, DPI тут не поможет.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 15:36:51

vitaly_l писал(а):Вы очевидно не знаете что такое DPI и как это влияет на отображаемое на экране?

Перед рассуждением о чьих либо знаниях я бы советовал вопрос перечитать, а если не доходит то и попытаться воспроизвести ситуацию.

Лекс Айрин писал(а):если тебе не нравится, что без иконок пункт меньше, то можно его распереть пустой (прозрачной) картинкой

У меня нет никаких проблем с размерами элементов меню, если ты не понял. А "пустая иконка" не решение т.к. Checked элементы остануться без обозначений.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 15:52:27

Лекс Айрин писал(а):А то ведь, Юзер может и задрать разрешение.

Как раз для этого и подключается поддержка DPI - чтобы если пользователь изменяет настройки windows, то они будут соответствовать и в программе. А если не включать, то получается сбой. Это точно, т.к. у меня стоят нестандартные настройки DPI для windows и правильно стало отображаться только при активации DPI, там нужно включить чекбокс (для Vista+).
kazalex писал(а):Перед рассуждением о чьих либо знаниях я бы советовал вопрос перечитать, а если не доходит то и попытаться воспроизвести ситуацию.

Я не телепат и не понимаю "В чём конкретно вы меня хотите обвинить?".
Если lordgray - больше подойдёт предложенное мной решение,, то в чём проблема?
Я предложил своё решение, а Вы своё. Более того, если моё решение приведёт к нужному результату, (при полном отключении Вашего решения), то предложенное мной решение - намного более корректно, т.к. заложено в самом Лазарусе. То что выложенный вами способ частично решает заданную проблему - не даёт вам право рефлексировать с такой мощной агрессией, кок-будто я у вас 100 рублей отнял. Если Вы специалист наивысочайшего класса, то попробуйте ответить на вот этот простейший вопрос: http://www.freepascal.ru/forum/viewtopic.php?f=5&t=10420


Всем хорошего дня и настроения!



.

Добавлено спустя 26 минут 11 секунд:
Вы между прочим пытаетесь поломать эту систему DPI, которая заложена в Лазарусе, GetVistaPopupMenuMetrics <== это именно для Vista. Там как раз и подключили DPI, т.к. до Vista <== DPI не было.
Затем Вы берёте GetThemePartSize и опять разрушаете систему вместо того чтобы, сделать правильно и подключить DPI.
Это разбор Вашего кода, чтоб и Вы понимали какие стандартные функции Вы поломали Вашим решением, вместо того чтобы, сделать правильно и подключить DPI.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 16:32:01

vitaly_l писал(а):Я предложил своё решение

Это не решение т.к. вне зависимости от статуса поддержки различного DPI (чего LCL, кстати, не поддерживает из коробки) LCL не учитывает размер кастомных иконок и ориентируется только на системный дефолт. И это баг.

vitaly_l писал(а):предложенное мной решение - намного более корректно, т.к. заложено в самом Лазарусе

Ты даже не понял что обозначает эта галка в настройках проекта...

Добавлено спустя 2 минуты 45 секунд:
vitaly_l писал(а):это именно для Vista. Там как раз и подключили DPI, т.к. до Vista <== DPI не было.

Жги дальше. Ламерьё воинствующее.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 16:40:31

Если после включения в настройках лазаруса функции (для Vista+) - иконки станут отображаться правильно, то "Жгущим дальше. Ламерьём воинствующим." - будете Вы. А мне всё равно как Вы меня назовёте, я художник у меня иммунитет к высоко-образованным людям.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение Лекс Айрин » 31.07.2015 16:49:04

kazalex писал(а): А "пустая иконка" не решение т.к. Checked элементы остануться без обозначений.


Не вопрос, на самом деле, для галочки используйте иконку-галочку
vitaly_l писал(а):Там как раз и подключили DPI, т.к. до Vista <== DPI не было.


Надо же... я и в 98 DPI настраивал. Видимо, это была особая версия.
vitaly_l писал(а):А если не включать, то получается сбой.


Да ну... лень сейчас проверять, да и в моей проге нет иконок в меню, но я уверен, что она не разлезется, так как она вообще не привязана к размеру шрифта. Это делалось специально для избавления от необходимости настраивать расположение компонент в разных осях.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 17:00:46

Лекс Айрин писал(а):она вообще не привязана к размеру шрифта.

Оно влияет не только на размер шрифта, но на сами элементы и на всё что, на них <== это 100% проверено. Как оно поведёт себя с иконками в меню, я не знаю, можно только проверить на проекте. Это занимает 1 минуту. Проект есть только у автора этого топика.

DPI - был даже до windows 3.1, ещё в досовских программах. Но в настройки элементов windows его очевидно подключили только в Vista и выше, иначе зачем там упоминание про (ДЛЯ Vista +)??? <== Что хотел сказать программист когда назвал (ДЛЯ Vista +) ???


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 17:01:40

vitaly_l писал(а):Если после включения в настройках лазаруса функции (для Vista+) - иконки станут отображаться правильно

Так ты проверь, советчик...

vitaly_l писал(а):я художник у меня иммунитет к высоко-образованным людям.

Качественно это ничего не меняет, к твоему сожалению.

Лекс Айрин писал(а):Не вопрос, на самом деле, для галочки используйте иконку-галочку

Во-первых, нужно по два стейта на каждый из возможных вариантов индикации (галочка + кружок для групповой * on/off). Во-вторых, добавляется работа по изменеию индекса иконки вместе с переключением стейта (особенно при работе с группой). В третьих, индикаторы могут отличаться от системных, а это не айс. Ну и в четвёртых, непонятно ради чего вообще нужен этот секс, когда можно протолкнуть что-то вроде MeasureItem и закрыть вопрос раз и навсегда.

Добавлено спустя 13 минут 59 секунд:
vitaly_l писал(а):Но в настройки элементов windows его очевидно подключили только в Vista и выше, иначе зачем там упоминание про (ДЛЯ Vista +)??? <== Что хотел сказать программист когда назвал (ДЛЯ Vista +) ???

В висте впервые появился композитный экранный менеджер, благодаря чему появилась возможность ровно скейлить кривой софт (на уровне системы), который самостоятельно не умеет реагировать на различное DPI. LCL самостоятельно скейлиться не умеет (дельфийская VCL умеет), а галочка в проекте это просто указание в манифесте приложения о том, что приложение поддерживает различное DPI и система не должна его скейлить самостоятельно. Сама по себе эта галочка ни коим образом не влияет на корректность поддержки различных DPI.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 17:27:13

kazalex писал(а):MeasureItem

Ну вот уже разумный диалог. Или быть может при иконке 16х16 параметры itemWidth и itemHeight мол якобы, не передаются с MeasureItem->WM_MEASUREITEM->MEASUREITEMSTRUCT ? А постольку поскольку они ОБЯЗАТЕЛЬНО передаются, то я прав. Вы просто нашли своё решение, которое лично я бы никогда не смог найти. А я предлагаю стандартное, которое ВОЗМОЖНО поможет, а проверять мне лень.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 17:32:52

vitaly_l писал(а): А постольку поскольку они ОБЯЗАТЕЛЬНО передаются, то я прав.

OMG. facepalm.jpg
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 17:38:41

kazalex писал(а):приложение поддерживает различное DPI и система не должна его скейлить самостоятельно

Вот ещё разумный диалог. А теперь представьте что она его без галочки - скейлит и ошибается на указанные автором 2 пикселя. <= возможно такое?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 17:47:11

vitaly_l писал(а):А теперь представьте что она его без галочки - скейлит и ошибается на указанные автором 2 пикселя. <= возможно такое?

Во-первых, не два пикселя. Во-вторых, по скриншоту видно, что скейлинга там и близко нет. В третьих, если код читать умеешь и понимаешь механизм работы то поймешь, что это баг LCL.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 18:03:28

kazalex писал(а):Во-вторых, по скриншоту видно, что скейлинга там и близко нет.

Вы что скейлинг на глаз можете определить? Лично я как художник - протестую! Измерения на глаз - имеют громадную погрешность. А вот, если там DPI изменён ВСЕГО ЛИШЬ на несколько единиц, то внешне оно(изменение) ==> практически не заметно, т.к. все элементы имеют "margin" и "padding". Но для иконок - это сказалось. Но я не претендую, я просто говорю <=== это реально и отлично от ноля. Соответственно имеет право на вариант решения поставленной задачи. Но проверить можно только экспериментально. Если это баг LCL, то все в России и Мире <== Вам будут благодарны. А если это DPI, то будет найдено более правильное решение, нежели предложенное Вами. <=== Согласны или опять будете спорить?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: TMenuItem и большие иконки

Сообщение kazalex » 31.07.2015 18:12:02

vitaly_l писал(а):Но проверить можно только экспериментально

Ну так, что тебе мешает? Вместо того чтобы облекать свои домыслы в форму утверждений давно бы уже проверил.
kazalex
постоялец
 
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Re: TMenuItem и большие иконки

Сообщение vitaly_l » 31.07.2015 18:22:01

И что??? Проверяйте ===> Сделаю форму положу на неё меню, вставлю иконки... изменю DPI - получу очень похожий дефект... включу (для Vista+) <=== у меня дефект естественно пропадёт <=== Теперь 100% понятно и доказано, что моё решение верно? Или опять будете спорить???

PS: Но не факт что, моё решение - решит поставленную изначально задачу, а проверить может только автор топика.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru