30 августа 2023

Delphi 12. Отображение элементов TListView в виде плиток

    TListView в Delphi всегда поддерживал четыре режима отображения своих элементов:
  • vslcon – полноразмерные иконки с заголовком под ними;
  • vsSmalllcon – маленькие иконки с заголовком справа от них;
  • vsList – список маленьких иконок с заголовком справа от них;
  • vsReport – таблица, в которой крайний левый столбец содержит маленькие иконки с заголовком, а остальные столбцы содержат подэлементы.
В Delphi 12 список этих режимов дополнился новым режимом "в виде плитки" (Tile View), который доступен в базовом контроле операционной системы.

24 августа 2023

Улучшенный диалог поиска в файлах в Delphi 12

    Диалог "Find in Files" в RAD Studio 12 получил новый параметр "Subdirectory exclude mask". Этот параметр позволяет при поиске по содержимому файлов в каталогах ("Search in directories") с вложенными подкаталогами ("Include subdirectories") исключить из поиска определенные каталоги. По умолчанию исключаются каталоги "__history" и "__recovery", а для разработчиков на C++ Builder еще и "__astcache".

21 августа 2023

Новый менеджер платформ Delphi 12

    Менеджер платформ – это часть инсталлятора RAD Studio, которая потом доступна в IDE через меню "Tools > Manage Platforms". Он позволяет выбирать пользователю необходимые для работы языки программирования, поддерживаемые операционные системы и связанные с ними элементы. К сожалению, предыдущая реализация менеджера платформ была не удобна для использования, имела ряд проблем и даже ошибок. В Delphi 12 был полностью переработан его пользовательский интерфейс и поведение при установке платформ и других элементов.

18 августа 2023

В Delphi 12 для всех платформ отключили исключения в операциях с плавающей точкой

    Начиная с Delphi 1 RTL использовала исключения в операциях с плавающей точкой. Но в последние годы современные операционные системы, такие как Windows, macOS и Linux, и их официальные средства разработки, перестали использовать модель "floating-point exception" ("FP Exception"). То, что API-интерфейсы ОС предполагают отсутствие исключений, а Delphi RTL их использует, может привести к крашу приложения. Для решения этой проблемы разработчики Delphi ранее уже отключили исключения в операциях с плавающей точкой на платформах отличных от Windows и, чтобы избежать проблем при рендеринге изображений, в FMX под Windows. В Delphi 12 это сделали для всех платформ (Windows, macOS, iOS, Android и Linux).

16 августа 2023

Новый режим двойной буферизации VCL-контролов в Delphi 12

    Иногда у приложений написанных на Delphi проявляется одна маленькая, но неприятная проблема – при перерисовке VCL-контрола он "мерцает". Для ее решения разработчики Delphi добавили наследникам TWinControl свойство DoubleBuffered (тип boolean). Если DoubleBuffered имеет значение false, то контрол рисует себя непосредственно в окне. Если DoubleBuffered имеет значение true, то контрол рисует себя сначала на bitmap в памяти, а затем bitmap рисуется на окне. Двойная буферизация уменьшает мерцание, но требует больше памяти. Кроме повышенного расхода памяти есть и более существенные проблемы. Например, зависание VCL-приложений при работе через удаленные рабочий стол (RDP). Этой проблемой страдала даже сама IDE RAD Studio. Любое изменение сеанса RDP (блокировка, разблокировка, подключение, отключение) вызывает изменение общесистемных настроек (WM_SETTINGCHANGE), которое приводит к каскаду сообщений и множеству перерисовок IDE. Устранили это только в RAD Studio 10.4.2. В Delphi 12 механизм двойной буферизации VCL-контролов был доработан.

10 августа 2023

Улучшения для диспетчера окон рабочего стола Windows 11 в Delphi 12

    Диспетчер окон рабочего стола (Desktop Window Manager, DWM) – система графического интерфейса рабочего стола Windows, которая использует аппаратное ускорение для отрисовки графического интерфейса пользователя. Разработчики Delphi добавили в Delphi 12 поддержку некоторых ее функций специфических для Windows 11.

08 августа 2023