Читать книгу: «Программирование на Delphi 7», страница 5

Шрифт:

3. РАЗРАБОТКА ОКНА С НЕСКОЛЬКИМИ ИНТЕРФЕЙСНЫМИ ЗОНАМИ И РАСШИРЕННЫМ ИНТЕРФЕЙСОМ

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

Рис. 2. Форма с несколькими зонами и компонентами

В рассматриваемой задачи имеется три зоны: зона выбора пункта из компонента-дерева (верхняя левая), зона информации (верхняя правая) и зона управления (внизу). Мышью можно менять размеры «зона выбора – зона информации» и «зоны выбора и информации – зона управления».

Разработка примера происходит в три приема:

создание на форме зон из панелей и полос разделения

установка на зоны нужных компонент

написание процедур обработки компонент

3.1. Создание на форме зон

Для создания окна с несколькими областями, с изменяющимися размерами, нужно использовать компоненты «Panel» (вкладка «Standard»), «Splitter» (вкладка «Additional») и Инспектор объектов для их связывания. Рассмотрим алгоритм создания окна с тремя областями (см. рис.3):

наносим на пустую форму компонент «Panel1»;

устанавливаем у компонента «Panel1» выравнивание по правому краю (через Инспектор объектов): Panel1.Align:=alRight;

наносим на пустую часть формы слева компонент «Splitter1»;

устанавливаем у компонента «Splitter1» выравнивание по правому краю: Splitter1.Align:=alRight;

наносим на левую (пустую) часть формы компонент «Panel2»;

устанавливаем у компонента «Panel2» выравнивание по нижнему краю: Panel2.Align:=alBottom;

наносим на пустую часть формы слева компонент «Splitter2»;

устанавливаем у компонента «Splitter2» выравнивание по нижнему краю: Splitter2.Align: =alBottom;

наносим на левую верхнюю (пустую) часть формы компонент «Panel3»;

устанавливаем у компонента «Panel3» выравнивание по всему объему:Panel3.Align: =alClient.

Рис. 3. Форма с несколькими областями

3.2. Установка на зоны нужных компонент

После создания формы с несколькими зонами наносят на каждую панель компоненты и устанавливают у них свойство «Align» в значение «alClient» (выравнивание по всей области). На «Panel1» нанесем компонент «Memo1», на «Panel3» компонент-дерево «TreeView1» (вкладка «Win32»), на «Panel2» семь кнопок и компонент статусной строки «StatusBar1» (вкладка «Win32»).

Компонент-дерево «TreeView1» содержит в свойстве «Items» набор узлов и под узлов дерева. Содержимое дерева может задаваться через Инспектор объектов (и свойство «Items»), загружаться из файла или генерироваться программно.

Компонент статусной строки «StatusBar1» содержит «Panels» набор секций статусной строки. По-умолчанию в этом компоненте нет секций, поэтому их нужно создавать либо программно, либо через Инспектор объектов и свойство «Panels». В данном примере нужно сделать через Инспектор объектов три секции статусной строки.

3.3. Процедуры многозонной программы

  private

    { Private declarations }

    td: TTime; nf: string;

procedure TForm1.FormCreate(Sender: TObject);

{ Создание формы }

begin

  Form1.Position:=poScreenCenter;

  TreeView1.ReadOnly:=true; Memo1.ReadOnly:=true;

  Memo1.Clear;

  td:=now; nf:=ExtractFilePath(Application.ExeName)+'tree.txt';

  button7.Click;

end;

procedure TForm1.Button7Click(Sender: TObject);

{ Создаем программно дерево }

var tr, tr2: TTreeNode;

begin

  with TreeView1.Items do begin

    Clear; memo1.Clear;

    tr:=Add(nil, 'Принтеры');

      AddChild(tr,'матричные');

      tr2:=AddChild(tr,'струйные');

        AddChild(tr2,'цветные');

        AddChild(tr2,'черно-белые');

        AddChild(tr2,'фото-принтер');

    tr:=Add(nil, 'Мониторы');

      AddChild(tr,'LCD');

      AddChild(tr,'аналоговые с ЭЛТ');

   TreeView1.FullExpand;

  end;

end;

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

{ Обработка выбора пункта в дереве }

var k: integer;

begin

  { Проверяем, выбран ли пункт, или это раскрытие/скрытие узлов дерева }

    if (htOnItem in TreeView1.GetHitTestInfoAt(X,Y)) then begin

    { Очищаем дерево }

    memo1.Clear;

    k:=TreeView1.Selections[0].AbsoluteIndex+1;

    memo1.Lines.Add('Выбран пункт № '+inttostr(k));

    memo1.Lines.Add('Содержимое пункта: '+TreeView1.Selections[0].Text);

  end;

end;

procedure TForm1.Button1Click(Sender: TObject);

{ Сохранение дерева в файл }

begin

  TreeView1.SaveToFile(nf);

end;

procedure TForm1.Button2Click(Sender: TObject);

{ Чтение дерева из файла }

begin

  TreeView1.LoadFromFile(nf);

  { Раскрываем все узлы дерева }

  TreeView1.FullExpand;

end;

procedure TForm1.Button3Click(Sender: TObject);

{ Сворачиваем все узлы дерева }

begin

  TreeView1.FullCollapse;

end;

procedure TForm1.Button4Click(Sender: TObject);

{ Раскрываем все узлы дерева }

begin

  TreeView1.FullExpand;

end;

procedure TForm1.Button6Click(Sender: TObject);

{ Очищаем дерево }

begin

  TreeView1.Items.Clear; memo1.Clear;

end;

procedure TForm1.Button5Click(Sender: TObject);

{ Закрытие программы }

begin

  close;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

{ Процедура таймера }

