-
Постов
222 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Сообщения, опубликованные Вадим Смоленский
-
-
Платформа Windows, это обозначено в теме, разве не видно? Сам работаю на семерке, если это важно.
Пытался воспроизвести проблему в голом виде, убрав всё лишнее - отчего-то не получилось. Подумал, что проблема может быть известной, поэтому описал словами. Наверное, нужно все-таки постараться воспроизвести.
-
> При смене какого еще режима?
Одного из режимов, предусмотренных мной для вывода этого окна. При разных режимах TWebBrowser имеет разные координаты и размер.
-
Использую TWebBrowser для вывода контекстной справки в специальном окне. При этом размеры TWebBrowser и его расположение на окне могут меняться в зависимости от режима. Наблюдается следующая странность: размеры и координаты TWebBrowser при первом выводе где-то запоминаются, и при смене режима, наряду с исправно отрисованным на новом месте TWebBrowser, на старом месте красуется белый прямоугольник, закрывающий все прочие контролы.
Я уже прочитал в других вопросах форума, что TWebBrowser, будучи нативным компонентом, рисуется поверх других. Это бы ладно. Но когда поверх других рисуется мертвый белый фантом - это уже как-то чересчур. Есть ли способ это явление забороть?
-
Спрошу в порядке оффтопика: почему у вас так причудливо обозначена верхняя граница цикла? Зачем это Pred(TreeView1.Count)? Чем хуже простое TreeView1.Count-1 ?
-
-
> TButton.CanFocus := false;
Ну, это то, что само собой напрашивается. Мне-то хотелось и фокус оставить, и нажатие пробела перехватить. Хотя, может, это и не очень хорошо с точки зрения UX...
-
> New Edit Window
Да, есть такое. К сожалению, позволяет работать во весь экран лишь с одним юнитом, остальные остаются где были. Но уже что-то. Спасибо.
-
Клавиша пробела в Windows по умолчанию работает как акселератор кнопки, на которой фокус. Я в своем проекте использую пробел для других целей, и эту фичу мне нужно подавить. В VCL я перехватывал нажатие пробела в обработчике события TForm.OnKeyDown - устанавливал там флаг, который потом блокировал запуск содержимого TButton.OnClick. В FireMonkey, однако, TButton.OnClick запускается по нажатию пробела, не дожидаясь TForm.OnKeyDown. Как теперь быть?
-
В установках Berlin (Options -> Editor Options -> Display) есть опция "Zoom to full screen". В старых версиях Delphi она прекрасно работала и была удобной - я много лет работал на шестой, привык. Нужно тебе плотно поработать с кодом - ткнул в квадратик, и весь экран твой. Теперь же никакого квадратика в правом верхнем углу не наблюдаю, вижу лишь крестик и галочку. Не туда смотрю? Как развернуть редактор кода на весь экран?
Или, может, эта опция теперь ограничена режимом Classic Undocked?
-
У TBitmap есть метод ReplaceOpaqueColor, заменяющий все непрозрачные цвета на один новый, передаваемый параметром. Не могу до конца понять, как он определяет на изображении прозрачный цвет, который должен остаться прозрачным. У меня на форме хранится большой невидимый TImage с черно-белым битмэпом, из которого я беру отдельные фрагменты посредством DrawBitmap и вывожу их на маленькие TImage. Иногда мне нужно организовать цветовое выделение - то есть, например, заменить черный цвет на синий, а белый оставить белым. В этом случае как раз и помогает ReplaceOpaqueColor(claBlue): почему-то белый цвет в монохромном битмэпе он трактует как прозрачный, не меняя его. Но вот парадокс: если я предварительно заменю в исходном большом битмэпе все белые пиксели на $00000000 (то есть, как я понимаю, nil, полностью прозрачный цвет), то ReplaceOpaqueColor ведет себя противоположным образом: он меняет этот прозрачный на синий, а черный не трогает! Очень бы хотелось понять, отчего так происходит и как с этим можно бороться.
И шире: не ломлюсь ли я в открытую дверь? Может, в FMX есть какие-то более простые и мощные способы динамично преобразовывать цвета на TImage, просто я их не обнаружил?
-
Компонент TScrollBox в VCL имеет свойства VertScrollBar и HorzScrollBar, каждое из которых, в свою очередь, снабжено свойством Increment, определяющим количество пикселей, перемещаемых при нажатии на кнопку прокрутки. В FMX я ничего похожего найти не смог. Есть ли способ поменять принятые по умолчанию установки?
-
Мобильных приложений я пока не делаю и едва ли буду. Только Windows, в ближней перспективе Mac.
А что, лучше формы создавать динамически, по мере надобности, и уничтожать всякий раз, как пользователь их закрывает? Так это ведь, наверное, имеет смысл лишь для тех форм, которые заведомо будут открываться редко и ненадолго - окна настроек и т.п. Такие формы обычно не так уж и прожорливы в плане ресурсов.
-
Да, трудно угнаться за прогрессом тому, кто двадцать лет назад освоил Delphi 2. Но необходимо.
А про грядущую поддержку Линукса Embarcadero уже все уши прожужжало. Что же это будет за поддержка без GUI?
-
> контрол на разных девайсах будет разных размеров
Меня на данном этапе интересуют только Windows и Mac, в перспективе Linux. Полагаю, на всех настольных компьютерах контрол будет одного размера. Ошибаюсь?
-
> Используйте стили.
Это решит обе проблемы?
-
TSpeedButton в старых версиях Delphi можно было снабдить четырьмя иконками (все хранились как одно изображение в свойстве Glyph) для четырех состояний кнопки: 1) неактивна, 2) активна, 3) нажата, но не отпущена, 4) остается нажатой. Я активно пользовался этой функциональностью, но сейчас ее поддержки не вижу. Теперь, судя по всему, всё делается через TImageList. Возникает два вопроса.
1. Как наилучшим образом реализовать описанную функциональность в FMX? Должен ли я расписать всё в коде через смену ImageIndex, или же существуют некие опции, которых я не разглядел? А может быть, появились какие-то новые способы (через эффекты, фильтры и т.д.) визуально подчеркнуть состояние кнопки? Мне всего-то и нужно, что менять цвет одноцветного символа на кнопке (серый, черный, фиолетовый, красный).
2. Растровое изображение, подгруженное из TImageList, автоматически масштабируется по размерам контрола и выглядит слегка размытым. Мне же хотелось бы видеть на кнопке оригинальный битмэп в исходных размерах, с четкими линиями. Есть ли способ отключить масштабирование?
-
А вот, придумался не очень элегантный, но надежный вариант. Процедуру FormShow переименовал в JustBeforeFormShow и вызываю ее не как обработчик события OnShow, а чуть раньше, из обработчика события OnCreate одной из мелких форм, которая создается самой последней. Всё теперь красиво.
Спасибо коллегам за высказанные мысли. Полагаю, именно они меня и натолкнули на верное решение.
-
> а почему не подготовить все что нужно в FormCreate
Теоретически можно, конечно. Но слишком много чего придется перестраивать. Окон создается много, юниты ссылаются друг на друга, логичнее начинать рисование, когда всё создано. Вот и хотел узнать, нет ли какого-то простого решения.
> А показывать сплэш поверх всех элементов до момента полной отрисовки не вариант?
Ну, наверное, один из вариантов. Разве что не очень изящный.
-
Перевожу большой проект из VCL в FMX. В ходе запуска на главном окне много чего рисуется и выравнивается; соответствующий код записан в FormShow. Пока всё не отработало, показывается заставка, splash window. В конце, как и положено, запускается Application.Run, на экране появляется готовая главная форма, а заставка убивается Под VCL всё это выглядело именно так. Под FMX же главная форма выводится на экран в самом начале отрисовки, вместе с заставкой, и пользователь вынужден наблюдать всю отрисовку в режиме реального времени, с мельканиями и дерганиями. Как подавить этот преждевременный вывод?
-
Похоже, изящного решения все-таки нет. Но ничего страшного. Я попробовал рисовать все линии попиксельно - получается и красиво, и быстро. Миллион операций SetPixel между Map и Unmap выполняются без сколько-нибудь ощутимой задержки.
-
Пытаюсь провести на канве TImage тонкую черную линию методом DrawLine. Линия выходит размытая и скорее серая, чем черная. А мне она нужна четкой и черной, шириной ровно в один пиксель. Как этого добиться? Пробовал установить для формы Quality=HighPerformance - никакого эффекта. Да и не надо мне это для всей формы - на других TImage наоборот антиалиасинг понадобится. Нужно его заблокировать для одной-единственной канвы. Но как?
Странности с отрисовкой TWebBrowser
в TWebBrowser
Опубликовано
Application.ProcessMessages пробовал, конечно. Не помогает.
Но вы правы, проблема на моем конце, ибо в облегченном варианте не воспроизводится. Как найду причину, доложу.