Дизайнер и его тулбары

отредактировано 16:14 Раздел: FastReport 3.0
Здравствуйте.

У меня "откровенно", я бы даже сказал "очень откровенно", "глючат" toolbar-ы в дизайнере. Понимаю, что если бы это было у всех, то, наверное это было бы у всех "на слуху", но поиском по сайту ничего не нашел (плохо искал?).

Итак, Delphi6, Fast (целиком) компилируется в dll. При почти любом перетаскивании тулбара, последний пропадает с экрана. При XP-манифесте не работают переключающие кнопки (Bold, Italic, Align и т.д.) Как бы проблемы уж очень очевидны, с чем это может быть связано?

Комментарии

  • отредактировано 16:14
    Похоже, все-таки, что это баги. Скачал скомпилированное demo. Все тоже самое, то есть, "оторванный" тулбар вернуть на место нет никакой возможности, помогает только правка реестра или ini-файла. Под XP тулбар с меню "покрывается пятнами". Demo скомпилировано без манифеста, поэтому проверить нерабочесть пееключающих кнопок нельзя, но думаю, что тоже самое - при наличии манифеста под XP не переключают.

    ----

    Как бы баги весьма критичные. Хотелось бы быстрого их исправления. ;)
  • отредактировано 16:14
    Глюк с кнопками тулбара можно повторить на простом примере и без FR.
    В D7 для "обхода" этого глюка есть компонент XPManifest если его бросить на форму, то все работает(Main demo не содержит этого компонента).
  • отредактировано 16:14
    Здравствуйте, Den.

    От члена Frteam хотелось бы услышать более конструктивные ответы.

    Я знаю, что в D7 есть компонент XPManifest, все, что он делает это добавляет дополнительный ресурс "24" содержащий версию поддерживаемого данным приложением "Microsoft.Windows.Common-Controls". В Delphi6 я это делаю "руками". Вот вся разница, точнее никакой разницы.

    Мне бы хотелось услышать ответы на следующие вопросы:

    - Скомпилируйте MainDemo в D7. Запустите. Зайдите в дизайнер и попробуйте поперемещать тулбары. Все ли у Вас будет нормально?

    - Скомпилируйте MainDemo в D7 с XPManifest. Запустите в WindowsXP. Зайдите в дизайнер и попробуйте нажимать кнопки Bold, Italic и т.д. Кнопки работают?

    Жду Ваших ответов.
  • отредактировано 16:14
    Скомпилировал в D7 main demo (без XPManifest ), создал FRDemo.exe.manifest.
    Проверил тулбары работают(перемещал, пробовал кнопки).
    Если неужно могу выслать скомпилированое демо.
  • отредактировано 16:14
    Вот маленький пример не имеющий отношения к FR, если скомпилировать под d6 - работать не будет(с включенными XP темами), а если под D7 то работает.
  • отредактировано 16:14
    Гм.... По кнопкам согласен, хотя это что, обозначает что в Delphi6 с Fast-ом - у меня дело труба? ;)

    По тулбарам не согласен. Прикладываю скриншот. Демо версия, скаченная с сайта, Под Win2000. Демонстрирует пропадание.
  • отредактировано 16:14
    Здравствуйте.

    Итак, ситуация начинает проясняться. Первое, по кнопкам. Это действительно неполная совместимость 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" и т.д.

    Поэтому, хорошо бы разобраться с этим безобразием ;)







  • отредактировано 16:14
    Здравствуйте!

    Разобрался с тулбарами. Это действительно БАГ Fast-а.

    Для корректной работы тулбаров необходимо выполнение двух условий:

    1. Высота или ширина (для вертикальных) всех тулбаров класса TfrxToolBar должна быть одинакова.
    2. Значение RowSize у TfrxDock-компонентов должно быть равным высоте (или ширине) тулбаров-TfrxToolBar.

    При стандартных значениях разрешения и dpi-шрифтов, все так и есть.

    При отклонении от стандартных значений начинаются проблемы. Например, у меня на 1280x1024 120-dpi, высоты тулбаров 35-36 (почему разные ?), RowSize же равен 27 (???).

    Пожалуйста, обратите внимание на эту проблему.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.