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

Методические материалы выполнения задания

Читайте также:
  1. II. УЧЕБНЫЕ И МЕТОДИЧЕСКИЕ ПОСОБИЯ, ПРАКТИКУМЫ
  2. III. Порядок выполнения работы
  3. III. Порядок выполнения работы
  4. IV. Методические указания по самостоятельной внеаудиторной работе студентов (СУРС) и формы контроля
  5. Ntilde;Разбор задания
  6. POS материалы
  7. S6.14 Сопроводительные материалы

«Графический редактор»

 

1. Цель задания:

 

Создание простейших приложений на Borland C++ Builder 6 c использованием компоненты PageControl (набор вкладок) на тему «Графический редактор»

.

 

2.Постановка задачи:

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

 

 
 

Внешний вид работающего приложения показан на рисунке 1.

 

Наряду с набором вкладок в данном проекте были использованы компоненты CSpinEdit и CColorGrid со страницы Samples палитры компонентов Builder. Первая используется для задания толщины, а вторая – для задания цвета рисуемых линий.

При нажатии мышью на вкладке устанавливаются параметры рисования (толщина и цвет линий). Этот обработчик сопостовляется с каждой созданной вкладкой TTabSheet. В теле функции ImageMouseDown, которую мы создали сами, задаются параметры рисования.

canv->Pen->Width = SpinEdit->Value;

canv->Pen->Color = ColorGrid->ForegroundColor;

Предполагая, что первый элемент массива Controls[] активной вкладки является указателем на TImage, получаем его и указатель на его свойство Canvas.

TCanvas * canv = ((TImage*)PageControl1->ActivePage->Controls[0])->Canvas;

Создаем еще одну функцию ImageMouseMove.В ее теле проверим условие:

if (Shift.Contains(ssLeft)), т е проверяем нажата ли левая кнопка мыши. Если оно выполняется, то переходим к функции canv->MoveTo(X, Y); Ей передаются начальные координаты мыши. Следующая за ней функция

canv->LineTo(X,Y); продолжает линию к новому месту.

Создадим еще одну функцию ShowHint для вывода длинной подсказки в строке состояния statusbar.

StatusBar1->SimpleText = Application->Hint;

Создадим еще одну функцию CreateTab и в ней динамически создадим указатель на объект класса TTabSheet:

TTabSheet * tab = new TTabSheet(this);

Если нам нужно открыть файл то обязательно создается новая вкладка. Сделаем вкладку активной и создадим рисунок.

Наши события должны обрабатываться соответствующими функциями:

image->OnMouseMove = ImageMouseMove;

image->OnMouseDown = ImageMouseDown;

В инспекторе объектов зададим нашей компоненте свойство AllClient и, таким образом PageControl отображается на всей клиентской области.

Если наш файл существует,то можно загрузить картинку.Тогда мы увидим:


Добавим обработчик события, возникаюшего при изменении размеров вкладки:

tab->OnResize = TabResize;

Теперь заполним тело функции TabResize.Для начала получим указатель на TImage:

TImage * image = (TImage*)PageControl1->ActivePage->Controls[0];

А затем зменим размеры Bitmap' а, присвоив их ширине и высоте клиентской части:

image->Picture->Bitmap->Width =

PageControl1->ActivePage->ClientWidth;

image->Picture->Bitmap->Height =

PageControl1->ActivePage->ClientHeight;

Далее, для большего удобства создадим на панеле собственные кнопки:New,Open,Save,Save as…,Close.

Для кнопки New рассмотрим следующую конструкцию:

static int count = 1;

String str = "Безымянный";

str = str + count++;

this->CreateTab(str);

Имеется статическая переменная целого типа, равная 1.Наш первый файл будет иметь имя Безымянный1,а далее будет по счетчику прибавляться 2,3,4,5…

С помощью стандартных диалогов OpenDialog,SaveDialog, открываем файлы,предварительно проверяя условие о существовании файла.Также и сохраняем файл:

image->Picture->SaveToFile(SaveDialog->FileName);

Выход из программы осуществим с помощью события ExitItemClick функцией Close().

 

Приложение 1. Свойства компоненты TPageControl

Объявленные в классе TPageControl

 

ActivePage Указатель на TTabSheet - текущая вкладка набора.

PageCount Для чтения. Общее число вкладок.