begin

  StatusBar1.Panels[0].Text:='Вы работаете с программой: '+timetostr(now-td);

  StatusBar1.Panels[1].Text:='Время: '+timetostr(now);

  StatusBar1.Panels[2].Text:='Дата: '+datetostr(now);

end;

4. РАСШИРЕННЫЕ СРЕДСТВА ДЛЯ СОЗДАНИЯ ИНТЕРФЕЙСА ПРОГРАММЫ «WIN32»

1)  ImageList – контейнер с картинками формата «bmp»

Height – высота картинок

Width – ширина картинок

2) CoolBar – контейнер плавающих панелей

Bands – набор плавающих панелей

Bitmap – фоновый рисунок контейнера

BandBorderStyle – вкл/выкл разграничительных линий между панелями

3) ToolBar – инструментальная панель с кнопками и компонентами

ButtonHeight – высота кнопок

ButtonWidth – ширина кнопок

ShowCaptions – вкл/выкл показывать надписи на кнопках

Images – ссылка на компонент с набором картинок ImageList для отображения кнопок

HotImages – ссылка на компонент с набором картинок ImageList для наведения на кнопку

DisabledImages – ссылка на компонент с набором картинок ImageList для отображения неактивных кнопок

 List – вкл/выкл режима, при котором надпись на кнопке и картинка располагаются в одной строке

ToolButton – кнопка в инструментальная панели ToolBar. Создается через контекстное меню ToolBar «New Button» и «New Separator»

ImageIndex – номер картинки на кнопки из ImageList

Style – обычная кнопка (tbsButton), кнопка с выпадающим списком (tbsDropDown), кнопка с залипанием (tbsCheck), сепаратор (tbsDivider)

Width – ширина кнопки (для сепаратора)

Dropdownmenu – ссылка на выпадающее меню кнопки Popupmenu

4) StatusBar – статусная строка

Panels – набор панелей

Text – текст панели

Width – ширина панели

Aligment – выравнивание текста по горизонтали

«Additional»

1) ButtonGroup – контейнер с кнопками

ButtonHeight – высота кнопок

ButtonWidth – ширина кнопок

Images – ссылка на компонент с набором картинок ImageList для отображения кнопок

Items – набор кнопок

Caption – надпись на кнопке

ImageIndex – номер картинки кнопки

ButtonOptions

gboFullSize – кнопки располагаются в столбик вертикально

gboShowCaptions – показывать надписи на кнопках

Событие «ButtonClicked» передает в свою процедуру номер «Index» нажатой кнопки

2) CategoryButtons – контейнер с вкладками кнопок

ButtonHeight – высота кнопок

ButtonWidth – ширина кнопок

Images – ссылка на компонент с набором картинок ImageList для отображения кнопок

ButtonOptions – опции вкладок (категорий)

boFullSize – кнопки располагаются в полную ширину компонента (true)

boShowCaptions – показывать надписи на кнопках (true)

boVerticalCategoryCaptions – вкладки располагаются вертикально (false)

boBoldCaptions – надписи вкладок жирным цветом

boUsePlusMinus – использование «+» и «-» для раскрытия вкладок

Categories – Категории (вкладки)

Caption – название вкладки

Collapsed – вкладка закрыта (false)

Items – кнопки вкладки

Caption – надпись на кнопке

ImageIndex – номер картинки кнопки

Button.Category.Index – номер выбранной вкладки

Button.Index – номер выбранной кнопки в текущей вкладке

Событие «ButtonClicked» передает в свою процедуру номер «Index» нажатой кнопки

    with CategoryButtons1 do begin

      SelectedItem:=Categories[0].Items[0];

      CategoryButtons1ButtonClicked(Sender, SelectedItem);

    end;

3) ActionManager – менеджер акций (пунктов меню)

Images – ссылка на компонент с набором картинок ImageList для отображения кнопок

Двойной щелчок мыши по компоненту раскрывает редактор акций. В нем правой кнопкой мыши выбираем пункт «New Action». Свойства акции:

Caption – название подпункта меню («Открыть»)

Category – название пункта (основного раздела) меню («Файл»)

ImageIndex – – номер картинки акции

ActionToolBar – панель акций. На данную панель из ActionManager наносятся акции (кнопки), аналог ToolBar.

ActionMainMenuBar – меню акций. В данное меню из ActionManager наносятся акции (пункты меню), аналог MainMenu.

Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.

Участвовать в бонусной программе
Возрастное ограничение:
12+
Дата выхода на Литрес:
11 июня 2021
Дата написания:
2012
Объем:
84 стр. 57 иллюстраций
Правообладатель:
Автор
Формат скачивания:
Текст
Средний рейтинг 3,7 на основе 3 оценок
По подписке
Аудио
Средний рейтинг 4,7 на основе 425 оценок
По подписке
Текст PDF
Средний рейтинг 4,9 на основе 8 оценок
По подписке
Текст PDF
Средний рейтинг 5 на основе 6 оценок
Текст, доступен аудиоформат
Средний рейтинг 0 на основе 0 оценок
По подписке
Текст
Средний рейтинг 4,4 на основе 14 оценок
По подписке
Текст PDF
Средний рейтинг 3,9 на основе 13 оценок
По подписке
Текст PDF
Средний рейтинг 4,6 на основе 11 оценок
По подписке
Текст
Средний рейтинг 4,3 на основе 9 оценок
По подписке
Текст
Средний рейтинг 5 на основе 2 оценок
По подписке
Текст
Средний рейтинг 2,3 на основе 3 оценок
По подписке
Текст
Средний рейтинг 5 на основе 6 оценок
Текст
Средний рейтинг 5 на основе 2 оценок
Текст
Средний рейтинг 5 на основе 3 оценок