MathgeomGLS
203 строки · 4.5 Кб
1unit faDerivative;
2
3interface
4
5uses
6Winapi.Windows,
7Winapi.Messages,
8System.SysUtils,
9System.Variants,
10System.Classes,
11Vcl.Graphics,
12Vcl.Controls,
13Vcl.Forms,
14Vcl.Dialogs,
15Vcl.Buttons,
16Vcl.ComCtrls,
17Vcl.StdCtrls,
18Vcl.ExtCtrls,
19
20Graf.Global1d;
21
22type
23TDerivativeForm = class(TForm)
24Label1: TLabel;
25Edityfx1Pen: TEdit;
26UpDown1: TUpDown;
27SpeedButton1: TSpeedButton;
28Label2: TLabel;
29Edityfx2Pen: TEdit;
30UpDown2: TUpDown;
31SpeedButton2: TSpeedButton;
32BitBtn1: TBitBtn;
33ColorDialog: TColorDialog;
34Panel1: TPanel;
35Panel2: TPanel;
36procedure FormShow(Sender: TObject);
37procedure BitBtn1Click(Sender: TObject);
38procedure IntKeyPress(Sender: TObject; var Key: Char);
39procedure Edityfx1PenKeyUp(Sender: TObject; var Key: Word;
40Shift: TShiftState);
41procedure Edityfx2PenKeyUp(Sender: TObject; var Key: Word;
42Shift: TShiftState);
43procedure Edityfx1PenChange(Sender: TObject);
44procedure Edityfx2PenChange(Sender: TObject);
45procedure ColorClick(Sender: TObject);
46public
47procedure ShowData;
48end;
49
50var
51DerivativeForm: TDerivativeForm;
52
53//====================================================================
54implementation
55//====================================================================
56
57uses
58faFunc1d,
59faGraf1D;
60
61{$R *.dfm}
62
63procedure TDerivativeForm.FormShow(Sender: TObject);
64begin
65ShowData;
66end;
67
68procedure TDerivativeForm.BitBtn1Click(Sender: TObject);
69begin
70Close;
71end;
72
73procedure TDerivativeForm.ShowData;
74begin
75Label2.Visible := FunctionsForm.yfx2.Checked;
76Edityfx2Pen.Visible := Label2.Visible;
77UpDown2.Visible := Label2.Visible;
78SpeedButton2.Visible := Label2.Visible;
79Panel2.Visible := Label2.Visible;
80with GraphData do
81begin
82if PlotData.TextStr = '' then Caption := ''
83else Caption := 'y = '+PlotData.TextStr;
84Edityfx1Pen.Text := IntToStr(dydxWidth);
85Edityfx2Pen.Text := IntToStr(d2ydx2Width);
86UpDown1.Position := dydxWidth;
87UpDown2.Position := d2ydx2Width;
88Panel1.Color := dydxColor;
89Panel2.Color := d2ydx2Color;
90if PlotData.PlotAsFx then
91begin
92Label1.Caption := 'f ''(x) Pen Width:';
93Label2.Caption := 'f "(x) Pen Width:';
94SpeedButton1.Caption := 'f &''(x) Colour';
95SpeedButton2.Caption := '&f "(x) Colour';
96end
97else
98begin
99Label1.Caption := 'f ''(�) Pen Width:';
100Label2.Caption := 'f "(�) Pen Width:';
101SpeedButton1.Caption := 'f &''(�) Colour';
102SpeedButton2.Caption := '&f "(�) Colour';
103end;
104end;
105MainForm.GLViewer.Invalidate;
106end;
107
108procedure TDerivativeForm.ColorClick(Sender: TObject);
109var
110i: integer;
111
112begin
113with GraphData do
114begin
115if Sender.ClassType = TPanel
116then i := TPanel(Sender).Tag
117else i := TSpeedButton(Sender).Tag;
118
119case i of
1200:ColorDialog.Color := GraphData.dydxColor;
1211:ColorDialog.Color := GraphData.d2ydx2Color;
122end;
123if ColorDialog.Execute then
124begin
125case i of
1260:begin
127GraphData.dydxColor := ColorDialog.Color;
128Panel1.Color := ColorDialog.Color;
129end;
1301:begin
131GraphData.d2ydx2Color := ColorDialog.Color;
132Panel2.Color := ColorDialog.Color;
133end;
134end;
135Altered := true;
136MainForm.GLViewer.Invalidate;
137end;
138end;
139end;
140
141procedure TDerivativeForm.IntKeyPress(Sender: TObject; var Key: Char);
142begin
143with Sender as TEdit do if not CharInset(Key, ['0'..'9', #8]) then Key := #0
144end;
145
146procedure TDerivativeForm.Edityfx1PenKeyUp(Sender: TObject; var Key: Word;
147Shift: TShiftState);
148var
149x: integer;
150
151begin
152try
153x := StrToInt(Edityfx1Pen.Text);
154except
155x := 1;
156end;
157if x < 1 then x := 1;
158GraphData.dydxWidth := x;
159Altered := true;
160MainForm.GLViewer.Invalidate;
161end;
162
163procedure TDerivativeForm.Edityfx2PenKeyUp(Sender: TObject; var Key: Word;
164Shift: TShiftState);
165var
166x: integer;
167
168begin
169try
170x := StrToInt(Edityfx2Pen.Text);
171except
172x := 1;
173end;
174if x < 1 then x := 1;
175GraphData.d2ydx2Width := x;
176Altered := true;
177MainForm.GLViewer.Invalidate;
178end;
179
180procedure TDerivativeForm.Edityfx1PenChange(Sender: TObject);
181var
182k: word;
183begin
184if Visible then
185begin
186k := 0;
187Edityfx1PenKeyUp(Sender, k, []);
188end;
189end;
190
191procedure TDerivativeForm.Edityfx2PenChange(Sender: TObject);
192var
193k: word;
194
195begin
196if Visible then
197begin
198k := 0;
199Edityfx2PenKeyUp(Sender, k, []);
200end;
201end;
202
203end.
204