Назад Оглавление Дальше Беседа о компонентах для ввода-вывода текста и о свойствах, общих для многих компонентов


Как пользоваться встроенной справкой Делфи

Во встроенной справке Делфи содержится достаточно полная информация. К сожалению, на английском. Аналогичная русская справка распространяется (платно, около 300р) известным автором учебников А.Я. Архангельским: ( см на сайте )

При помощи встроенной справки Делфи легко найти список свойств какого-либо объекта. Даже для незнающих английский эта справка полезна, в ней можно (хотя и не всегда) найти примеры, иллюстрирующие применение того или иного свойства или метода. Есть несколько способов добраться до справки (на примере компонента Label):

  1. Если на форме есть компонент Label, то в окне редактора можно найти его описание: Label1: TLabel; если его нет - можно написать (где-нибудь): { TLabel } Поставим ТЕКСТОВЫЙ курсор на TLabel и нажмем F1. Появится окошко, в котором нужно выбрать TLabel (VCL Reference). Появится справочное окно для TLabel.
  2. 2-й способ. Пусть мы видим в окне инспектора объектов свойства Label1. Чтобы получить справку о свойстве Cursor (например), выделите строку Cursor и нажмите F1. Появится окно, в котором нужно выбрать (VCL Reference). Появится окно справки для свойства Cursor. Кстати, здесь есть пример. Чтобы его увидеть, щелкните ссылку "Delphi example". В примере описано, как добавить к проекту самодельный курсор. Для перевода можно применить, например, TranslateIt.
  3. 3-й способ. На панели компонентов (с которой перетаскиваем) выделить компонент и нажать F1. Далее - аналогично.
Все, что изложено ниже, получено из справочной системы.

Компонент Label (класс TLabel)

Показывает текст, присвоенный свойству Caption, но не позволяет его редактировать. Можно организовать многострочный показ, если присвоить св-ву WordWrap значение true (это можно сделать в инспекторе объектов), а св-ву AutoSize - false. Большинство свойств (как и у других компонентов) программист оставляет без внимания, надеясь что им присвоены подходящие значения по умолчанию. Чаще всего используется только Caption. Св-ву FocusControl можно присвоить объект, способный получать фокус ввода (например, класса TEdit или TMemo, TListBox ) и пользоваться горячими клавишами для передачи фокуса этим объектам. Например, разместим около окошка Edit2 надпись Label1, заполним Label1.Caption текстом: Ф&амилия а свойство Label1.FocusControl = Edit2 (выбор из списка в инспекторе). При работе откомпилированной программы буква a в слове Фамилия будет подчеркнутой, а если нажать Alt а, то курсор ввода перейдет на Edit2 и можно будет вводить фамилию.

Рассмотрим на примере Label те св-ва и обрабатываемые события, которые есть у многих компонентов.

Свойства (Properties)

property Caption: TCaption
А что такое TCaption ?
type TCaption = type string; - т е это просто строка (содержит текст - цепочку символов).

property Alignment: TAlignment; узнаем, что такое TAlignment:
type TAlignment = (taLeftJustify, taRightJustify, taCenter);
т е это перечисляемый тип, знакомый по Паскалю. Возможные значения перечилены в скобках и означают: левое, правое, центральное. Т е текст внутри прямоугольного окна Label можно прижать влево, вправо или центрировать.

property AutoSize: Boolean; если = True, размеры окна Label автоматически подстраиваются под длину текста. (Так установлено по умолчанию).

property FocusControl: TWinControl; - описано выше в тексте
property Transparent: Boolean; - если = True, фон окна Label прозрачный.

property WordWrap: Boolean; - если = true, то слова, выходящие за правую границу окна автоматически переносятся на новую строку.

property Canvas: TCanvas; Используя это св-во, можно рисовать в окне Label, вставлять картинки из буфера обмена, потока, файла. Однако рассматрим это позже.

