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