MathgeomGLS

Форк
0
/
faDerivative.pas 
203 строки · 4.5 Кб
1
unit faDerivative;
2

3
interface
4

5
uses
6
  Winapi.Windows,
7
  Winapi.Messages,
8
  System.SysUtils,
9
  System.Variants,
10
  System.Classes,
11
  Vcl.Graphics,
12
  Vcl.Controls,
13
  Vcl.Forms,
14
  Vcl.Dialogs,
15
  Vcl.Buttons,
16
  Vcl.ComCtrls,
17
  Vcl.StdCtrls,
18
  Vcl.ExtCtrls,
19

20
  Graf.Global1d;
21

22
type
23
  TDerivativeForm = class(TForm)
24
    Label1: TLabel;
25
    Edityfx1Pen: TEdit;
26
    UpDown1: TUpDown;
27
    SpeedButton1: TSpeedButton;
28
    Label2: TLabel;
29
    Edityfx2Pen: TEdit;
30
    UpDown2: TUpDown;
31
    SpeedButton2: TSpeedButton;
32
    BitBtn1: TBitBtn;
33
    ColorDialog: TColorDialog;
34
    Panel1: TPanel;
35
    Panel2: TPanel;
36
    procedure FormShow(Sender: TObject);
37
    procedure BitBtn1Click(Sender: TObject);
38
    procedure IntKeyPress(Sender: TObject; var Key: Char);
39
    procedure Edityfx1PenKeyUp(Sender: TObject; var Key: Word;
40
                                Shift: TShiftState);
41
    procedure Edityfx2PenKeyUp(Sender: TObject; var Key: Word;
42
                                  Shift: TShiftState);
43
    procedure Edityfx1PenChange(Sender: TObject);
44
    procedure Edityfx2PenChange(Sender: TObject);
45
    procedure ColorClick(Sender: TObject);
46
  public
47
    procedure ShowData;
48
  end;
49

50
var
51
  DerivativeForm: TDerivativeForm;
52

53
//====================================================================
54
implementation
55
//====================================================================
56

57
uses
58
  faFunc1d,
59
  faGraf1D;
60

61
{$R *.dfm}
62

63
procedure TDerivativeForm.FormShow(Sender: TObject);
64
begin
65
  ShowData;
66
end;
67

68
procedure TDerivativeForm.BitBtn1Click(Sender: TObject);
69
begin
70
  Close;
71
end;
72

73
procedure TDerivativeForm.ShowData;
74
begin
75
  Label2.Visible := FunctionsForm.yfx2.Checked;
76
  Edityfx2Pen.Visible := Label2.Visible;
77
  UpDown2.Visible := Label2.Visible;
78
  SpeedButton2.Visible := Label2.Visible;
79
  Panel2.Visible := Label2.Visible;
80
  with GraphData do
81
  begin
82
    if PlotData.TextStr = '' then Caption := ''
83
    else Caption := 'y = '+PlotData.TextStr;
84
    Edityfx1Pen.Text := IntToStr(dydxWidth);
85
    Edityfx2Pen.Text := IntToStr(d2ydx2Width);
86
    UpDown1.Position := dydxWidth;
87
    UpDown2.Position := d2ydx2Width;
88
    Panel1.Color := dydxColor;
89
    Panel2.Color := d2ydx2Color;
90
    if PlotData.PlotAsFx then
91
    begin
92
      Label1.Caption := 'f ''(x) Pen Width:';
93
      Label2.Caption := 'f "(x) Pen Width:';
94
      SpeedButton1.Caption := 'f &''(x) Colour';
95
      SpeedButton2.Caption := '&f "(x) Colour';
96
    end
97
    else
98
    begin
99
      Label1.Caption := 'f ''(�) Pen Width:';
100
      Label2.Caption := 'f "(�) Pen Width:';
101
      SpeedButton1.Caption := 'f &''(�) Colour';
102
      SpeedButton2.Caption := '&f "(�) Colour';
103
    end;
104
  end;
105
  MainForm.GLViewer.Invalidate;
106
end;
107

108
procedure TDerivativeForm.ColorClick(Sender: TObject);
109
var
110
  i: integer;
111

112
begin
113
  with GraphData do
114
  begin
115
    if Sender.ClassType = TPanel
116
    then i := TPanel(Sender).Tag
117
    else i := TSpeedButton(Sender).Tag;
118

119
    case i of
120
    0:ColorDialog.Color := GraphData.dydxColor;
121
    1:ColorDialog.Color := GraphData.d2ydx2Color;
122
    end;
123
    if ColorDialog.Execute then
124
    begin
125
      case i of
126
      0:begin
127
          GraphData.dydxColor := ColorDialog.Color;
128
          Panel1.Color := ColorDialog.Color;
129
        end;
130
      1:begin
131
          GraphData.d2ydx2Color := ColorDialog.Color;
132
          Panel2.Color := ColorDialog.Color;
133
        end;
134
      end;
135
      Altered := true;
136
      MainForm.GLViewer.Invalidate;
137
    end;
138
  end;
139
end;
140

141
procedure TDerivativeForm.IntKeyPress(Sender: TObject; var Key: Char);
142
begin
143
  with Sender as TEdit do if not CharInset(Key, ['0'..'9', #8]) then Key := #0
144
end;
145

146
procedure TDerivativeForm.Edityfx1PenKeyUp(Sender: TObject; var Key: Word;
147
                                            Shift: TShiftState);
148
var
149
  x: integer;
150

151
begin
152
  try
153
    x := StrToInt(Edityfx1Pen.Text);
154
  except
155
    x := 1;
156
  end;
157
  if x < 1 then x := 1;
158
  GraphData.dydxWidth := x;
159
  Altered := true;
160
  MainForm.GLViewer.Invalidate;
161
end;
162

163
procedure TDerivativeForm.Edityfx2PenKeyUp(Sender: TObject; var Key: Word;
164
                                             Shift: TShiftState);
165
var
166
  x: integer;
167

168
begin
169
  try
170
    x := StrToInt(Edityfx2Pen.Text);
171
  except
172
    x := 1;
173
  end;
174
  if x < 1 then x := 1;
175
  GraphData.d2ydx2Width := x;
176
  Altered := true;
177
  MainForm.GLViewer.Invalidate;
178
end;
179

180
procedure TDerivativeForm.Edityfx1PenChange(Sender: TObject);
181
var
182
  k: word;
183
begin
184
  if Visible then
185
  begin
186
    k := 0;
187
    Edityfx1PenKeyUp(Sender, k, []);
188
  end;
189
end;
190

191
procedure TDerivativeForm.Edityfx2PenChange(Sender: TObject);
192
var
193
  k: word;
194

195
begin
196
  if Visible then
197
  begin
198
    k := 0;
199
    Edityfx2PenKeyUp(Sender, k, []);
200
  end;
201
end;
202

203
end.
204

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.