Pages Для чтения. Массив из указателей на TTabSheet. Позволяет получить доступ к любой вкладке.

 

Унаследованные от TCustomTabControl

 

Canvas Для чтения. Канва элемента управления.

HotTrack Определяет, подсвечиваются ли заголовки вкладок при наведении мыши.

Images Указатель на TCustomImageList. Список изображений, которые будут отображаться на заголовках вкладок.

MultiLine Определяет, можно ли отображать заголовки вкладок в несколько рядов.

OwnerDraw Определяет, можно ли рисовать на элементе управления.

RaggedRight Определяет, будут ли вкладки или ряды растягиваться, чтобы занять всю доступную ширину. Работает при MultiLine = = true.

ScrollOpposite Работает при MultiLine = = true. Если true, то ряды с заголовками предыдущих вкладок отображаются внизу.

Style Стиль отображения заголовков вкладок. Может принимать значения:

ü tsTabs стандартные вкладки

ü tsButtons кнопки

ü tsFlatButtons плоские утапливаемые кнопки

TabHeight Высота заголовков вкладок.

TabPosition Определяет положение заголовков вкладок. Может принимать значения

ü tpTop наверху

ü tpBottom внизу

ü tpLeft слева

ü tpRight справа

TabWidth Ширина заголовков вкладок.

 

 

Методы компоненты TPageControl

CanShowTab Задает возможность доступа к вкладке с заданным номером.

Change Отвечает на все изменения набора вкладок.

DoAddDockClient Выполняет необходимые действия, когда какой-то элемент управления перетаскивается на PageControl. Например, присваивает свойству Parent этого элемента активную вкладку.

DockOver Определяет, можно ли вставить перетаскиваемый на PageControl элемент управления.

DoRemoveDockClient Выполняет необходимые действия, когда элемент управления с помощью Drag and Drop убирается с PageControl' а. Этими тремя методами точно не пользовались.

FindNextPage Возвращает следующую или предыдущую вкладку относительно заданной.

GetChildren Вызывает заданную процедуру для каждой вкладки (не пользовались).

GetImageIndex Задает картинку для страницы с заданным номером. Можно переопределить в производном классе (не пользовались).

GetPageFromDockClient Возвращает указатель на страницу, куда переместили с поиощью Drag and Drop какой-то элемент управления (не пользовались).

GetSiteInfo Возвращает информацию о возможностях PageControl' а для процедур Drag and Drop (Непонятно и не пользовались)

SetChildOrder Задает порядок записи или чтения страниц при работе с потоками (не проверяли).

SelectNextPage Переходит к следующей или предыдущей видимой странице.

ShowControl Показывает заданную страницу, но непонятно как.

 

События компоненты TPageControl

OnChange Возникает при выборе новой страницы.

OnChanging Возникает перед тем, как будет выбрана новая страница.

OnDrawTab Возникает перед тем, как страница будет перерисована.

OnGetImageIndex Возникает перед выбором картинки, которую необходимо отобразить на заголовке вкладки.

 

Свойства компоненты TTabSheet

ImageIndex Номер картинки для заголовка. Картинка берется из списка, принадлежащего PageControl' у.

PageControl Набор, в котором содержится страница.

PageIndex Номер страницы в наборе.

TabIndex Для чтения. Номер страницы в наборе видимых. Если -1, страница невидима.

TabVisible Определяет, видима ли страница в наборе.

 

Методы компоненты TTabSheet

DoHide Генерирует событие OnHide. Можно переопределить в потомке.

DoShow Генерирует событие OnShow. Можно переопределить в производном классе.

 

События компоненты TTabSheet

OnHide Возникает при задании свойству Visible страницы значения false.

OnShow Возникает при задании свойству Visible страницы значения true.

 

 

Остальные свойства, методы и события унаследованы от TWinControl и остальных и не являются специфичными для этих компонент.

 


 


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


Читайте в этой же книге: Всплывающее меню | Диалоговые окна открытия и сохранения файла | Проектирование строки состояния | Подсказки на строке состояния | Прокрутка в отдельной прямоугольной области | Полосы прокрутки | Кнопки-инструменты | Картинки на кнопках | Подсказки к кнопкам | Управление видимостью панели инструментов |
<== предыдущая страница | следующая страница ==>
Методические материалы по теме| Работа с ядром пакета прикладных программ MATHLAB

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