Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Методические указания по разработке проекта

Читайте также:
  1. I. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
  2. II. Методические основы проведения занятий по экологическим дисциплинам в системе высшего профессионального образования
  3. IV. Методические указания студентам по подготовке к занятию
  4. VII. УЧЕБНО-МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ, ОБЕСПЕЧИВАЮЩИЕ
  5. Блок 7.1. Работа с инвестором после выхода на операционную стадию инвестиционного проекта. Стимулирование реинвестирования/повторных инвестиций
  6. Внесение законопроекта в Государственную Думу как форма реализации права законодательной инициативы. Требования к законопроектам.
  7. Всенародное обсуждение законопроектов как средство выражения общественного мнения о них, контроля над законопроектами и как форма прямого участия граждан в законотворчестве.

Работа выполняется на С++.

1) Начните новый проект. Присвойте свойству Name формы значение DockForm, а свойству CaptionDrag & Dock. На форме создадим набор элементов управления Windows, расположенных на перемещаемых панелях (CoolBands). Поместите на форму два экземпляра компонента TСoolBar со страницы Win 32, которые будут содержать панели инструментов. Чтобы вставить в панели CoolBar необходимые элементы управления, создадим две панели инструментов с помощью компонентов TToolBar. Установите их свойство ShowCaptions в true. Создайте у компонента ToolBar 1 две кнопки с заголовками Aqua и Red, а у компонента ToolBar 2 – две кнопки с заголовками Memo и Button.

Выберите на форме компонент CoolBar 1, через контекстное меню которого или через свойство Bands создайте новую панель типа TСoolBands. В свойстве Control данной панели установите значение ToolBar 1. Аналогично разместите панель инструментов ToolBar 2 на панели компонента CoolBar 2.

Значения свойства компонентов CoolBar 1 и CoolBar 2 AutoSize установите в true.

Поместите на форму третий экземпляр компонента TСoolBar, который будет служить контейнером для панелей инструментов. Создайте у него две панели, значения свойства Control которых установите соответственно в CoolBar 1 и CoolBar 2.

Запустите приложение на исполнение и попробуйте перетащить панели друг относительно друга.

2) Выберите компонент CoolBar 3 и установите его свойство DockSite в true. Таким образом он станет доком и сможет принимать паркуемые компоненты.

Определим панель CoolBar 1 в качестве паркуемого компонента. Установим ее свойство DragKind в значение dkDock, а DragMode – в dmAutomatic.

Запустите приложение. Теперь панель с кнопками Aqua и Red вытаскивается мышью за пределы формы и помещается обратно.

3) Создайте в проекте новую форму с именем Aqua и перенесите ее из списка Auto-create forms в список Available forms. Разместите на форме экземпляр компонента TPanel. Установите его свойства: DockSite – в true, DragKind – в dkDock, а DragMode – в dmAutomatic.

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

Внесите в обработчик события OnClick кнопки Aqua следующий код:

inc (f);

Aqua:= T Aqua.Create (Self);

Aqua. Caption:= ' Aqua '+ IntToStr (f);

Aqua. Color:= clAqua;

Aqua. Show;

Переменную f для подсчета количества созданных форм объявите в разделе implementation модуля.

4) На главной форме модуля поместите два экземпляра компонента TGroupBox. Свойствам Caption которых присвойте соответственно Button и Memo. Они будут служить для привязки создаваемых компонентов с помощью соответствующих кнопок на панели инструментов.

В обработчики событий OnClick кнопок Button и Memo внесите соответственно следующий код:

procedure TForm1.ToolButton3Click(Sender: TObject);

var NewButton: TButton;

begin

NewButton:=TButton.Create(Self);

inc(b);

NewButton.DragKind:=dkDock;

NewButton.DragMode:=dmAutomatic;

NewButton.Caption:= 'DockButton '+IntToStr(b);

NewButton.Parent:=GroupBox1;

NewButton.Left:= 20;

NewButton.Top:=20;

NewButton.Show;

end;

 

procedure TForm1.ToolButton4Click(Sender: TObject);

var NewMemo: TMemo;

Begin

NewMemo:=TMemo.Create(Self);

inc(m);

NewMemo.DragKind:=dkDock;

NewMemo.DragMode:=dmAutomatic;

NewMemo.Color:= rgb(0,m*60+50,0);

NewMemo.Parent:=GroupBox2;

NewMemo.Left:= 20;

NewMemo.Top:=20;

NewMemo.Show;

end;

Переменные b и m объявите аналогично переменной f.

5) Разместите на форме DockForm экземпляр компонента TPageControl и установите его свойство DockSite в true.

Запустите приложение. Создайте окно Aqua, а затем, создавая экземпляры кнопки Button и поля Memo, перетаскивайте их на компонент Panel окна Aqua или на компонент PageControl. Выполните парковку компонента Panel.

Осуществите вывод информации о количестве припаркованных компонентов.

S: = ";

for i:= 0 to Panell.DockClientCount-1 do

AppendStrfs,Panel1.DockClients[i].Name+#$D#$A);

ShowMessage(s);

Для припаркованных компонентов также выведите соответствующую информацию.

Пример:

procedure TForm1.ButtonlEndDock(Sender, Target: TObject; X, Y: Integers);

begin

(Sender as TControl).HostDocksite.SetTextBuf(pChar((Sender as TControl).Name));

end;

6) Переносить компоненты можно не только с помощью мыши, но и программно. Для этого используются соответствующие методы.

а) Для программного размещения компонента в доке используется метод

function ManualDock (NewDockSite: TWinControl;

DropControl: TControl = nil; ControlSide: TAlign = alNone): Boolean;

Этот метод определен у компонентов класса TControl. Параметр NewDockSite определяет док, куда будет помещен компонент. DropControl – это компонент в доке, на который будет помещаться данный компонент (по умолчанию он отсутствует). Привязкой компонента к границам дока (по умолчанию – отсутствует) управляет параметр ControlSide.

Пример нажатие кнопки с именем BitBtnl переносит форму custForm на док MainForm. panell и размещает ее по всей доступной площади (параметр выравнивания alciient).

procedure TMainFom.BitBtnIClick (Sender: TObject);

begin CustForm.ManualDock(MainForm.Panell,nil,

alciient);

end;

б) метод ManualFloat снимает компонент с дока.

Пример Нажатие кнопки BitBtn2 снимает эту форму с дока и выравнивает ее по центру экрана. В свойствах UndockHeight и UndockWidth хранятся высота и ширина элемента управления на момент, предшествующий помещению на док:

procedure TMainForm.BitBtn2Click(Sender: TObject);

begin

with CustForm do begin ManualFloat(Rect((Screen.Width-UndockWidth) div 2,

(Screen.HeightUndockHeight) div 2, (Screen.Width+UndockWidth) div 2, (Screen.Height+UndockHeight) div 2));

end;

 

Создайте новую форму с именем Client с компонентом TMemo, которая будет использоваться в качестве клиентов при парковке в доке. Установите его свойства DragKind в dkDock и DragMode в dmAutomatic. Свойству Align присвойте значение alClient. Чтобы модифицировать свойства формы во время работы, создайте процедуру, изменяющую заголовок окна и текст, отображаемый компонентом TMemo:

procedure TClient. InitControls (Capt: String);

Begin

Caption:= capt;

Memo 1. Lines. Text:= capt;

end;

В данном случае форма Client – это компонент, который будет использован для парковки в доке. Поэтому у нее также нужно будет установить свойства DragKind в dkDock и DragMode в dmAutomatic.

7) В модуле формы Aqua объявите переменные

Var

View, Tree, Editor: TClient;

Установите свойство формы DockSite в true.

Разместите на форме Aqua экземпляр компонента TPageControl и установите его свойство DockSite в true.

8) Для того, чтобы при запуске программы клиенты поместились на форму в нужное место, напишите обработчик события OnCreate формы Aqua.

procedure TAqua. FormCreate (Sender: TObject);

Begin

View:= TClient. Create (Self);

View. InitControls ('Обзор');

Tree:=TClient.Create(Self);

Tree. InitControls ('Дерево');

Editor:=TClient.Create(Self);

Editor. InitControls ('Редактор');

// поместим PageControl в док

PageControl 1.BeginDrag(true); //переместим

PageControl 1.EndDrag(true); // бросим

PageControl 1.ManualDock(Self, nil, alTop);//поместим в док

// поместим клиентов в док

Editor. ManualDock(Self, nil, alLeft); // на форму слева

View. ManualDock(self.PageControl1); // на PageControl

Tree. ManualDock(self.PageControl1); // на PageControl

Editor. Show;

View. Show;

Tree. Show;

end;

Обработчик создает три экземпляра формы (TClient) для размещения в доке и инициалицирует свойства каждого экземпляра уникальными значениями. Затем компонент TPageControl размещается в доке формы. Во время работы это можно сделать, перетаскивая компонент с помощью мыши. При размещении клиентов в доке одна форма размещается на форме Aqua, а две – на компоненте TPageControl.

Запустите приложение на исполнение. Планируемый вид элементов управления не получен. Для того чтобы программно управлять операциями парковки необходимо использовать свойства UseDockManager и DockManager.

В нашем примере установите свойство UseDockManager формы Aqua в true.

Свойство DockManager представляет собой СОМ-интерфейс, позволяющий расширить возможности дока, вплоть до записи его состояния в поток (TStream).

 


Дата добавления: 2015-08-09; просмотров: 66 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
И. Н. Паламарь| Режиме в законтурной области пласта

mybiblioteka.su - 2015-2024 год. (0.013 сек.)