- •Delphi Справочник по компонентам. Класс tList
- •Класс tStream
- •Функции работы с файлами
- •Функции преобразования чисел с плавающей точкой
- •Функции работы с датами и временем
- •Элементы управления
- •Положение, размеры и выравнивание элементов управления
- •Активность и видимость элементов управления
- •Внутренний интерфейс Drag&Drop
- •Ярлычки и оперативная подсказка
- •Оконные элементы управления
- •Фокус ввода
- •Графическая подсистема
- •Класс tFont
- •Класс тРеn
- •Класс tBrush
- •Класс tCanvas
- •Класс tGraphic
- •Класс tPicture
- •Класс tMetafile
- •Класс tIcon
- •Класс tBitmap
- •Описание компонентов vcl
- •TPopupMenu.
- •Компонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tRadioGroup
- •Компонент tSpinButton
- •Ввод и редактирование текста
- •Компонент tEdit
- •Компонент тМеmo
- •Компонент tMaskEdit
- •Функции для форматирования текста
- •Оформление приложения
- •Компонент tPaintBox
- •Компонент tBevel
- •Компонент tImage
- •Компонент tHeader
- •Ввод и выбор значений
- •Компонент tListBox
- •Компонент tComboBox
- •Компонент tScrollBar
- •Компонент tSpinEdit
- •Компонент tDrawGrid
- •Многостраничные диалоговые окна
- •Компонент tNotebook
- •Компонент tTabSet
- •Компонент tTabbedNotebook
- •Группирование компонентов
- •Компонент tGroupBox
- •Компонент tPanel
- •Компонент tScrollBox
- •Компоненты — стандартные диалоговые окна Windows
- •Компоненты tOpenDialog и tSaveDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDlalog
- •Компонент tFindDialog
- •Компонент tReplaceDialog
- •Работа с файловой системой
- •Компонент tDriveComboBox
- •TDirectoryListBox
- •Компонент tFileListBox
- •Компонент tFilterComboBox
- •Компонент tDirectoryOutline
- •Работа со средствами мультимедиа
- •Динамический обмен данными (dde)
- •Компонент tdDeServerConv
- •Компонент tdDeServerltem
- •Компонент tddeciIentConv
- •Компонент tddecIientltem
- •Дополнительные компоненты
- •Компонент tGauge
- •Компонент tCalendar
- •Компонент tColorGrld
- •Использование интерфейса ole
- •Компонент toleContainer
- •Форма и ее свойства
- •Управление дочерними элементами
- •Приложение и среда его выполнения
- •Объект Application
- •Объект Clipboard
- •Компонент tScreen
- •Файлы инициализации
- •Печать данных из приложения
- •Компонент tSession
- •Компонент tDatabase
- •Компонент tDataSource
- •Компонент tTable
- •Компонент tQuery
- •Компонент tStoredProc
- •Компонент tReport
- •Компонент tBatchMove
- •Компонент tField
- •Объект tFieldDef
- •Важнейшие типы данных
- •Компоненты отображения данных и управления данными
- •Компонент tdbGrid
- •Компонент tdbNavigator
- •Компонент tdbText
- •Компонент tdbEdit
- •Компонент tdbMemo
- •Компонент tdbImage
- •Компонент tdbListBox
- •Компонент tdbComboBox
- •Компонент tdbCheckBox
- •Компонент tdbRadioGroup
- •Компонент tdbLookupUst
- •Компонент tdbLookupCombo
Компонент tHeader
TObject—>TPersistent—>TComponent—”TControl—”-TWinControl—”
—>TCustoinControl—”THeader
Модуль EXTCTRLS
Страница Палитры компонентов Additional
Этот компонент представляет собой заголовок, например, ддя таблицы, т. е. совокупность расположенных горизонтально полей (секций) с текстом, ширина которых может изменяться.
Заголовок разделен на столько секций (столбцов), сколько строк имеется в свойстве:
(Pb) property Sections: TStrings;
Каждая строка отображается в своей секции. Если свойство:
(Pb) property AllowResize: Boolean;
установлено в True, то ширина каждой секции может быть изменена во время работы при помощи передвижения разделительной линии мышью. При этом значение ширины для секции Х соответствует элементу массива:
(Pb) property SectionWidth[X: Integer]: Integer;
С изменением ширины секции связано два события. При каждом перемещении мыши во время изменения возникает событие:
(Pb) property OnSizing: TSeccionEvent;
TSectionEvent = procedure(Sender: TObject; ASection, AWidth:
Integer) of object;
Оно означает, что произошло изменение ширины секции ASection и ее новая ширина равна AWidth. Об окончании изменения программист извещается при помощи события:
(Pb) property OnSized: TSectionEvent;
Стиль обрамления компонента обусловлен свойством:
(Pb) property BorderStyle: TBorderStyle;
Ввод и выбор значений
Общим доя описанных в этом разделе компонентов является то, что с их помощью можно интерактивно выбрать или установить значения каких-то величин, которые доступны через их свойства и могут в нужный момент быть считаны. Для выбора эти компоненты предоставляют пользователю различные упрощающие приемы, поэтому "чистые" редакторы не рассматриваются в этой группе.
Компонент tListBox
TObject—>TPer si stent—”TComponent—>TControl—>TWinControl—>
—>TCustomListBox—>TListBox
Модуль STDCTRLS
Страница Палитры компонентов Standard
Этот компонент соответствует списку выбора — стандартному элементу управления Windows. С его помощью пользователь может выбрать одну из строк, которые хранятся в свойстве:
(Pb) property Items: TStrings;
В списке Items. Strings хранится текст строк, а список Items.Objects пользователь может использовать для хранения связанных с ними объектов, например, картинок для нестандартно изображаемого списка.
Индекс текущего (сфокусированного) элемента списка содержится в свойстве:
property Itemlndex: Integer;
Не путайте сфокусированный элемент (стандартно он помещается в рамку из точек) и выделенный (цветным фоном), они могут не совпадать. Смысл этих понятий будет объяснен ниже. Значение индекса Itemlndex лежит в диапазоне от 0 до Items.Count-1. Он доступен для чтения и записи.
Индекс первого видимого элемента в списке представлен свойством:
property Toplndex: Integer;
Он будет ненулевым в том случае, когда все элементы не помещаются в окне списка, и была сделана прокрутка.
Список выбора имеет свою канву:
(Ro) property Canvas: TCanvas;
и на его поверхности можно рисовать.
Когда в списке нужно предусмотреть выделение одновременно более одного элемента, оперируйте свойствами:
(Pb) property MultiSelect: Boolean;
(Pb) property ExtendedSelect: Boolean;
Если MultiSelect установлено в False, то в списке одновременно не может быть выделено несколько элементов и значение ExtendedSelect не играет роли. В противном случае дело обстоит так. При ExtendedSelect = False каждый раз изменяется состояние только сфокусированного элемента. Каждый щелчок мышью или нажатие пробела меняет его состояние выделения на противоположное. Если ExtendedSelect = True, то выбор происходит при передвижении мыши с нажатой левой кнопкой, каждом щелчке мышью на новом элементе списка при нажатых <Ctri> или <Shift>, или при нажатии <Shift>+<t/4->.
Количество выделенных элементов можно узнать из свойства:
(Ro) property SelCount: Integer;
Проверку и установку выделения для каждого элемента можно провести, используя свойство:
property Selected[Index: Integer]: Boolean;
При задании ошибочного индекса при доступе к списку возникает исключительная ситуация EList Error.
Чтобы расположить строки в алфавитном порядке, нужно установить в True свойство:
(Pb) property Sorted: Boolean;
Элементы списка могут появляться как в одном столбце — Друг под другом, так и в нескольких соседних. В этом случае список может иметь горизонтальную полосу прокрутки. Число столбцов определяется свойством:
(Pb) property Columns: Integer;
Если столбец один, то значение этого свойства равно 0. Очистить список можно при помощи метода:
procedure Clear;
Стиль обрамления компонента определяется свойством:
(Pb) property BorderStyle: TBorderStyle;
Найти индекс элемента, которьш содержит точку Pos, можно при помощи метода:
function ItemAtPos(Pos: TPoint; Existing: Boolean): Integer;
Параметр Existing определяет, что возвращается в случае неудачи (значение Items.Count либо -1).
Прямоугольник, отведенньш элементу списка с индексом Index, определяется с помощью метода:
function ItemRect(Index: Integer): TRect;
При создании и визуализации списка система обычно подгоняет его высоту таким образом, чтобы в видимое поле помещалось целое число элементов. Это соответствует значению True свойства:
(Pb) property IntegralHeight: Boolean;
Если IntegralHeight равно False, то высота списка не изменяется. Это свойство не играет роли при стиле списка IbOwnerDrawVariable.
Стиль списка может быть стандартным или определенным пользователем через свойство:
(Pi-y property Style;
TListBoxStyle = (IbStandard, IbOwnerDrawFixed,
IbOwnerDrawVariable) ;
Рассмотрим назначение этого свойства более подробно.
В стандартном варианте (IbStandard) в списке отображаются только строки из свойства Items; в двух других случаях рисуемые пользователем списки могут иметь фиксированную (IbOwnerDrawFixed) или переменную (IbOwnerDrawVariable) высоту элемента. В первом случае нужно задать свойство:
(Pb) property ItemHeight: Integer;
Для стиля IbOwnerDrawVariable высота каждого элемента определяется программистом, которьш должен предусмотреть обработку события:
(Pb) property OnMeasureItem: TMeasureItemEvent;
TMeasureItemEvent = procedure(ListBox: TListBox; Index:
Integer; var Height: Integer) of object;
Имея указатель на список, индекс измеряемого элемента и начальную высоту, необходимо переустановить Height так, чтобы в элементе поместилось все, что нужно в нем нарисовать.
Для рисования каждого элемента инициируется событие:
(Pb) property OnDrawItem: TDrawItemEvent;
TDrawItemEVent = procedure(ListBox: TListBox; Index: Integer;
Rect: TRect; State: TOwnerDrawState) of object;
Обработчик этого события получает указатель на список ListBox, индекс элемента Index, отведенньш для рисования прямоугольник Rect, и состояние элемента в параметре State:
TOwnerDrawState = set of (odSelected, odGrayed, odDisabled,
odChecked, odFocused) ;
Для списка выбора из этого множества действительны только флаги odSelected, odDisabled, odFocused.