mirror of
https://github.com/ulfgebhardt/delphi_plotter.git
synced 2025-12-12 15:25:53 +00:00
247 lines
6.7 KiB
ObjectPascal
247 lines
6.7 KiB
ObjectPascal
unit fgraph;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, ExtCtrls, StdCtrls, graph;
|
|
|
|
type
|
|
TfGraph = class(TForm)
|
|
ptop: TPanel;
|
|
pleft: TPanel;
|
|
pbottom: TPanel;
|
|
pright: TPanel;
|
|
pmiddle: TPanel;
|
|
iGraph: TImage;
|
|
lheader: TLabel;
|
|
lexit: TLabel;
|
|
lmax: TLabel;
|
|
lmin: TLabel;
|
|
Edit1: TEdit;
|
|
Button1: TButton;
|
|
procedure lexitMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
procedure lexitMouseLeave(Sender: TObject);
|
|
procedure lexitMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
procedure lmaxMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
procedure lmaxMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
procedure lmaxMouseLeave(Sender: TObject);
|
|
procedure FormPaint(Sender: TObject);
|
|
procedure FormResize(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure lminMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
procedure lminMouseLeave(Sender: TObject);
|
|
procedure lminClick(Sender: TObject);
|
|
procedure iGraphClick(Sender: TObject);
|
|
procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
|
|
MousePos: TPoint; var Handled: Boolean);
|
|
procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
|
|
MousePos: TPoint; var Handled: Boolean);
|
|
procedure Button1Click(Sender: TObject);
|
|
private
|
|
{ Private-Deklarationen }
|
|
public
|
|
{ Public-Deklarationen }
|
|
graph:TGraph;
|
|
end;
|
|
|
|
var
|
|
formGraph: TfGraph;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TfGraph.lexitMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
begin
|
|
|
|
lexit.Font.Color:=clred;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lexitMouseLeave(Sender: TObject);
|
|
begin
|
|
|
|
lexit.Font.Color:=clblack;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lexitMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
|
|
Application.Terminate;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lmaxMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
|
|
if formGraph.WindowState=wsmaximized then formGraph.WindowState:=wsnormal else formGraph.WindowState:=wsmaximized;
|
|
|
|
graph.drawAchsis;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lmaxMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
begin
|
|
|
|
lmax.Font.Color:=clred;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lmaxMouseLeave(Sender: TObject);
|
|
begin
|
|
|
|
lmax.Font.Color:=clblack;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.FormPaint(Sender: TObject);
|
|
var rgn: HRGN;
|
|
begin
|
|
|
|
if windowstate=wsmaximized then
|
|
begin
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
ClientWidth, // x-coordinate of the region's lower-right corner
|
|
ClientHeight, // y-coordinate of the region's lower-right corner
|
|
0, // height of ellipse for rounded corners
|
|
0); // width of ellipse for rounded corners
|
|
SetWindowRgn(Handle, rgn, True);
|
|
end else
|
|
begin
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
ClientWidth, // x-coordinate of the region's lower-right corner
|
|
ClientHeight, // y-coordinate of the region's lower-right corner
|
|
25, // height of ellipse for rounded corners
|
|
25); // width of ellipse for rounded corners
|
|
SetWindowRgn(Handle, rgn, True);
|
|
end;
|
|
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
pmiddle.Width, // x-coordinate of the region's lower-right corner
|
|
pmiddle.Height, // y-coordinate of the region's lower-right corner
|
|
25, // height of ellipse for rounded corners
|
|
25); // width of ellipse for rounded corners
|
|
SetWindowRgn(pmiddle.Handle, rgn, True);
|
|
|
|
end;
|
|
|
|
procedure TfGraph.FormResize(Sender: TObject);
|
|
var rgn: HRGN;
|
|
begin
|
|
|
|
if windowstate=wsmaximized then
|
|
begin
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
ClientWidth, // x-coordinate of the region's lower-right corner
|
|
ClientHeight, // y-coordinate of the region's lower-right corner
|
|
0, // height of ellipse for rounded corners
|
|
0); // width of ellipse for rounded corners
|
|
SetWindowRgn(Handle, rgn, True);
|
|
end else
|
|
begin
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
ClientWidth, // x-coordinate of the region's lower-right corner
|
|
ClientHeight, // y-coordinate of the region's lower-right corner
|
|
25, // height of ellipse for rounded corners
|
|
25); // width of ellipse for rounded corners
|
|
SetWindowRgn(Handle, rgn, True);
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.FormCreate(Sender: TObject);
|
|
var rgn: HRGN;
|
|
begin
|
|
|
|
rgn := CreateRoundRectRgn(0,// x-coordinate of the region's upper-left corner
|
|
0, // y-coordinate of the region's upper-left corner
|
|
ClientWidth, // x-coordinate of the region's lower-right corner
|
|
ClientHeight, // y-coordinate of the region's lower-right corner
|
|
25, // height of ellipse for rounded corners
|
|
25); // width of ellipse for rounded corners
|
|
SetWindowRgn(Handle, rgn, True);
|
|
|
|
graph:=TGraph.create;
|
|
|
|
graph.init(50,50,iGraph);
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lminMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
begin
|
|
|
|
lmin.Font.Color:=clred;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lminMouseLeave(Sender: TObject);
|
|
begin
|
|
|
|
lmin.Font.Color:=clblack;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.lminClick(Sender: TObject);
|
|
begin
|
|
|
|
Application.Minimize;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.iGraphClick(Sender: TObject);
|
|
var point:TPoint;
|
|
begin
|
|
|
|
getcursorpos(point);
|
|
|
|
graph.drawAchsis(point.x-formGraph.left-pleft.width,screen.Height-point.y-(screen.Height-formgraph.Height-formgraph.Top)-(formgraph.pbottom.Height));
|
|
|
|
end;
|
|
|
|
procedure TfGraph.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
|
|
MousePos: TPoint; var Handled: Boolean);
|
|
begin
|
|
|
|
graph.ZeichenAbstandX:=graph.ZeichenAbstandX-1;
|
|
graph.ZeichenAbstandY:=graph.ZeichenAbstandY-1;
|
|
graph.drawAchsis;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
|
|
MousePos: TPoint; var Handled: Boolean);
|
|
begin
|
|
|
|
graph.ZeichenAbstandX:=graph.ZeichenAbstandX+1;
|
|
graph.ZeichenAbstandY:=graph.ZeichenAbstandY+1;
|
|
graph.drawAchsis;
|
|
|
|
end;
|
|
|
|
procedure TfGraph.Button1Click(Sender: TObject);
|
|
begin
|
|
|
|
graph.drawFunction(edit1.Text);
|
|
|
|
end;
|
|
|
|
end.
|
|
|