Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
28.06.2014
Размер:
6 Кб
Скачать
☆
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, SkinBoxCtrls, SkinCtrls, StdCtrls, Mask, ComCtrls, SkinTabs, ExtCtrls, unit4, unit5,
  jpeg, EasyGraph, DynamicSkinForm, SkinData, spSkinShellCtrls;

type
  TForm2 = class(TForm)
    spSkinPageControl1: TspSkinPageControl;
    spSkinTabSheet1: TspSkinTabSheet;
    spSkinTabSheet4: TspSkinTabSheet;
    Image3: TImage;
    Chk2: TspSkinCheckRadioBox;
    chk3: TspSkinCheckRadioBox;
    chk4: TspSkinCheckRadioBox;
    CHk1: TspSkinCheckRadioBox;
    spSkinCheckRadioBox1: TspSkinCheckRadioBox;
    spSkinCheckRadioBox2: TspSkinCheckRadioBox;
    spSkinCheckRadioBox3: TspSkinCheckRadioBox;
    spSkinEdit12: TspSkinEdit;
    spSkinLabel17: TspSkinLabel;
    EasyGraph4: TEasyGraph;
    spSkinLabel1: TspSkinLabel;
    spSkinLabel3: TspSkinLabel;
    spSkinLabel4: TspSkinLabel;
    spSkinLabel5: TspSkinLabel;
    spSkinLabel6: TspSkinLabel;
    spSkinPanel1: TspSkinPanel;
    spSkinPanel2: TspSkinPanel;
    Image1: TImage;
    lblTime: TspSkinLabel;
    lblX: TspSkinLabel;
    lblY: TspSkinLabel;
    spSkinLabel7: TspSkinLabel;
    spDynamicSkinForm1: TspDynamicSkinForm;
    spSkinData1: TspSkinData;
    spCompressedStoredSkin1: TspCompressedStoredSkin;
    Button1: TspSkinButton;
    spSkinLabel2: TspSkinLabel;
    spSkinNumericEdit1: TspSkinNumericEdit;
    spSkinNumericEdit2: TspSkinNumericEdit;
    spSkinLabel8: TspSkinLabel;
    spSkinLabel9: TspSkinLabel;
    spSkinButton1: TspSkinButton;
    procedure FormCreate(Sender: TObject);
    procedure chk3Click(Sender: TObject);
    procedure spSkinCheckRadioBox3Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1Click(Sender: TObject);
    procedure spSkinEdit12Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Image1MouseLeave(Sender: TObject);
    procedure spSkinButton1Click(Sender: TObject);
    procedure spSkinPanel2MouseLeave(Sender: TObject);
  private
     t: TGraphicsRunge;
//prog: trunge;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation
uses math, password;

{$R *.dfm}


procedure TForm2.Button1Click(Sender: TObject);
var i: integer;
  p,q: double;
begin
    EasyGraph4.Series[0].Clear;
      for i := 0 to t.RightInd-1 do begin
      p:=t.GetInd(i,1);
      q:=t.GetInd(i,3);
      EasyGraph4.Series[0].Add(p,q);
    end;
end;

procedure TForm2.chk3Click(Sender: TObject);
var i: integer;
begin
  if (sender as TspSkinCheckRadioBox) = chk1 then i:=0
  else if (sender as TspSkinCheckRadioBox) = chk2 then i:=1
  else if (sender as TspSkinCheckRadioBox) = chk3 then i:=2
  else i:=3;
  t.Visible[i]:=(sender as TspSkinCheckRadioBox).Checked;
end;

procedure TForm2.FormCreate(Sender: TObject);
var prog: CRunge;
begin
  if spSkinCheckRadioBox1.Checked then
    prog:=TProg1
  else if spSkinCheckRadioBox2.Checked then
    prog:=TProg2
  else //if spSkinCheckRadioBox3.Checked then
    prog:=TProg3;
  t:=TGraphicsRunge.Assign(Prog);
  t.eps:=strtofloat(spSkinEdit12.Text);
  t.Canvas:=Image1.Canvas;
  t.Size:=Point(Image1.Width, Image1.Height);
  chk1.Checked:=t.Visible[0];
  chk2.Checked:=t.Visible[1];
  chk3.Checked:=t.Visible[2];
  chk4.Checked:=t.Visible[3];
  t.Rect:=SRect(-5,-10,5,10);
  EasyGraph4.Series.add;
  EasyGraph4.Series[0].DrawStyle:=dsPoints;
  EasyGraph4.VisRect:=rect2d(-100,-100,100,100);
end;



procedure TForm2.Image1Click(Sender: TObject);
begin
  t.MouseClick;
end;

procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  t.MouseDown(Button, Shift, X, Y);
end;

procedure TForm2.Image1MouseLeave(Sender: TObject);
begin
  lblX.Caption:='-';
  lblY.Caption:='-';
  t.MouseLeave;
end;

procedure TForm2.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var i: integer;
begin
  lblX.Caption:=floattostrf(X*t.ScaleX+t.Rect.EXa, ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
  lblY.Caption:=floattostrf(-Y*t.Scaley+t.Rect.EYB,ffGeneral,round(-Log10(t.eps))+1,round(-Log10(t.eps))+1);
  t.MouseMove(Shift,X,Y);
  if spSkinCheckRadioBox2.Checked then begin
    Image1.Canvas.Pen.Color:=clLime;
    image1.Canvas.MoveTo(0,round((-sin(t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
    for i := 0 to image1.Width do
      image1.Canvas.lineTo(i, round((-sin(i*t.ScaleX+t.Rect.EXa) + t.rect.eYB)/t.ScaleY));
  end else  if spSkinCheckRadioBox3.Checked then begin
    Image1.Canvas.Pen.Color:=clLime;
    image1.Canvas.MoveTo(0,round((-exp(t.Rect.EXa)-1 + t.rect.eYB)/t.ScaleY));
    for i := 0 to image1.Width do
      image1.Canvas.lineTo(i, round((-exp(i*t.ScaleX+t.Rect.EXa) - (1)+ t.rect.eYB)/t.ScaleY));
  end;

end;

procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  t.MouseUp(Button, Shift, X,Y);
end;

procedure TForm2.spSkinButton1Click(Sender: TObject);
var xa, xb, ya, yb: double;
begin
  xb:=spSkinNumericEdit1.Value;
  xa:=spSkinNumericEdit2.Value;
  if xa = xb then exit;
  if xb < xa then begin
    ya:=max(xa, 0.5);
    yb:=min(xb, -0.5);
  end else begin
    ya:=min(xa, -0.5);
    yb:=max(xb, 0.5);
  end;

  t.Rect:=SRect(xa, ya, xb, yb);
end;

procedure TForm2.spSkinCheckRadioBox3Click(Sender: TObject);
begin
  if t <> nil then
    t.Free;
  FormCreate(self);
end;

procedure TForm2.spSkinEdit12Change(Sender: TObject);
begin
  try
    t.eps:= strtofloat(spSkinEdit12.Text);
    t.ReCreateArr;
    t.Redraw;
  except

  end;
end;

procedure TForm2.spSkinPanel2MouseLeave(Sender: TObject);
begin

//  Mouse.CursorPos.X
  end;

end.
Соседние файлы в папке Runge