


12.09.2021 (версия 1.7)
13.03.2021 (версия 1.6)
01.02.2021 (версия 1.5)
18.12.2020 (версия 1.4)
31.10.2020 (версия 1.3)
27.10.2020 (версия 1.2)
26.10.2020 (версия 1.1)
05/03/2020
02/11/2019
08/08/2019
07/07/2019
Когда вы используете ListBox и обычно при назначении объектов для элементов ListBox вы хотите отображать/рисовать столбцы в ListBox, используя событие OnDraWitem.
Это нормально, но у вас нет управления заголовком, чтобы показать столбцы, и ни один из них не позволяет пользователю изменять размер, перемещать и показывать/скрыть столбцы.
Theadercontrol (Delphi Default Control) позволяет некоторые из этих операций, но вам нужно написать много кода для каждого отдельного списка, заботясь о перекраске элементов и расчете позиций столбцов. И, конечно же, у вас нет доступной функции столбца/шоу.
Итак, я работал над этим компонентом, и я решил поделиться им, потому что это очень полезно.
Кроме того, Dzlistheader отображает полосу прокрутки, когда столбцы негативно используют видимую область. ?
Поддерживает Delphi XE3..Delphi 11
Отбросьте Dzlistheader в форме, затем бросьте Listbox в Dzlistheader.
Установите dzlistheader.listbox = listbox.
Создайте желаемые столбцы в свойство dzlistheader.columns (вы должны увидеть столбцы во время дизайна).
Затем напишите Ondrawitem of dzlistheader (не ondrawitem of listbox - оставьте это незнашиваемым). Вызовите метод dzlistheader.dwcol, чтобы легко нарисовать каждый столбец.
Пожалуйста, смотрите пример папки, чтобы узнать основные функции.
Вы должны написать Ondrawitem of Dzlistheader (не Listbox), следуя этой идее:
procedure TForm1.DzListHeaderDrawItem (Control: TWinControl; Index: Integer; Rect: TRect;
State: TOwnerDrawState);
var P: TPerson;
begin
P := TPerson(ListBox.Items.Objects[Index]);
DzListHeader.DwCol( 0 , Rect, P.ID);
DzListHeader.DwCol( 1 , Rect, P. Name );
DzListHeader.DwCol( 2 , Rect, P.Gender);
end ;Просто так!
Этот компонент предлагает второй вариант использования, поэтому вам не нужно использовать объекты, и вам не нужно писать код для рисования элементов. В этой опции вы должны добавить элементы с помощью текстовых ячеек, разделенных символом TAB.
Давайте предположим, что у вас есть следующая таблица:
| ИДЕНТИФИКАТОР | Имя | Телефон |
|---|---|---|
| 1 | Jhon | 1111-2222 |
| 2 | САРА | 3333-4444 |
| 3 | АЛЬФРЕД | 5555-6666 |
Таким образом, вы просто включите свойство AutoDrawTabbedText и добавляете элементы в ListBox, имеющие ячейки, разделенные символом TAB, например:
1[TAB]JHON[TAB]1111-2222
2[TAB]SARAH[TAB]3333-4444
3[TAB]ALFRED[TAB]5555-6666
Примечание: [Tab] представляет символ № 9
Затем просто настройте желаемые столбцы. В этом примере будут столбцы: ID, имя, телефон. Без какой -либо строки кода это печатает все элементы в списке и выровнены по параметрам столбцов.
Если вы хотите добавить элементы во время выполнения, вы можете использовать функцию AddItem, указав массив строк, который будет преобразован в разделенном вкладках.
Вам может потребоваться использовать OnDrawItem с текстом вкладка для настройки рисунка ячеек. В этом случае вы должны оставить AutoDrawTabbedText отключен и написать событие OnDrawItem, а затем использовать getIteMarray для извлечения массива текущего элемента, имея ячейки, разделенные для рисования с использованием метода DWCOL.
Чтобы открыть диалоговое окно «Настройка», щелкните правой кнопкой мыши в любой части заголовка или столбцов. В диалоговом окне «Настройка» вы можете переупорядочить столбцы, показать/скрыть столбцы и установить порядок по умолчанию.
AllowMoving: Boolean = Enable/Disable Columns Repositionsing
AllowResize: Boolean = Enable/Disable Columns Moving (если false, column.fize не имеет значения)
AutoDrawTabbedText: Boolean = При использовании AutoDrawTabbedText вам не нужно использовать объекты или onDrawItem. Вы можете добавить элементы в Listbox с DeLimiter Tab для разделения столбцов. В этом случае вам не нужно кодировать для рисования элементов. Существует два метода, доступные для использования с текстом вкладок: Additem (добавьте массив элементов, поэтому компонент автоматически преобразуется в тексту вкладка); GetarrayText (возвращает массив запрошенного индекса). Вы по -прежнему можете оставить это свойство отключенным и работать с текстом вкладка, написания события Ondrawitem и использования GetArrayText для чтения текста разделенных столбцов.
ColorNormalCol: TColor = цвет колонки
ColorHoverCol: TColor = Цвет фона столбца, когда мышь над столбцом
ColorLineNormal: TColor = Line Found Found Color (в Listbox), когда не Odd Line (или UseoDD отключил), и не выбранная линия
ColorLineOdd: TColor = линейный цвет фона.
ColorLineSel: TColor = линейный цвет фона при выборе линии
ColorShape: TColor = цвет приборной панели, который указывает на перемещение или изменение размера ориентации
Columns: TDzListHeaderColumns = collection Columns
HeaderHeight: Integer = фиксированная высота заголовка (вы можете ввести несколько линий в заголовке столбца, если хотите)
LineCenter: Boolean = указывает на функцию DWCOL рисует текст централизованный вертикально в соответствии с высотой линии
LineTop: Integer = указывает на положение y текста в DWCOL, когда LineCenter является ложным
ListBox: TCustomListBox = Listbox Object (обязательно!)
TextMargin: Integer = пространство в пикселях слева и справа от столбца (используется так, чтобы текст в одном столбце не придерживался текста в другом столбце)
TitleFont: TFont = заголовок шрифт для подписей столбцов
UseOdd: Boolean = Используйте конкретный цветовой фон для нечетных линий (см. Свойство ColorLineODD)
Alignment: TAlignment = указывает на выравнивание текста, используемого на функции DWCOL
Caption: String = текст заголовка заголовка столбца
CaptionEx: String = эта заголовок необязательно, используется, если вы хотите указать полную подпись для отображения в диалоговом окне «Настройка» (например: «Подпись:« ID », Captionex:« ID OF Person »)
Customizable: Boolean = Разрешить настраиваемое столбец в диалоговом окне «Настройка
CustomTextFont: Boolean = определяет сохранение для свойства TextFont (автоматически устанавливается при изменении TextFont)
Hint: String = Column Подсказка
MaxWidth: Integer = столбец максимальной пропускной способности при изменении размера
MinWidth: Integer = Column MinWidth при изменении размера
Name: String = Имя столбца, чтобы найти столбец (функция ColbyName) и для настройки Save/Load (SaveCustom/LoadCustom функции). Настройка требует имени столбца, потому что вы можете изменить свой проект, и в этом случае столбцы будут храниться в правильном порядке на основе имен столбцов.
Sizeable: Boolean = разрешить изменение размера столбца
TextFont: TFont = FONT, используемый Canvas, чтобы нарисовать текст элемента для этого столбца (если не изменяется, Canvas использует шрифт ListBox для рисования элементов)
Visible: Boolean = Show/Hide Column
Width: Integer = ширина столбца
Data: Pointer = указатель на бесплатное использование (не опубликованное свойство)
procedure LoadCustom ( const A: String);Загружает настройку столбца из строки, включая положение, размер и видимость. Вы можете загрузить из файла реестра/INI.
function SaveCustom : String;Сохраните настройку столбцов для строки, включая положение, размер и видимость. Вы можете сохранить в реестре/INI -файл.
function ColByID (ID: Integer): TDzListHeaderCol;Возвращает tdzliStheadercol по идентификатору столбца. Идентификатор остается фиксированным при перемещении столбцов (положение столбца определяется свойством индекса).
function ColByName ( const aName: String): TDzListHeaderCol;Возвращает tdzliStheadercol по названию столбца.
procedure DwCol (ID: Integer; Rect: TRect; const Value : Variant; Margin: Integer = 0 );Используется в OnDrawItem, чтобы нарисовать текст элемента столбца. Идентификатор представляет номер столбца с учетом порядка в сборе. Таким образом, даже когда столбцы перемещаются во время выполнения, идентификатор всегда остается неизменным. Это основная идентификация столбца. Значение представляет текст, который будет напечатан. Обратите внимание, что значение является типом варианта, поэтому вам не нужно конвертировать в строку, если вы, конечно, не хотите форматировать значение. Вы можете указать маржу в левой стороне столбца, чтобы нарисовать значок или другой пользовательский рисунок (см. Пример источник).
function AddItem ( const Ar: TArray<String>): Integer;Эта функция помогает добавить элемент в Listbox, автоматически разделяя строки массива с помощью символа вкладки. Вы должны использовать эту функцию только тогда, когда вы храните данные в Listbox, используя метод разделителя вкладок. Обычно вы захотите использовать это вместе со свойством AutoDrawTabbedText, поэтому вам не нужно писать OnDrawItem.
function GetItemArray (Index: Integer): TArray<String>; Возвращает массив строк относительно индекса в Listbox, учитывая, что текст элемента имеет данные, разделенные символом вкладки. Вы можете быстро прочитать ячейку, используя GetItemArray(Index)[Column] .
function GetLeft : Integer;Возвращает левое положение столбца в соответствии с прямыми границами.
function GetRight : Integer;Возвращает правильное положение столбца в соответствии с прямоугольными границами.
procedure OnColumnClick (Sender: TObject; Col: TDzListHeaderCol);Происходит, когда щелкнут левой кнопкой на столб.
procedure OnColumnDraw (Sender: TObject; Col: TDzListHeaderCol; Canvas: TCanvas; Rect: TRect; Hover: Boolean);Если вы установите это событие, вы можете поймать время на рисунке заголовка столбца, что позволит вам изменить холст или добавить немного в току нарисованного столбца. Когда событие запускается, колонка уже окрашена, но не окрашена в экран, потому что используется внутренняя растровая карта. Таким образом, это событие позволяет вам изменить этот растровый холст. Когда событие заканчивается, растровое изображение окрашивается на экран. Параметр Hover указывает, что мышь находится над столбцом в данный момент.
procedure OnColumnRClick (Sender: TObject; Col: TDzListHeaderCol);Происходит, когда щелкнут правой кнопкой мыши на столбце.
procedure OnColumnResize (Sender: TObject; Col: TDzListHeaderCol);Происходит после того, как колонка была изменена.
procedure OnDrawItem (Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);Вам следует использовать это событие для написания всех столбцов, используя метод DWCOL (см. Пример источника).
Это событие не будет стрелять, если вы используете AutoDrawTabbedText = true
procedure MouseEnterCol (Sender: TObject; Col: TDzListHeaderCol);Происходит, когда мышь входит в область столбца.
procedure MouseLeaveCol (Sender: TObject; Col: TDzListHeaderCol);Происходит, когда мышь оставляет площадь колонны.