Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive
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);
- Page 1 and 2: Федеральное агентс
- Page 3 and 4: Оглавление Предисл
- Page 5 and 6: 5 Предисловие Напра
- Page 7 and 8: 7 Введение в процед
- Page 9 and 10: 9 которые использую
- Page 11 and 12: 11 [Модификатор] [тип
- Page 13 and 14: 13 В ответ на вызов к
- Page 15 and 16: 15 Данные в определе
- Page 17: 17 Здесь при выборе
- Page 21 and 22: 21 фигурные скобки.
- Page 23 and 24: 23 Типы указываются
- Page 25 and 26: 25 Простые оператор
- Page 27 and 28: Метод IsDelimiter (AnsiString&
- Page 29 and 30: 29 Variant v = Edit3->Text; Label3-
- Page 31 and 32: 31 6. Как передаются
- Page 33 and 34: Условный оператор 3
- Page 35 and 36: } 35 case 4: day = "Четверг"
- Page 37 and 38: 37 void Whiles1 () { int temp = 10,
- Page 39 and 40: 39 В следующем приме
- Page 41 and 42: 41 Число байтов, выд
- Page 43 and 44: Перестановки и сор
- Page 45 and 46: } 45 for (int i=1; i=0 + 1; - -j) i
- Page 47 and 48: 47 нять, создавать с
- Page 49 and 50: lb->LoadFromFile (“1.txt”); Sho
- Page 51 and 52: 51 При передаче в фу
- Page 53 and 54: 53 } // 0 1 Иванов 2 Петр
- Page 55 and 56: 55 void Info (TList *vl) { AnsiStri
- Page 57 and 58: Allocate (k[0], k[1], book1); Alloc
- Page 59 and 60: 59 else ShowMessage ("Такой ч
- Page 61 and 62: 61 for (rj=n.rbegin (); rj!=n.rend
- Page 63 and 64: int i, d[] = { 5, 2, 3, 8, 3, 1, 3
- Page 65 and 66: 22. Каков принцип де
- Page 67 and 68: StringGrid1->Cells[0][j] = myS[j].a
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 />
Текст обработчика этой кнопки: