Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
13.01.2015 Views

18 create forms вкладки Forms (меню Project.Options) или просто вычеркнуть соответствующие строки из WinMain, а в нужном месте программы создавать их и открывать не модально методом Show или модально методом ShowModal. В следующем примере в форме MainForm по щелчку кнопки Button1 создаются три формы: не модальная форма ModelessForm, модальная форма ModalForm, объявленная глобальной переменной в файле заголовка, и модальная форма LocalForm, не связанная с глобальной переменной: #include #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" TForm1 *Form1; __fastcall TForm1::TForm1 (TComponent* Owner): TForm (Owner) { ModelessForm–>Show(); ModalForm = new TModalForm (this); // при наличии ModalForm–>ShowModal(); // глобального delete ModalForm; // определения TLocalForm *LocalForm = new TLocalForm (0); // вместо LocalForm–>ShowModal(); // глобального delete LocalForm; // определения ModelessForm–>Close(); } В программе использован аргумент this, указывающий на владельца TMainForm, и аргумент 0, не связывающий новую форму с конкретным владельцем. Еще один фрагмент программы посвящен созданию кнопки: _ _fastcall TForm1::TForm1 (TComponent* Owner): TForm (Owner) { TButton *b = new TButton (this); b–>Parent = this; b–>Name = “NewButton”; b–>Width = 100; b–>Height = 30; b–>Left = 10; b–>Top =10; b–>Caption = “Новая кнопка”; b–>Visible = true; b–>OnClick = MyClick; } Текст обработчика этой кнопки:

19 void _ _fastcall TForm1::MyClick (TObject *Sender) { ShowMessage (“Привет”); } Программирование графики Графические объекты строятся на канве, являющейся свойством формы и ряда визуальных компонентов. Табл. 4 посвящена характерным методам формирования графических образов канвы. Таблица 4 Методы работы на канве Метод Назначение Arc Строит дугу внутри заданной области Chord Строит сектор эллипса по хорде CopyRect Копирует фрагмент изображения с другой канвы Draw Создает графический объект с заданными свойствами и координатами Ellipse Строит эллипс в заданных границах FillRect Строит прямоугольную область с заданным свойством Brush FloodFill Заполняет пространство канвы заданным свойством Brush FrameRect Строит прямоугольник с границами, заданными свойством Brush LineTo Ведет линию из позиции PenPos в точку с координатами X–1 и Y–1 MoveTo Переносит позицию рисования в точку с координатами X–1 и Y–1 Pie Строит сектор эллипса внутри заданного прямоугольника Polygon Строит замкнутый контур из отрезков, проходящих через заданные точки PolyLine Строит ломаную из отрезков, проходящих через заданные точки Rectangle Строит прямоугольник через левый верхний и правый нижний углы RoundRect Строит прямоугольник с закругленными углами StretchDraw Вписывает изображение в прямоугольник, автоматически масштабируя TextHeight Возвращает высоту текстовой строки на рисунке TextOut Формирует строку текста из точки с X и Y, перенося в конец ее курсор TextWidth Возвращает ширину текстовой строки на рисунке TextRect Размещает фрагмент строки в заданной области, обрезая излишки В следующем примере показан обработчик события формы FormPaint, рисующий Андреевский флаг: void _ _fastcall TAboutBox::FormPaint (TObject *Sender) { Canvas–>Brush–>Color = clBlue; Canvas–>FillRect (Rect (0,0,ClientWidth, ClientHeight)); Canvas–>Pen–>Color = clWhite; Canvas–>Pen–>Width = 20; Canvas–>MoveTo (0,0); Canvas–>LineTo (ClientWidth, ClientHeight); Canvas–>MoveTo (0,ClientHeight);

18<br />

create forms вкладки Forms (меню Project.Options) или просто вычеркнуть<br />

соответствующие строки из WinMain, а в нужном месте программы создавать<br />

их и открывать не модально методом Show или модально методом ShowModal.<br />

В следующем примере в форме MainForm по щелчку кнопки Button1 создаются<br />

три формы: не модаль<strong>на</strong>я форма ModelessForm, модаль<strong>на</strong>я форма<br />

ModalForm, объявлен<strong>на</strong>я глобальной переменной в файле заголовка, и модаль<strong>на</strong>я<br />

форма LocalForm, не связан<strong>на</strong>я с глобальной переменной:<br />

#include <br />

#include "Unit1.h"<br />

#include "Unit2.h"<br />

#include "Unit3.h"<br />

TForm1 *Form1;<br />

__fastcall TForm1::TForm1 (TComponent* Owner): TForm (Owner) {<br />

ModelessForm–>Show();<br />

ModalForm = new TModalForm (this); // при <strong>на</strong>личии<br />

ModalForm–>ShowModal();<br />

// глобального<br />

delete ModalForm;<br />

// определения<br />

TLocalForm *LocalForm = new TLocalForm (0); // вместо<br />

LocalForm–>ShowModal();<br />

// глобального<br />

delete LocalForm;<br />

// определения<br />

ModelessForm–>Close();<br />

}<br />

В программе использован аргумент this, указывающий <strong>на</strong> владельца<br />

TMainForm, и аргумент 0, не связывающий новую форму с конкретным владельцем.<br />

Еще один фрагмент программы посвящен созданию кнопки:<br />

_ _fastcall TForm1::TForm1 (TComponent* Owner): TForm (Owner) {<br />

TButton *b = new TButton (this);<br />

b–>Parent = this;<br />

b–>Name = “NewButton”;<br />

b–>Width = 100;<br />

b–>Height = 30;<br />

b–>Left = 10;<br />

b–>Top =10;<br />

b–>Caption = “Новая кнопка”;<br />

b–>Visible = true;<br />

b–>OnClick = MyClick;<br />

}<br />

Текст обработчика этой кнопки:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!