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.

03 августа 2023

Поддержка QBE в Delphi 12

    В 1970-х годах исследовательский центр компании IBM предложил новый способ создания запросов к базе данных – QBE (Query by Example). Он подразумевает ввод конечным пользователем информационной системы образцов значений полей в виде текстовой строки, которые потом преобразуются в стандартный запрос к базе данных. Это позволяет простому пользователю делать сложные запросы без необходимости изучать специализированный язык запросов (например, SQL), синтаксис которого может быть недоступен ему для понимания. Разработчики Delphi 12 добавили поддержку QBE в FireDAC.