MathgeomGLS
168 строк · 3.4 Кб
1unit fx1Value;
2
3interface
4
5uses
6Winapi.Windows,
7Winapi.Messages,
8System.SysUtils,
9System.Variants,
10System.Classes,
11Vcl.Graphics,
12Vcl.Controls,
13Vcl.Forms,
14Vcl.Dialogs,
15Vcl.StdCtrls,
16Vcl.Buttons,
17Vcl.Clipbrd,
18
19uGlobal;
20
21type
22Tfx1ValueForm = class(TForm)
23Label1: TLabel;
24Label2: TLabel;
25Label3: TLabel;
26Editfx1: TEdit;
27ListBox1: TListBox;
28RecalcBtn: TBitBtn;
29CloseBtn: TBitBtn;
30procedure FormShow(Sender: TObject);
31procedure FormActivate(Sender: TObject);
32procedure FormDeactivate(Sender: TObject);
33procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
34procedure FormDestroy(Sender: TObject);
35procedure Editfx1KeyPress(Sender: TObject; var Key: Char);
36procedure Editfx1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
37procedure RecalcBtnClick(Sender: TObject);
38procedure CloseBtnClick(Sender: TObject);
39procedure ListBox1Click(Sender: TObject);
40public
41DisplayOK: Boolean;
42fx1ValueToFind: extended;
43procedure ShowData;
44end;
45
46var
47fx1ValueForm: Tfx1ValueForm;
48
49//======================================================================
50implementation
51//======================================================================
52
53uses
54fPlot1D,
55fFuncts;
56
57{$R *.dfm}
58
59procedure Tfx1ValueForm.FormShow(Sender: TObject);
60begin
61ShowData;
62end;
63
64procedure Tfx1ValueForm.FormActivate(Sender: TObject);
65begin
66DisplayOK := true;
67end;
68
69procedure Tfx1ValueForm.FormDeactivate(Sender: TObject);
70begin
71DisplayOK := false;
72end;
73
74procedure Tfx1ValueForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
75begin
76with FunctionsForm.fx1Value do
77begin
78Checked := false;
79ImageIndex := 1;
80end;
81end;
82
83procedure Tfx1ValueForm.FormDestroy(Sender: TObject);
84var
85i: integer;
86
87begin
88with ListBox1 do
89begin
90for i := 0 to Count -1 do Items.Objects[i].Free;
91Clear;
92end;
93end;
94
95procedure Tfx1ValueForm.Editfx1KeyPress(Sender: TObject; var Key: Char);
96begin
97with Sender as TEdit do
98if not CharInSet(Key, ['-', '0'..'9', '.', 'e', 'E', #8]) then Key := #0
99end;
100
101procedure Tfx1ValueForm.Editfx1KeyUp(Sender: TObject; var Key: Word;
102Shift: TShiftState);
103begin
104try
105fx1ValueToFind := StrToFloat(Editfx1.Text);
106except
107fx1ValueToFind := 0;
108end;
109end;
110
111procedure Tfx1ValueForm.RecalcBtnClick(Sender: TObject);
112var
113i: integer;
114
115begin
116with ListBox1 do
117begin
118for i := 0 to Count -1 do Items.Objects[i].Free;
119Clear;
120end;
121MainForm.GLViewer.Invalidate;
122end;
123
124procedure Tfx1ValueForm.CloseBtnClick(Sender: TObject);
125begin
126Close;
127end;
128
129procedure Tfx1ValueForm.ListBox1Click(Sender: TObject);
130var
131w: word;
132i: integer;
133
134begin
135with ListBox1 do if Count > 0 then
136begin
137if FunctionsForm.EditEvaluate.Visible then
138begin
139FunctionsForm.EditEvaluate.Text := Trim(Copy(Items[ItemIndex], 1, 24));
140for i := 0 to Count -1 do Items.Objects[i].Free;
141Clear;
142FunctionsForm.EvaluateKeyUp(Sender, w, []);
143end
144else
145begin
146Clipboard.Clear;
147Clipboard.AsText := Trim(Copy(Items[ItemIndex], 1, 24));
148end;
149end;
150end;
151
152procedure Tfx1Valueform.ShowData;
153var
154i: integer;
155
156begin
157if GraphData.PlotData.TextStr = '' then Caption := ''
158else Caption := 'y = '+GraphData.PlotData.TextStr;
159Editfx1.Text := FloatToStr(fx1ValueToFind);
160with ListBox1 do
161begin
162for i := 0 to Count -1 do Items.Objects[i].Free;
163Clear;
164end;
165MainForm.GLViewer.Invalidate;
166end;
167
168end.
169