Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрії. Обчислення проекцій вектора на координатні осі в простор |
table>|
Властивості | Опис | | 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); //Черчение трехмерной сетки if checkGrid.Checked then begin for i := 0 to 12 do begin DrawGrid(6, ymin + 2*i, zmax, -6, ymin + 2*i, zmax); //Сетка 1 DrawGrid(6, ymin + 2*i, 0, -6, ymin + 2*i, 0); //Сетка 2 DrawGrid(6, ymin + 2*i, zmin, -6, ymin + 2*i, zmin); //Сетка 3 if i < 7 then begin DrawGrid(-6 + 2*i, ymax, zmax, -6 + 2*i, ymin, zmax); DrawGrid(-6 + 2*i, ymax, 0, -6 + 2*i, ymin, 0); DrawGrid(-6 + 2*i, ymax, zmin, -6 + 2*i, ymin, zmin); end; if i < 4 then begin DrawGrid( 6 - 4*i, ymin, zmax, 6 - 4*i, ymin, zmin); DrawGrid(-6 + 4*i, ymax, zmax,-6 + 4*i, ymax, zmin); end; end; end; //Подписи осей и нумерация DrawText('X', cp.X - 10 * dph, cp.Y + 10 * dph); DrawText('Y', cp.X + 10 * dp, cp.Y); DrawText('Z', cp.X - 2, cp.Y - 11 * dp); if (checkNumber.Checked) then begin num := xmax; for i := 0 to 24 do begin if num <> 0 then begin DrawText(IntToStr(num),(cp.X + dp * 10) - (i * dp),cp.Y-15); if (i < 21) then DrawText(IntToStr(num),cp.X+5, (cp.Y - dp * 10)+(i * dp)-5); end; num := num - 1; end; end; //Координатные оси Pen.Color:=cbAxis.Selected; DrawLineCustom(xmin,0,0,xmax,0,0,2); DrawLineCustom(0,ymin,0,0,ymax,0,2); DrawLineCustom(0,0,zmin,0,0,zmax,2); //Каркас
Страницы: 1, 2, 3, 4
|