property Anchors: TAnchors; т е якоря.
type TAnchors = set of TAnchorKind;
type TAnchorKind = (akTop, akLeft, akRight, akBottom);
По умолчанию Anchors = [akTop, akLeft], где akTop означает, что при изменении размеров окна-хозяина этого Label будет автоматически поддерживаться расстояние до верхней кромки окна-хозяина. Аналогично, akLeft автоматически поддерживает расстояние до левой кромки окна-хозяина. Иногда удобнее поддерживать расстояние до правой и нижней кромки окна-хозяина (например, формы). Так, если Label или кнопка Button установлены около правой и нижней кромки формы, то нужно установить (в инспекторе объектов) Anchors = [akRight, akBottom]. Тогда эта Label или Button будет "следить" за правым нижним углом формы при изменении размеров формы. Если установить Anchors = [akTop, akLeft, akRight, akBottom], то Label будет растягиваться-сжиматься при изменении размеров формы. Заодно подчеркнем, что type TAnchors - множество, а TAnchorKind - перечисляемый тип, т е не зря их ввели еще в Паскаль.

property Color: TColor; а что такое TColor? Вроде бы, яно - цвет. Но заглянем в справку:
type TColor = -$7FFFFFFF-1..$7FFFFFFF; - т е это некоторый тип-диапазон целочисленных значений. Цвет кодируется числом. Это ясно. В Делфи есть много констант для популярных цветов: clWhite, clBlue, clButtonFace и т п. Вы можете в программе распечатать значения этих констант, только зачем? Здесь важно, что это цвет фона окошка Label, а не цвет символов текста.

property Cursor: TCursor; где:
type TCursor = -32768..32767; имеются константы для популярных курсоров:
crArrow = -2 - стрелка (обычный курсор)
crCross = -3 - крест
crHourGlass = -11 - песочные часы и т д.
Если присвоить Label.Cursor := crHourGlass, то при наведении курсора на эту Label курсор примет вид песочных часов, что обычно есть признак: подождиите немного.

property Enabled: Boolean; если Enabled = false, то объект недоступен. Он изображается тусклым цветом, и недоступен (не работает).

property Font: TFont; очень важное св-во: шрифт, которым выводится текст. Шрифт - объект, т е у него есть свои свойства, из которых отметим:
property Height: Integer; - высота окна видимого объекта (например, Label) в пикселах т е точках экрана.

property Hint: string; - это текст подсказки, который появляется при наведении курсора на данный объект (но должно выполняться .ShowHint = true (см ниже))

property Left: Integer; координата (расстояние от левого края объекта до левого края окна-хозяина)

property ParentFont: Boolean; - если = true, то объект имееет тот же шрифт, что и родительское окно. Например, Label, установленная на форму, наследует шрифт формы.
Аналогично: ParentColor, ParentShowHint.

property PopupMenu: TPopupMenu; Используя это св-во, можно присоединить к объекту всплывающее меню, т е меню, всплывающее при правом щелчке по объекту. Меню содается отдельно (перетаскивается с палитры компонентов. Но об этом позже).

property ShowHint: Boolean; - если = true, то при наведении курсора на объект всплывает (через ... секунд) подсказка .hint (см выше).

property Top: Integer; координата (расстояние от верхнего края объекта до верхнего края окна-хозяина)

property Visible: Boolean; - если = false, то объект не виден.

property Width: Integer; - ширина окна видимого объекта (например, Label) в пикселах т е точках экрана.

property Owner: TComponent; - объект, который заботится о создании и освобождении (удалении) данного объекта.

property Parent: TWinControl; - объект, внутри которого размещен данный объект (обычно это форма или группирующий элемент).

События (Events), для которых программист может назначит процедуру обработки, т е задать какие-то действия, которые программа выполнит при наступлении этого события


property OnMouseEnter: TNotifyEvent; - когда курсор "наезжает" на объект.
( type TNotifyEvent = procedure (Sender: TObject) of object; )

property OnMouseLeave: TNotifyEvent; - когда курсор покидает объект.
property OnClick: TNotifyEvent; - мышиный щелчок по объекту.
Пример обработки такого события (объект - кнопка Button) см TForm1.btnCalcClick TForm1.btnDixotClick в первом проекте (дихотомия).

property OnContextPopup: TContextPopupEvent; - правый щелчок на объекте.
type TContextPopupEvent = procedure(Sender: TObject; MousePos: TPoint, var Handled: Boolean) of object;

property OnDblClick: TNotifyEvent; - двойной мышиный щелчок по объекту.

property OnMouseDown: TMouseEvent; - нажата кнопка мыши.
type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;
где:
type TMouseButton = (mbLeft, mbRight, mbMiddle); т е можно узнать, какая кнопка нажата.
type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); т е можно распознать нажатие клавиш Shift, Alt, Ctrl, мышиных клавиш и двойной щелчок.
X,Y - координаты курсора (мышиного) и т д.

Компонент Edit (класс TEdit)

Это небольшой текстовый редактор, окно которого применяется для ввода данных. Откроем окно справки для Edit. Щелкнув по ссылке Hierarchy, мы увидим всех предков этого компонента, но эти сведения не очень нужны. Далее можно щелкнуть ссылку Properties, увидеть список свойств (и ужаснуться: как их много !). В этом списке выделено: у какого предка впервые появляется свойство, но это для нас сейчас не важно. Количество св-в не должно нас пугать по двум причинам:
1. Большинство св-в начинающие могут не использовать.
2. Все свойства имеют значения по умолчанию. Эти значения можно не изменять, т е не обращать на них внимания.

Некоторые свойства компонента Edit

Займемся только часто используемыми св-вами, причем теми, которые отсутствуют у Label. Щелкнув св-во в списке, получим справку о нем.

Часто используемые (настраиваемые) свойства показаны в инспекторе объектов и обычно там же и настраиваются (т е на этапе разработки, хотя могут изменяться и программно, во время работы, путем присваивания новых значений - как обычным переменным)

Некоторые события, на которые может реагировать Edit

Некоторые методы компонента Edit

Вспомним, что метод - это просто подпрограмма, являющаяся частью структуры объекта.

Компонент StaticText (класс TStaticText)

Похож на Label. Но не имеет св-ва WordWrap. Если AutoSize установить в false, то текст, выходящий за правую рамку окна, переносит на следующую строку. Имеет возможность настраивать внешний вид рамки изменением св-ва
property BorderStyle: TStaticBorderStyle; где:
type TStaticBorderStyle = (sbsNone, sbsSingle, sbsSunken);
где sbsSunken - утопленное окно.
Отображаемый текст хранится в свойстве Caption.


Многострочные компоненты (Memo, ListBox, ComboBox)

Многострочные компоненты используют для хранения списка строк класс TStrings, поэтому вначале рассмотрим TStrings.

Класс TStrings

TStrings имеет св-ва и методы для:

У компонента Memo есть св-во Lines класса TStrings, а у компонентов ListBox ComboBox - св-во Items класса TStrings. Сам класс TStrings является абстрактным, т к в нем не реализованы многие методы. Поэтому нельзя создавать объекты класса TStrings. Используются только потомки TStrings.

Некоторые свойства класса TStrings Некоторые методы класса TStrings

Компонент Memo (класс TMemo)

Компонент предназначен для хранения, редактирования, показа в окне, чтения из и записи в файл или поток многострочного длинного текста (в Win9* - не более 64 Кб). Может владеть полосами скроллинга (прокрутки): вертикальной и горизонтальной.

Некоторые свойства класса TMemo:

Некоторые методы класса TMemo: Объекты класса TMemo реагируют на те же события, что и Edit

Компонент ListBox (класс TListBox)

Предназначен для хранения списка строк, выделения (выбора), удаления и добавления отдельной строки списка.

Некоторые свойства класса TListBox: Некоторые методы класса TListBox:

Компонент ComboBox (класс TComboBox)

Сочетает в себе Edit и выпадающий список строк, в котором можно выбрать одну строку. Выбранная строка заносится в окошко редактора

Некоторые свойства класса TComboBox:
(Пояснения см TListBox)
Некоторые методы класса TComboBox:
(Пояснения см TListBox)
Назад Дальше
Rambler's Top100
Hosted by uCoz