Смекни!
smekni.com

Розробка засобами Delphi дидактичного ілюстративного матеріалу для розвязання задачі з аналітичної Створення нескладних (стр. 3 из 4)

Таблиця 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.2.3 Компонент PageControl

Дозволяє створювати сторінки, керовані закладками чи іншими органами управління, для економії місця в програмі. Багатосторінкові панелі дозволяють заощаджувати простір вікна додатку, розміщуючи на одному і тому ж місці сторінки різного змісту..

Таблиця 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 Ширина компонента в пікселях

2.2.4 Компонент MainMenu

Дозволяє конструювати та створювати смугу головного меню форми та випадаючі меню. MainMenu — це не візуальний компонент, тобто місце його розміщення на формі в процесі проектування не має ніякого значення для користувача — він все одно побачить не сам компонент, а тільки меню, генероване ним.

Таблиця 2.4 Властивості компоненту MainMenu

Властивості Опис
AutoHotkeys maAutomatic maManual
AutoLineReduction maAutomatic maManual
Images: TImageList Підключаемий компонент ImageList
Items: TMenuItem Елементи меню

2.2.5 Компонент CheckBox

Дозволяє користувачеві вмикати та вимикати опції програми. Індикатори з прапорцем 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 Ширина компонента в пікселях

2.2.6 Компонент TrackBar

Компонент 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

2.2.7 Компонент ColorBox

Компонент являє собою комбінований список, опціями якого є кольору, тобто призначений для відображення і вибору кольору. На відміну від компонентів 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 Ширина компонента в пікселях

2.2.8 Компоненти Image і PaintBox

Компоненти 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);