Таблиця 2.2 Властивості компоненту Button
Властивості | Опис |
Caption: string | Заголовок компоненту |
Cursor: TCursor | Тип курсору, коли він знаходиться на компоненті |
Enabled: Boolean | Вмикання/вимикання кнопки |
Font: TFont | Параметри шрифту |
Height: integer | Висота компонента в пікселях |
Left: integer | Положення компонента по горизонталі |
ModalResult: TModalResult | Результат модального вікна |
Name | Ім'я компонента |
Style: TButtonStyle | Стиль кнопки bsCommandLink – кнопка-посилання bsPushButton - звичайний стиль кнопки bsSplitButton - кнопка з випадаючого меню |
Top: integer | Положення компонента по вертикалі |
Visible: Boolean | Показує чи видимий компонент в даний час |
Width: integer | Ширина компонента в пікселях |
Дозволяє створювати сторінки, керовані закладками чи іншими органами управління, для економії місця в програмі. Багатосторінкові панелі дозволяють заощаджувати простір вікна додатку, розміщуючи на одному і тому ж місці сторінки різного змісту..
Таблиця 2.3 Властивості компоненту PageControl
Властивості | Опис |
Align: TAlignPosition | Вирівнювання компонента, по якомусь краю або по всій формі |
Caption: string | Заголовок компоненту |
Cursor: TCursor | Тип курсору, коли він знаходиться на компоненті |
Height: integer | Висота компонента в пікселях |
Left: integer | Положення компонента по горизонталі |
Name | Ім’я компонента |
Style: TButtonStyle | Стиль компонента tsTabs - Закладки tsButtons - Кнопки tsFlatButtons - Пласкі кнопки |
TabIndex: integer | Поточна закладка |
TabPosition: TTabPosition | Положення компонента tsTop - зверху tsRight - справа tsBottom - знизу tsLeft - зліва |
Top: integer | Положення компонента по вертикалі |
Visible: Boolean | Показує чи видимий компонент в даний час |
Width: integer | Ширина компонента в пікселях |
Дозволяє конструювати та створювати смугу головного меню форми та випадаючі меню. MainMenu — це не візуальний компонент, тобто місце його розміщення на формі в процесі проектування не має ніякого значення для користувача — він все одно побачить не сам компонент, а тільки меню, генероване ним.
Таблиця 2.4 Властивості компоненту MainMenu
Властивості | Опис |
AutoHotkeys | maAutomatic maManual |
AutoLineReduction | maAutomatic maManual |
Images: TImageList | Підключаемий компонент ImageList |
Items: TMenuItem | Елементи меню |
Дозволяє користувачеві вмикати та вимикати опції програми. Індикатори з прапорцем CheckBox використовуються в додатках в основному для того, щоб користувач міг вмикати та вимикати якісь параметри, або для індикації стану. При кожному натисканні користувача на індикатор його стан змінюється, проходячи в загальному випадку послідовно через три значення: виділення (поява чорної галочки), проміжне (сіре вікно індикатора та сіра пташка) і не виділене (порожнє вікно індикатора). Цим трьом станам відповідають три значення властивості компоненту State: cbChecked, cbGrayed, cbUnchecked
Таблиця 2.5 Властивості компоненту CheckBox
Властивості | Опис |
Caption: string | Заголовок компоненту |
Checked | Вимкнений компонент чи ні |
Enabled: Boolean | Вмикання/вимикання кнопки |
Font: TFont | Параметри шрифту |
Height: integer | Висота компонента в пікселях |
Left: integer | Положення компонента по горизонталі |
Name | Ім'я компонента |
State: | cbUnchecked cbGrayed cbChecked |
Top: integer | Положення компонента по вертикалі |
Visible: Boolean | Показує чи видимий компонент в даний час |
Width: integer | Ширина компонента в пікселях |
Компонент TrackBar являє собою елемент управління у вигляді повзунка, який користувач може переміщати курсором миші або клавішами клавіатури під час роботи додатку. Таким чином, користувач може керувати якимись процесами: гучністю звуку, розміром зображення і т. п. TrackBar може розташовуватися горизонтально, вертикально, мати шкалу з різних сторін і якийсь виділений діапазон шкали.
Таблиця 2.6 Властивості компоненту TrackBar
Властивості | Опис |
Frequency: integer | Заголовок компоненту |
Height: integer | Висота компонента в пікселях |
Left: integer | Положення компонента по горизонталі |
Max: integer | Максимальне значення |
Min: integer | Мінімальне значення |
Name | Ім'я компонента |
Orientation | trVertical trHorizontal |
Position: integer | Позиція |
TickMarks | tmBoth tmBottomRight tmTopLeft |
TickStyle | tsManual tsAuto tsNone |
Компонент являє собою комбінований список, опціями якого є кольору, тобто призначений для відображення і вибору кольору. На відміну від компонентів ColorGrid і ColorDialog - склад відображаємих ім кольорів може змінюватися. Багато які властивості, методи та події компонента збігаються з однойменною властивостями, методами і подіями його найближчого родича - компонента CоmbоВох.
Таблица 2.7 Властивості компоненту ColorBox
Властивості | Опис |
DefaultColorColor: Tcolor | Стандартний колір |
Enabled: Boolean | Вмикання/вимикання кнопки |
Font: TFont | Параметри шрифту |
Height: integer | Висота компонента в пікселях |
Left: integer | Положення компонента по горизонталі |
Name | Ім'я компонента |
Selected: TColor | Вибраний колір |
Style | cbStandartColors cbExtendedColor cbSystemColors |
Top: integer | Положення компонента по вертикалі |
Visible: Boolean | Показує чи видимий компонент в даний час |
Width: integer | Ширина компонента в пікселях |
Компоненти Image та PaintBox представляють собою деяку обмежену поверхню з канвою, на яку можна заносити зображення. При цьому компонент PaintBox, власне кажучи, не дає нічого нового порівняно з малюванням на канві форми. Малювання на PaintBox замість форми не має ніяких переваг, окрім як деякого полегшення у розташуванні одного чи декількох малюнків на площі вікна.
2.3 Структура взаємозв’язку компонентів
Рисунок 2.3 Структура взаємозв’язку компонентів
2.4 Програмний код програми
unit frmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, Menus, StdCtrls, Buttons, ComCtrls, ShellAPI, IniFiles;
type
TMainForm = class(TForm)
AxisPanel: TPaintBox;
MainMenu1: TMainMenu;
Action1: TMenuItem;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
editA: TEdit;
editB: TEdit;
editC: TEdit;
GroupBox3: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
editX: TEdit;
editY: TEdit;
editZ: TEdit;
AnalyticsExecution1: TMenuItem;
Quickcalculation1: TMenuItem;
GroupBox4: TGroupBox;
checkScale: TCheckBox;
checkGrid: TCheckBox;
checkFrame: TCheckBox;
checkNumber: TCheckBox;
GroupBox5: TGroupBox;
cbVector: TColorBox;
Label8: TLabel;
Label9: TLabel;
cbAxis: TColorBox;
Label10: TLabel;
cbFrame: TColorBox;
N1: TMenuItem;
butSave: TButton;
butDraw: TButton;
tbScale: TTrackBar;
StatusBar1: TStatusBar;
N2: TMenuItem;
Label4: TLabel;
EditM: TEdit;
butCalc: TButton;
procedure AxisPanelPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure butCalcClick(Sender: TObject);
procedure ShowOrigData(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure DrawChange(Sender: TObject);
procedure butDrawClick(Sender: TObject);
procedure Howtouse1Click(Sender: TObject);
procedure editExit(Sender: TObject);
procedure miAboutClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure butSaveClick(Sender: TObject);
procedure tbScaleChange(Sender: TObject);
procedure checkScaleClick(Sender: TObject);
procedure N2Click(Sender: TObject);
private
procedure DrawLineCustom(ax,ay,az,bx,by,bz: integer; width: byte);
procedure DrawGrid(ax,ay,az,bx,by,bz: integer);
procedure DrawText(text: string; px, py: integer);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
cp: TPoint;
drawVector, drawArc: boolean;
vectorx, vectory, vectorz: integer;
dp, dph: integer;
step: integer;
const
xmin = -10; xmax = 10;
ymin = -14; ymax = 10;
zmin = -10; zmax = 10;
implementation
uses
frmOrig, frmAbout;
{$R *.dfm}
//-------------
{Рисование произвольной линии}
procedure TMainForm.DrawLineCustom(ax,ay,az,bx,by,bz: integer; width: byte);
begin
AxisPanel.Canvas.Pen.Width:=width;
AxisPanel.Canvas.MoveTo(cp.X + (ay*dp) - (ax*dph),
cp.Y + (ax*dph) - (az*dp));
AxisPanel.Canvas.LineTo(cp.X + (by*dp) - (bx*dph),
cp.Y + (bx*dph) - (bz*dp));
end;
{Вывод текста}
procedure TMainForm.DrawText(text: string; px, py: integer);
begin
AxisPanel.Canvas.TextOut(px,py,text);
end;
{Рисование сетки}
procedure TMainForm.DrawGrid(ax,ay,az,bx,by,bz: integer);
begin
AxisPanel.Canvas.Pen.Style:=psDot;
DrawLineCustom(ax,ay,az,bx,by,bz,1);
end;
{Прорисовка всего и вся}
procedure TMainForm.AxisPanelPaint(Sender: TObject);
var
i, num: integer;
vx,vy,vz: integer;
begin
with AxisPanel.Canvas do
begin
//Центр оси координат
cp.X:=AxisPanel.Width div 2;
cp.Y:=AxisPanel.Height div 2;
//Рамка
Pen.Color:=clBlack;
Rectangle(0,0,AxisPanel.Width, AxisPanel.Height);