Палитра компонентов.

Мы будем описывать только наиболее важные свойства и события для компонентов и перечислим только наиболее часто используемые компоненты из стандартных библиотек Delphi 3.0. Для Delphi 2.0 практически все далее сказанное также справедливо. Существенным отличием является более развитая справочная система в Delphi 3.0, позволяющая в режиме on-line получать практически всю необходимую информацию, что резко облегчает работу. Поэтому приводимые далее описания компонентов дают лишь общее знакомство с палитрой.

 

5.9.4. Метка (tLabel).

Этот компонент предназначен для показа в некотором месте формы статического или изменяющегося в процессе работы приложения текста. Свойство font позволяет выбирать тип, стиль, размер и цвет фонта, а height и width — задавать размеры отведенного под метку места. Свойство caption ("титр", "подпись под картинкой") позволяет вводить в инспекторе объектов (object inspector) или присваивать программно в процессе работы строку с текстом длинной до 255 символов. Свойство WordWrap дает возможность автопереноса текста на следующую строку при превышении шириной строки значения Width. Свойство AutoSize, напротив, вызывает автоматическое установление значения Width по длине строки.

Метка не может захватывать фокус, поэтому на нее невозможно установить курсор. В результате кусок текста на экране, созданный с помощью tLabel, невозможно выделить и скопировать в буфер обмена (clipboard), что бывает крайне неприятно для пользователей программ. Поэтому вместо tLabel рекомендуется использовать компонент tEdit в режиме запрета редактирования текста и с цветом, совпадающим с цветом формы.

 

5.9.5. Кнопка (tButton) и кнопка с картинкой (tBitButton).

Свойство caption задает надпись на кнопке, а событие onClick позволяет выполнить необходимые действия в случае нажатия кнопки. Компонент tBitButton (потомок tButton) дает возможность вывода на кнопке рядом с текстом картинки, имя картинки задается свойством Glyph ("наклейка"). Картинка должна быть в формате Bitmap. Существует возможность в одном .bmp-файле по очереди (слева направо) располагать до 6 картинок. Обычно используют 2 (для свойства enabled, установленного в true и false соответственно). При enabled=false текст на кнопке становится "пассивным" (более серым, чем обычно), и рисуется соответствующая картинка, которую также обычно изображают "более серой". Другие пары — для состояний кнопки "нажата/не нажата". Кнопку tBitButton можно использовать вместо tButton без всяких изменений, если не задавать имя картинки. Это дает дополнительные возможности: в tBitButton можно установить цвет текста на кнопке, а в tButton нельзя.

 

5.9.6. Однострочный пункт ввода-вывода и редактирования текста (tEdit).

Помимо своей обычной функции может служить полной заменой однострочной метке при соответствующих установках свойств (цвет фона как у компонента, на котором расположен пункт, enabled=false и т.д.). При enabled=true возможен захват фокуса пунктом. В этом случае при Readonly=true можно выделять и копировать в буфер выделенный текст, а при Readonly=false текст можно также редактировать. Свойство text позволяет возвращать или устанавливать строку текста для пункта. Свойство MaxLength позволяет устанавливать максимальную длину вводимого текста в пределах от 1 до 255 символов. Если MaxLength=0 (по умолчанию), это эквивалентно 255 (autosize). AutoSelect=true позволяет тексту в пункте автоматически становиться выделенным при входе в пункт.

 

5.9.7. Многострочный пункт ввода-вывода и редактирования текста (tMemo).

Аналогичен компоненту tEdit, но с произвольным количеством строк. Свойство Alignment задает режим выравнивания текста внутри компонента (по центру, левому или правому краю). Длина текста не должна превышать 64Kb. WordWarp задает режим переноса слов. ScrollBars позволяет показывать (или не показывать) внутри компонента линейки прокрутки по вертикали и горизонтали.

Вводимый/выводимый текст доступен либо как единый объект через свойство Text, либо через свойство Lines — как массив строк. Поскольку строки tMemo хранятся в объекте типа tStrings, к ним применимы все методы этого класса, например:

tMemo1.Lines.Add('эта строка добавляется в конец текста');

 

5.9.8. Выпадающий список (tComboBox).

Потомок tEdit. Выглядит так же, но имеет "стрелку вниз" справа от поля ввода-вывода текста. При нажатии на нее выпадает список строк, из которых можно выбрать нужную, которую обычно и показывают после этого в поле ввода-вывода. Доступ к выпадающим строкам идет через свойство Items, у которого, в свою очередь, есть свойство Strings. Доступ к видимому в "свернутом" состоянии тексту идет, как и в tEdit, через свойство Text. Добавление новой строки в список пунктов (Items) может производиться так:

ComboBox1.Items.Add('Добавленная строка');

 

5.9.9. Пункт независимого выбора (tCheckBox).

Это маленький квадратик с расположенной рядом меткой. У данного пункта может быть три состояния: Checked (отмечен), noChecked (не отмечен) и Grayed (затемнен, что обычно подразумевает, что он недоступен для изменения). В случае Checked в квадратике рисуется крестик или галочка, noChecked — квадратик пустой, Grayed — рисуется более темным фоном.

 

5.9.10. Пункты зависимого выбора — "радиокнопки" (tRadioButton).

Группа взаимоисключающих пунктов выбора (отмеченным может быть только один из группы). По виду отличаются от tCheckBox тем, что рисуются кружками. При выборе одного элемента группы в центре кружка рисуется точка, а предыдущий перестает быть отмеченным. Чтобы создать независимые группы радиокнопок, надо помещать соответствующую часть из них на другие группирующие элементы — tGroupBox или tPannel.

 

5.9.11. Таблица (сетка) строк (tStringGrid).

Обеспечивает вывод таблицы с текстом. Таблица состоит из ячеек (Cells). Доступ к ячейке идет через двумерное свойство Cells[i,j]. Количество столбцов в таблице задается свойством ColCount, а строк (рядов) — RowCount. Ширину и высоту ячеек в любом столбце или строке, соответственно, можно независимо задавать с помощью свойств DefaultColWidth и DefaultRowHeight.

Часть столбцов и строк в таблице могут быть "фиксированными". Число фиксированных строк задается свойством FixedRows, столбцов — свойством FixedCols. Фиксированные ячейки выполняют в таблице особую роль.

· Во-первых, они являются заголовками столбцов и строк. Они имеют другой цвет фона (по умолчанию серый, а не белый, как обычные ячейки), не захватывают фокус (хотя такие столбец или строка как единое целое могут его захватить при заданных соответствующих опциях) и не допускают редактирования находящегося в них текста, даже если свойство doEditing для компонента установлено как true во множестве свойств Options.

· Во-вторых, при установке в true свойства goRowsMoving и/или goColsMoving (также множество свойств Options) можно менять порядок строк и/или столбцов, "хватаясь" за них "мышью".

Приведем пример процедуры инициализации таблицы StringGrid, считая, что все необходимые атрибуты установлены на этапе визуального проектирования:

procedure SG_Init;

var i,j:Integer;

begin

StringGrid1.Cells[0,0]:='N'; {заголовок первого столбца - буква N}

for j:=1 to ColCount-1 do {заголовок других столбцов}

StringGrid1.Cells[0,j]:='Заголовок'+IntToStr(j);

for i:=1 to RowCount-1 do {первый столбец - номер строки}

StringGrid1.Cells[i,0]:=IntToStr(i);

end;

Эту процедуру можно вызвать, например, по событию onCreate для StringGrid1 (либо просто перенести приведенный текст внутрь обработчика события). В отличие от большинства других компонентов StringGrid, как правило, нуждается в программной инициализации подобного рода.

 

5.9.12. Диалоги (tOpenDialog,tSaveDialog è äðóãèå).

РАБОТА С ГРАФИКОЙ

Пример:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Image1: TImage;

Edit1: TEdit;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

close

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Image1.Canvas.Pen.Color:=clGreen;

Image1.Canvas.Lineto(StrToInt(Edit1.Text),StrToInt(Edit2.Text))

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Image1.Canvas.Pen.Color:=clRed;

Image1.Show;

end;

end.

 

6. Интерфейсы и множественное наследование