Среди новых функций в следующем выпуске Delphi, C ++ Builder и RAD Studio 10.4.2 Embarcadero будет включать два совершенно новых элемента управления VCL, виртуализированный элемент управления списком и числовое поле ввода.
Предупреждение: это сообщение в блоге касается неизданного продукта, который может быть изменен до GA.
Релиз RAD Studio 10.4.2 приближается, и вы можете присоединиться к нашему предварительному веб-семинару завтра, см. Https://blogs.embarcadero.com/whats-coming-in-10-4-2-sydney/ . Это некоторая предварительная информация (или ведение бета-блога) в одной конкретной области, новые элементы управления VCL.
Table of Contents
Новый элемент управления VCL TControlList
Embarcadero представляет в библиотеке VCL новый гибкий и виртуализированный элемент управления списком. Идея этого элемента управления состоит в том, чтобы предложить новый современный элемент управления VCL, предлагающий настраиваемую конфигурацию пользовательского интерфейса и элемент управления высокой производительности, который можно использовать с очень длинными списками. Этот список представляет собой единый список выбора, и все элементы визуально имеют одинаковую высоту и ширину.
Новый элемент управления позволяет разработчику определять содержимое, создавая один из элементов списка с использованием графических элементов управления (то есть потомков TGraphicControl) и предоставлять данные элементу управления для отображения отдельных элементов, не создавая все элементы управления для всех элементы в списке, но только те, которые необходимы для отображения данных. Будучи полностью виртуальным, список может обрабатывать тысячи и даже миллионы элементов, предлагая чрезвычайно быструю прокрутку. Помимо вычисления и отображения только тех элементов, которые умещаются на экране, список кэширует содержимое элементов, используя точечные рисунки в памяти.
Новый элемент управления напоминает классический элемент управления TDBCtrlGrid — есть панель для элементов управления, вы помещаете на нее элементы управления и создаете виртуальные элементы во время выполнения. В отличие от DBCtrlGrid мы можем поместить на него только TGraphicControl, и все элементы являются виртуальными. Ниже вы можете увидеть элемент управления во время разработки (с поверхностью одного элемента, доступной для редактирования) и во время выполнения (с одним и тем же содержанием, умноженным во много раз).
В этот список не входит набор элементов с конкретной информацией. Данные могут быть предоставлены либо через живые привязки (включая привязку к набору данных или коллекции объектов), либо через событие для запроса данных отдельного элемента (так что прямое хранение и сопоставление будут полностью зависеть от разработчика) . Для каждого элемента для отображения элемент управления вызывает обработчик событий, который можно использовать для настройки внешнего вида каждого элемента, в данном случае просто изменяя заголовок метки:
1 2 3 4 5 |
procedure TForm2.ControlList1BeforeDrawItem(AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); begin Label1.Caption := 'Label' + AIndex.ToString; end; |
С предыдущим дизайном, 10000 элементов и нескольких столбцов этот тривиальный код дает результат, как показано ниже:
Во время разработки есть специальный диалог с набором предустановленных конфигураций, которые включают настройку свойств TControlList и коллекции элементов управления с определенными свойствами. Вы используете стрелки вверху, чтобы выбрать конфигурацию ядра, и вы можете точно настроить ее с помощью некоторых других опций флажка внизу. Мастер отменяет настройку списка управления.
Создаваемый вами элемент реплицируется (виртуально) для каждого из элементов, запрошенных с помощью свойства ItemCount. На видимой поверхности элемента управления обычно можно разместить несколько элементов одинаковой ширины и высоты. У элемента управления есть 3 разных макета:
- Single для отдельных столбцов элементов, и в этом случае ширина элемента будет соответствовать ширине элемента управления.
- Функция Multi Top To Bottom позволяет использовать несколько столбцов и будет использовать доступное вертикальное пространство перед переходом к следующему столбцу, предлагая вертикальную прокрутку.
- Multi Left To Right также позволяет использовать несколько столбцов, но использует другой макет и режим горизонтальной прокрутки (см. Изображение ниже).
В общих чертах вы можете использовать событие OnClick для любого элемента управления в списке элементов управления. Элемент управления поддерживает параметры High-DPI и стили VCL, а также полностью поддерживает Live Bindings.
Новый компонент TControlListButton
Мы не можем использовать TSpeedButton непосредственно на панели, потому что элемент управления не обрабатывает специальные взаимодействия, такие как изменение состояния кнопки. Для элементов управления, которые могут иметь разные состояния, мы добавили специальный класс TControlListControl (унаследованный от TGraphicControl). Вы можете создавать новые элементы управления, которые наследуются от класса TControlListControl и могут использовать события мыши для своих элементов. Это подход, используемый TControlListButton — аналогом TSpeedButton, который можно использовать с TControlList. У этой кнопки есть 3 стиля — кнопка, кнопка инструмента и ссылка.
Новый элемент управления VCL TNumberBox
Новый элемент управления VCL TNumberBox — это современный элемент управления числовым вводом, смоделированный по образцу элемента управления WinUI NumberBox платформы Windows. Элемент управления поддерживает ввод целых чисел, чисел с плавающей запятой с заданным набором десятичных цифр и правильного форматирования, а также значений валют:
Пользователь может увеличивать или уменьшать значение с помощью кнопок со стрелками или разрешающих клавиш или колеса мыши, а также увеличивать и уменьшать на большое значение с помощью клавиш Page Up и Page Down. Компонент включает дополнительную кнопку прокрутки (настроенную с помощью свойства SpinButtonOptions Placement), которая может быть компактной, встроенной или отключенной, как показано здесь соответственно:
Компонент также поддерживает простую оценку выражений; если этот параметр включен, пользователь может ввести выражение типа 40 + 2, и элемент управления заменит его результатом. Элемент управления поддерживает встроенные вычисления основных уравнений, таких как умножение, деление, сложение и вычитание (с возможностью использования круглых скобок). Обратите внимание, что вы можете использовать символы + и — как двоичные, так и унарные операции, поэтому вы можете ввести -23 или + 23, вы можете написать 55 + 23 и 55-23 и даже объединить их, как в 53 ++ 23 или 53 –23, что оценивается как 53 — (-23). таким образом складывает два значения.
Будьте на связи
На этом пока все. Настройтесь на завтрашний предварительный веб-семинар и (после его выпуска) загрузите пробную версию, чтобы поэкспериментировать с этими новыми элементами управления VCL.
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition