Компонент TToolBar- инструментальная панель


Компонент TImageList

УПРАВЛЕНИЕ ПРОГРАММОЙ С ПОМОЩЬЮ ПАНЕЛИ ИНСТРУМЕНТОВ

 

 

Цель: Научиться подключать инструментальную панель, изучить основные свойства и типы кнопок, использование их для управления вычислительным процессом.

Постановка задачи:Разработать программу, содержащую инструментальную панель со всеми возможными кнопками.

 

 

Компонент TImageList представляет собой набор изображений одинаковых размеров, на которые можно ссылаться по индексам, начинающимся с 0. Этот компонент позволяет организовать эффективное и экономное использование пиктограмм и битовых матриц другими компонентами, например TToolBar.

Изображения в компонент TImageList могут быть загружены в процессе проектирования с помощью редактора списка изображений. Окно редактора вызывается двойным щелчком на компоненте TImageList.

В окне редактора можно добавить в списки изображений нужное изображение, используя команду Add, удалить изображение командой Delete, очистить весь список командой Clear. При добавлении изображений в список открывается обычное окно открытия файла изображений. Необходимо иметь ввиду, что размеры всех изображений должны быть одинаковыми. Как правило это размер, используемый в меню, списках, кнопках.

Каждое загруженное в список изображение получает индекс. Именно на эти индексы впоследствии вы можете ссылаться, когда необходимо загрузить нужное графическое изображение.

TToolBar

Компонент TToolBar – это специальный контейнер для создания инструментальных панелей. В компонент TToolBar можно поместить любые другие компоненты. Как правило, он используется для расположения в ней кнопок, с помощью которых можно оперативно выполнить нужную команду. Кнопки можно группировать и располагать в несколько рядов.

Главная отличительная черта TToolBar - его способность гибкого управления дочерними элементами, которые он может группировать, выравнивать по размерам, располагать в несколько рядов. Компонент может манипулировать любыми вставленными в него дочерними элементами, но все его возможности в полной мере проявляются только при использовании специально для него разработанного компонента TToolButton (инструментальная кнопка). Этот компонент похож на кнопку TSpeedButton, но в палитре компонентов его нет.

Для того, чтобы вставить TToolButton в инструментальную панель TToolBar, необходимо правой кнопкой щелкнуть на компоненте TToolBar и в открывшемся окне выбрать NewButton или NewSeparator (новый сепаратор). Сепараторы предназначены для функционального выделения на инструментальной панели групп элементов и представляют собой разновидности кнопок TToolButton.

Хотя компонент TToolButton не имеет свойства, предназначенного для хранения картинки, однако он умеет использовать контейнер TImageList, чтобы извлечь из него нужную картинку и поместить ее на инструментальную кнопку.

Методику использования TToolBar совместно с TToolButton рассмотрим на примере создания текстового редактора. Пусть требуемый дизайн программы имеет вид, показанный на фиг.1.

 

 

Фиг.1. Пример TToolBar с кнопками TToolButton

Методика использования TToolBar состоит в следующем.

1. Поместите на пустую форму компонент TImageList, щелкните по нему правой кнопкой мыши и выберите продолжение TImageList Editor.

2. Для заполнения контейнера TImageList1 подойдут любые небольшие по размеру изображения. К сожалению, растры из каталога images | buttons (полный путь: c:\Program Files\Common Files\Borland Shared\Images\Buttons), рассчитанные на использование в кнопках .

 

prope ger; propeTImag prope

TSpeedButton содержат по два изображения каждый - обычное и для запрещенной кнопки.

При добавлении изображений для кнопки TToolButton следует иметь ввиду, что использование заготовок из каталога images | buttons в кнопках TToolButton приведет к появлению для каждой кнопки по два изображения одновременно. При попытке добавить сдвоенное изображение командой Add редактора в контейнер TImageList DELPHI задаст вопрос: Размерность изображения больше размерности списка. Разделить на отдельные битовые матрицы? На данный вопрос надо отвечать положительно. Тогда загружаемая битовая матрица автоматически разделится на отдельные изображения и потом вы можете удалить те из них, которые Вам не нужны кнопкой Delete редактора.

3. Поместите на форму компонент TToolBar, в окне Инспектора объектов разыщите свойство Images, раскройте список в правой колонке строки Images и выберите ImageList1. Мы указали компоненту на источник изображений и можем теперь вставлять в него кнопки.

4. Щелкните по TToolBar правой кнопкой мыши и выберите New Button.

5. Вставьте еще две кнопки, после чего вставьте разделитель New Separator.

6. Разместите на ToolBar остальные кнопки и сепараторы (см. фиг.1).

7. Если вы захотите, чтобы кнопки имели модный «плоский» вид, установите в свойство Flat компонента ToolBar1 значение True.

Свойство Buttons компонента TToolBar позволяет обратиться к каждому его дочернему компоненту как к объекту класса TToolButton.

Вид изображения на кнопке определяется свойством ImageIndex компонента TToolButton. Оно определяет индекс изображения, хранящегося во внешнем компоненте ImageList. Указание на этот компонент задается свойствами Images и Disable Images компонента TToolBar. У кнопки есть и другие особенности: находиться в нажатом или отжатом состояниях и т.п.

Для компонента TToolBar определено событие OnResize, возникающее при изменении размеров компонента.

Листинг Unit DemoToolBar приводится ниже.

 

Unit DemoToolBar;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons, ComCtrls, ImgList,

ToolWin;

type

TForm2 = class(TForm)

Memo1: TMemo;

OpenDialog1: TOpenDialog;

ToolBar1: TToolBar;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ToolButton7: TToolButton;

ToolButton8: TToolButton;

ToolButton9: TToolButton;

ImageList1: TImageList;

SaveDialog1: TSaveDialog;

 

procedure FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

procedure sbtExitClick(Sender: TObject);

procedure sbtNewClick(Sender: TObject);

procedure sbtOpenClick(Sender: TObject);

procedure sbtSaveClick(Sender: TObject);

procedure sbtCutClick(Sender: TObject);

procedure sbtCopyClick(Sender: TObject);

procedure sbtPasteClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form2: TForm2;

implementation

{$R *.DFM}

 

procedure TForm2.FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

begin

Memo1.Top := 25;

Memo1.Height := Form2.ClientHeight - 25;

end;

 

procedure TForm2.sbtExitClick(Sender: TObject);

begin

Close;

end;

 

procedure TForm2.sbtNewClick(Sender: TObject);

begin

Memo1.Lines.Clear;

end;

 

procedure TForm2.sbtOpenClick(Sender: TObject);

begin

if OpenDialog1.Execute then

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

 

procedure TForm2.sbtSaveClick(Sender: TObject);

begin

if SaveDialog1.Execute then

Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

 

procedure TForm2.sbtCutClick(Sender: TObject);

begin

Memo1.CutToClipboard;

end;

 

procedure TForm2.sbtCopyClick(Sender: TObject);

begin

Memo1.CopyToClipboard;

end;

 

procedure TForm2.sbtPasteClick(Sender: TObject);

begin

Memo1.PasteFromClipboard;

end;

 

end.