Дизайнер и его тулбары
Здравствуйте.
У меня "откровенно", я бы даже сказал "очень откровенно", "глючат" toolbar-ы в дизайнере. Понимаю, что если бы это было у всех, то, наверное это было бы у всех "на слуху", но поиском по сайту ничего не нашел (плохо искал?).
Итак, Delphi6, Fast (целиком) компилируется в dll. При почти любом перетаскивании тулбара, последний пропадает с экрана. При XP-манифесте не работают переключающие кнопки (Bold, Italic, Align и т.д.) Как бы проблемы уж очень очевидны, с чем это может быть связано?
У меня "откровенно", я бы даже сказал "очень откровенно", "глючат" toolbar-ы в дизайнере. Понимаю, что если бы это было у всех, то, наверное это было бы у всех "на слуху", но поиском по сайту ничего не нашел (плохо искал?).
Итак, Delphi6, Fast (целиком) компилируется в dll. При почти любом перетаскивании тулбара, последний пропадает с экрана. При XP-манифесте не работают переключающие кнопки (Bold, Italic, Align и т.д.) Как бы проблемы уж очень очевидны, с чем это может быть связано?
Комментарии
----
Как бы баги весьма критичные. Хотелось бы быстрого их исправления.
В D7 для "обхода" этого глюка есть компонент XPManifest если его бросить на форму, то все работает(Main demo не содержит этого компонента).
От члена Frteam хотелось бы услышать более конструктивные ответы.
Я знаю, что в D7 есть компонент XPManifest, все, что он делает это добавляет дополнительный ресурс "24" содержащий версию поддерживаемого данным приложением "Microsoft.Windows.Common-Controls". В Delphi6 я это делаю "руками". Вот вся разница, точнее никакой разницы.
Мне бы хотелось услышать ответы на следующие вопросы:
- Скомпилируйте MainDemo в D7. Запустите. Зайдите в дизайнер и попробуйте поперемещать тулбары. Все ли у Вас будет нормально?
- Скомпилируйте MainDemo в D7 с XPManifest. Запустите в WindowsXP. Зайдите в дизайнер и попробуйте нажимать кнопки Bold, Italic и т.д. Кнопки работают?
Жду Ваших ответов.
Проверил тулбары работают(перемещал, пробовал кнопки).
Если неужно могу выслать скомпилированое демо.
По тулбарам не согласен. Прикладываю скриншот. Демо версия, скаченная с сайта, Под Win2000. Демонстрирует пропадание.
Итак, ситуация начинает проясняться. Первое, по кнопкам. Это действительно неполная совместимость ComCtrls.pas от Delphi6 c Microsoft Common Controls версии 6 и выше. Исправляется достаточно легко, поэтому хорошо бы занести это в faq.
1. Скопировать ComCtrls.pas в директорию проекта.
2. В начале секции implementation добавить:
const
ComCtlVersionIE6 = $00060000;
var
IsOnCheckDownNeed: Boolean;
3. В initialization добавить
IsOnCheckDownNeed := GetComCtlVersion >= ComCtlVersionIE6;
4. В TToolButton.MouseDown добавить выделенное жирным:
if ((Style = tbsDropDown) or ((Style = tbsCheck) and IsOnCheckDownNeed)) and (Button = mbLeft) and Enabled then
5. Пересобрать проект.
---
Второе, это "меню "покрывается пятнами"". То есть, отрисовка корневых элементов меню происходит то clMenu, то clBtnFace. Этот эффект проявляется похоже только на XP SP1. На XP SP2 и Win2003 не замечено. Похоже это ошибка самих Wind-ов.
---
И третье, на сегодня уже самое актуальное - перетаскивание тулбаров. Это похоже уже действительно баг Fast-а. Я нашел машины на которых все хорошо и гладко - это машины со стандартным системным шрифтом в 96 dpi и стандартным разрешением в 1024x768.
У меня на рабочей машине 1280x1024 - шрифт 120 dpi, на ноутбуке 1280x800 - 120 dpi, у соседа - 115 dpi (user settings). На всех этих машинах сплошные ошибки в вычислении координат тулбаров.
Кстати говоря, даже визуальный анализ наталкивает на мысли о некоторых проблемах. Кнопка на тулбаре располагается не посередине высоты тулбара. Странным кажется, что высота тулбара "Text" на 1-2 пикселя больше чем тулбара "Standart" и т.д.
Поэтому, хорошо бы разобраться с этим безобразием
Разобрался с тулбарами. Это действительно БАГ Fast-а.
Для корректной работы тулбаров необходимо выполнение двух условий:
1. Высота или ширина (для вертикальных) всех тулбаров класса TfrxToolBar должна быть одинакова.
2. Значение RowSize у TfrxDock-компонентов должно быть равным высоте (или ширине) тулбаров-TfrxToolBar.
При стандартных значениях разрешения и dpi-шрифтов, все так и есть.
При отклонении от стандартных значений начинаются проблемы. Например, у меня на 1280x1024 120-dpi, высоты тулбаров 35-36 (почему разные ?), RowSize же равен 27 (???).
Пожалуйста, обратите внимание на эту проблему.