added lazplotpanel from Michael Van Canneyt

git-svn-id: trunk@17516 -
This commit is contained in:
mattias 2008-11-22 15:46:08 +00:00
parent ff1eb35eb3
commit 4b98f56f55
26 changed files with 7592 additions and 0 deletions

25
.gitattributes vendored
View File

@ -1029,6 +1029,30 @@ components/paradox/lazparadox.pas svneol=native#text/plain
components/paradox/regparadox.lrs svneol=native#text/plain
components/paradox/regparadox.pp svneol=native#text/plain
components/paradox/tparadox.png -text svneol=unset#image/png
components/plotpanel/demo/event/frmmain.lfm svneol=native#text/plain
components/plotpanel/demo/event/frmmain.lrs svneol=native#text/plain
components/plotpanel/demo/event/frmmain.pp svneol=native#text/plain
components/plotpanel/demo/event/ploteventdemo.ico -text svneol=unset#image/ico
components/plotpanel/demo/event/ploteventdemo.lpi svneol=native#text/plain
components/plotpanel/demo/event/ploteventdemo.lpr svneol=native#text/plain
components/plotpanel/demo/event/ploteventdemo.rc svneol=native#text/plain
components/plotpanel/demo/expression/exprdemo.ico -text svneol=unset#image/ico
components/plotpanel/demo/expression/exprdemo.lpi svneol=native#text/plain
components/plotpanel/demo/expression/exprdemo.lpr svneol=native#text/plain
components/plotpanel/demo/expression/exprdemo.lrs svneol=native#text/plain
components/plotpanel/demo/expression/exprdemo.rc svneol=native#text/plain
components/plotpanel/demo/expression/frmmain.lfm svneol=native#text/plain
components/plotpanel/demo/expression/frmmain.lrs svneol=native#text/plain
components/plotpanel/demo/expression/frmmain.pp svneol=native#text/plain
components/plotpanel/exprplotpanel.pp svneol=native#text/plain
components/plotpanel/lazplotpanel.lpk svneol=native#text/plain
components/plotpanel/lazplotpanel.pas svneol=native#text/plain
components/plotpanel/plotpanel.pp svneol=native#text/plain
components/plotpanel/readme.txt svneol=native#text/plain
components/plotpanel/regplotpanel.lrs svneol=native#text/plain
components/plotpanel/regplotpanel.pp svneol=native#text/plain
components/plotpanel/tplotexpressionpanel.png -text svneol=unset#image/png
components/plotpanel/tplotfunctionpanel.png -text svneol=unset#image/png
components/prettyformat/languages/pfidesource.de.po svneol=native#text/plain
components/prettyformat/languages/pfidesource.fr.po svneol=native#text/plain
components/prettyformat/languages/pfidesource.id.po svneol=native#text/plain
@ -4077,6 +4101,7 @@ packager/globallinks/lazdbexport-0.lpl svneol=native#text/plain
packager/globallinks/lazmouseandkeyinput-0.lpl svneol=native#text/plain
packager/globallinks/lazopenglcontext-0.lpl svneol=native#text/plain
packager/globallinks/lazparadox-0.lpl svneol=native#text/plain
packager/globallinks/lazplotpanel.lpl svneol=native#text/plain
packager/globallinks/lazreport-0.9.5.lpl svneol=native#text/plain
packager/globallinks/lazreportpdfexport-0.lpl svneol=native#text/plain
packager/globallinks/lazsvnpkg-0.lpl svneol=native#text/plain

View File

@ -0,0 +1,34 @@
object MainForm: TMainForm
Left = 401
Height = 300
Top = 309
Width = 400
HelpContext = 0
Align = alNone
AllowDropFiles = False
AutoScroll = True
AutoSize = False
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSizeable
Caption = 'Event-driven plotting demo'
ChildSizing.LeftRightSpacing = 0
ChildSizing.TopBottomSpacing = 0
ChildSizing.HorizontalSpacing = 0
ChildSizing.VerticalSpacing = 0
ChildSizing.ControlsPerLine = 0
DockSite = False
DragKind = dkDrag
DragMode = dmManual
Enabled = True
Font.Height = 0
Font.Style = []
FormStyle = fsNormal
OnCreate = CreatePlotter
ParentBiDiMode = True
ParentFont = False
Position = poDesigned
ShowInTaskBar = stDefault
UseDockManager = False
LCLVersion = '0.9.27'
WindowState = wsNormal
end

View File

@ -0,0 +1,16 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMainForm','FORMDATA',[
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#145#1#6'Height'#3','#1#3'Top'#3'5'#1
+#5'Width'#3#144#1#11'HelpContext'#2#0#5'Align'#7#6'alNone'#14'AllowDropFiles'
+#8#10'AutoScroll'#9#8'AutoSize'#8#11'BorderIcons'#11#12'biSystemMenu'#10'biM'
+'inimize'#10'biMaximize'#0#11'BorderStyle'#7#10'bsSizeable'#7'Caption'#6#26
+'Event-driven plotting demo'#28'ChildSizing.LeftRightSpacing'#2#0#28'ChildSi'
+'zing.TopBottomSpacing'#2#0#29'ChildSizing.HorizontalSpacing'#2#0#27'ChildSi'
+'zing.VerticalSpacing'#2#0#27'ChildSizing.ControlsPerLine'#2#0#8'DockSite'#8
+#8'DragKind'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#11'Font.Heig'
+'ht'#2#0#10'Font.Style'#11#0#9'FormStyle'#7#8'fsNormal'#8'OnCreate'#7#13'Cre'
+'atePlotter'#14'ParentBiDiMode'#9#10'ParentFont'#8#8'Position'#7#10'poDesign'
+'ed'#13'ShowInTaskBar'#7#9'stDefault'#14'UseDockManager'#8#10'LCLVersion'#6#6
+'0.9.27'#11'WindowState'#7#8'wsNormal'#0#0
]);

View File

@ -0,0 +1,50 @@
unit frmmain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
plotpanel;
type
{ TMainForm }
TMainForm = class(TForm)
procedure CreatePlotter(Sender: TObject);
private
{ private declarations }
FPlot:TPlotFunctionPanel;
public
{ public declarations }
Procedure PlotResult(Const X : TPlotFloat; Out Y : TPlotFloat);
end;
var
MainForm: TMainForm;
implementation
{ TMainForm }
procedure TMainForm.CreatePlotter(Sender: TObject);
begin
FPlot:=TPlotFunctionPanel.Create(Self);
FPlot.parent:=Self;
FPlot.Align:=alClient;
Fplot.OnCalcPlot:=@PlotResult;
FPlot.Active:=True;
end;
procedure TMainForm.PlotResult(const X: TPlotFloat; out Y: TPlotFloat);
begin
Y:=X*X/100;
end;
initialization
{$I frmmain.lrs}
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,20 @@
program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, frmmain, LResources, lazplotpanel;
{$IFDEF WINDOWS}{$R ploteventdemo.rc}{$ENDIF}
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.

View File

@ -0,0 +1 @@
MAINICON ICON "ploteventdemo.ico"

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,21 @@
program exprdemo;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, frmmain, LResources;
{$IFDEF WINDOWS}{$R exprdemo.rc}{$ENDIF}
begin
{$I exprdemo.lrs}
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
MAINICON ICON "exprdemo.ico"

View File

@ -0,0 +1,336 @@
object MainForm: TMainForm
Left = 355
Height = 300
Top = 301
Width = 503
HelpContext = 0
Align = alNone
AllowDropFiles = False
AutoScroll = True
AutoSize = False
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSizeable
Caption = 'Expression panel demo: quadratic function plot'
ChildSizing.LeftRightSpacing = 0
ChildSizing.TopBottomSpacing = 0
ChildSizing.HorizontalSpacing = 0
ChildSizing.VerticalSpacing = 0
ChildSizing.ControlsPerLine = 0
ClientHeight = 300
ClientWidth = 503
DockSite = False
DragKind = dkDrag
DragMode = dmManual
Enabled = True
Font.Height = 0
Font.Style = []
FormStyle = fsNormal
OnCreate = FormCreate
ParentBiDiMode = True
ParentFont = False
Position = poDesigned
ShowInTaskBar = stDefault
UseDockManager = False
LCLVersion = '0.9.27'
WindowState = wsNormal
object PParams: TPanel
Left = 0
Height = 32
Top = 0
Width = 503
HelpContext = 0
Align = alTop
Alignment = taCenter
AutoSize = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
BevelInner = bvNone
BevelOuter = bvLowered
BevelWidth = 1
BorderWidth = 0
BorderStyle = bsNone
ChildSizing.LeftRightSpacing = 0
ChildSizing.TopBottomSpacing = 0
ChildSizing.HorizontalSpacing = 0
ChildSizing.VerticalSpacing = 0
ChildSizing.ControlsPerLine = 0
ClientHeight = 32
ClientWidth = 503
DockSite = False
DragCursor = crDrag
DragKind = dkDrag
DragMode = dmManual
Enabled = True
FullRepaint = True
ParentColor = True
ParentFont = True
ParentShowHint = True
TabOrder = 0
TabStop = False
Visible = True
object LEA: TLabel
Left = 24
Height = 13
Top = 11
Width = 10
HelpContext = 0
Align = alNone
Alignment = taLeftJustify
AutoSize = True
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Caption = 'A'
DragCursor = crDrag
DragMode = dmManual
Enabled = True
Layout = tlTop
ParentBidiMode = True
ParentColor = False
ParentFont = True
ParentShowHint = True
ShowAccelChar = True
Transparent = True
Visible = True
WordWrap = False
OptimalFill = False
end
object LEB: TLabel
Left = 128
Height = 13
Top = 8
Width = 8
HelpContext = 0
Align = alNone
Alignment = taLeftJustify
AutoSize = True
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Caption = 'b'
DragCursor = crDrag
DragMode = dmManual
Enabled = True
Layout = tlTop
ParentBidiMode = True
ParentColor = False
ParentFont = True
ParentShowHint = True
ShowAccelChar = True
Transparent = True
Visible = True
WordWrap = False
OptimalFill = False
end
object LEC: TLabel
Left = 240
Height = 13
Top = 10
Width = 8
HelpContext = 0
Align = alNone
Alignment = taLeftJustify
AutoSize = True
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Caption = 'c'
DragCursor = crDrag
DragMode = dmManual
Enabled = True
Layout = tlTop
ParentBidiMode = True
ParentColor = False
ParentFont = True
ParentShowHint = True
ShowAccelChar = True
Transparent = True
Visible = True
WordWrap = False
OptimalFill = False
end
object EA: TEdit
Left = 40
Height = 23
Top = 6
Width = 72
HelpContext = 0
Align = alNone
AutoSize = False
AutoSelect = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
CharCase = ecNormal
DragCursor = crDrag
DragMode = dmManual
EchoMode = emNormal
Enabled = True
MaxLength = -1
ParentBidiMode = True
ParentFont = True
ParentShowHint = True
PasswordChar = #0
ReadOnly = False
TabStop = True
TabOrder = 0
Text = '1'
Visible = True
end
object EB: TEdit
Left = 152
Height = 23
Top = 6
Width = 80
HelpContext = 0
Align = alNone
AutoSize = False
AutoSelect = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
CharCase = ecNormal
DragCursor = crDrag
DragMode = dmManual
EchoMode = emNormal
Enabled = True
MaxLength = -1
ParentBidiMode = True
ParentFont = True
ParentShowHint = True
PasswordChar = #0
ReadOnly = False
TabStop = True
TabOrder = 1
Text = '0'
Visible = True
end
object EC: TEdit
Left = 264
Height = 23
Top = 6
Width = 80
HelpContext = 0
Align = alNone
AutoSize = False
AutoSelect = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
CharCase = ecNormal
DragCursor = crDrag
DragMode = dmManual
EchoMode = emNormal
Enabled = True
MaxLength = -1
ParentBidiMode = True
ParentFont = True
ParentShowHint = True
PasswordChar = #0
ReadOnly = False
TabStop = True
TabOrder = 2
Text = '0'
Visible = True
end
object Button1: TButton
Left = 360
Height = 25
Top = 6
Width = 75
HelpContext = 0
Align = alNone
AutoSize = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
Cancel = False
Caption = '&Apply'
Default = False
DragCursor = crDrag
DragMode = dmManual
Enabled = True
ParentBidiMode = True
ModalResult = 0
OnClick = Button1Click
ParentFont = True
ParentShowHint = True
TabOrder = 3
TabStop = True
Visible = True
end
end
object Panel1: TPanel
Left = 0
Height = 268
Top = 32
Width = 503
HelpContext = 0
Align = alClient
Alignment = taCenter
AutoSize = False
BorderSpacing.Left = 0
BorderSpacing.Top = 0
BorderSpacing.Right = 0
BorderSpacing.Bottom = 0
BorderSpacing.Around = 0
BorderSpacing.CellAlignHorizontal = ccaFill
BorderSpacing.CellAlignVertical = ccaFill
BevelInner = bvNone
BevelOuter = bvLowered
BevelWidth = 1
BorderWidth = 0
BorderStyle = bsNone
Caption = 'Panel1'
ChildSizing.LeftRightSpacing = 0
ChildSizing.TopBottomSpacing = 0
ChildSizing.HorizontalSpacing = 0
ChildSizing.VerticalSpacing = 0
ChildSizing.ControlsPerLine = 0
DockSite = False
DragCursor = crDrag
DragKind = dkDrag
DragMode = dmManual
Enabled = True
FullRepaint = True
ParentColor = True
ParentFont = True
ParentShowHint = True
TabOrder = 1
TabStop = False
Visible = True
end
end

View File

@ -0,0 +1,104 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMainForm','FORMDATA',[
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3'c'#1#6'Height'#3','#1#3'Top'#3'-'#1
+#5'Width'#3#247#1#11'HelpContext'#2#0#5'Align'#7#6'alNone'#14'AllowDropFiles'
+#8#10'AutoScroll'#9#8'AutoSize'#8#11'BorderIcons'#11#12'biSystemMenu'#10'biM'
+'inimize'#10'biMaximize'#0#11'BorderStyle'#7#10'bsSizeable'#7'Caption'#6'.Ex'
+'pression panel demo: quadratic function plot'#28'ChildSizing.LeftRightSpaci'
+'ng'#2#0#28'ChildSizing.TopBottomSpacing'#2#0#29'ChildSizing.HorizontalSpaci'
+'ng'#2#0#27'ChildSizing.VerticalSpacing'#2#0#27'ChildSizing.ControlsPerLine'
+#2#0#12'ClientHeight'#3','#1#11'ClientWidth'#3#247#1#8'DockSite'#8#8'DragKin'
+'d'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#11'Font.Height'#2#0#10
+'Font.Style'#11#0#9'FormStyle'#7#8'fsNormal'#8'OnCreate'#7#10'FormCreate'#14
+'ParentBiDiMode'#9#10'ParentFont'#8#8'Position'#7#10'poDesigned'#13'ShowInTa'
+'skBar'#7#9'stDefault'#14'UseDockManager'#8#10'LCLVersion'#6#6'0.9.27'#11'Wi'
+'ndowState'#7#8'wsNormal'#0#6'TPanel'#7'PParams'#4'Left'#2#0#6'Height'#2' '#3
+'Top'#2#0#5'Width'#3#247#1#11'HelpContext'#2#0#5'Align'#7#5'alTop'#9'Alignme'
+'nt'#7#8'taCenter'#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing'
+'.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'Borde'
+'rSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'Bo'
+'rderSpacing.CellAlignVertical'#7#7'ccaFill'#10'BevelInner'#7#6'bvNone'#10'B'
+'evelOuter'#7#9'bvLowered'#10'BevelWidth'#2#1#11'BorderWidth'#2#0#11'BorderS'
+'tyle'#7#6'bsNone'#28'ChildSizing.LeftRightSpacing'#2#0#28'ChildSizing.TopBo'
+'ttomSpacing'#2#0#29'ChildSizing.HorizontalSpacing'#2#0#27'ChildSizing.Verti'
+'calSpacing'#2#0#27'ChildSizing.ControlsPerLine'#2#0#12'ClientHeight'#2' '#11
+'ClientWidth'#3#247#1#8'DockSite'#8#10'DragCursor'#7#6'crDrag'#8'DragKind'#7
+#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#11'FullRepaint'#9#11'Paren'
+'tColor'#9#10'ParentFont'#9#14'ParentShowHint'#9#8'TabOrder'#2#0#7'TabStop'#8
+#7'Visible'#9#0#6'TLabel'#3'LEA'#4'Left'#2#24#6'Height'#2#13#3'Top'#2#11#5'W'
+'idth'#2#10#11'HelpContext'#2#0#5'Align'#7#6'alNone'#9'Alignment'#7#13'taLef'
+'tJustify'#8'AutoSize'#9#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0
+#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.A'
+'round'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacin'
+'g.CellAlignVertical'#7#7'ccaFill'#7'Caption'#6#1'A'#10'DragCursor'#7#6'crDr'
+'ag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#6'Layout'#7#5'tlTop'#14'ParentBi'
+'diMode'#9#11'ParentColor'#8#10'ParentFont'#9#14'ParentShowHint'#9#13'ShowAc'
+'celChar'#9#11'Transparent'#9#7'Visible'#9#8'WordWrap'#8#11'OptimalFill'#8#0
+#0#6'TLabel'#3'LEB'#4'Left'#3#128#0#6'Height'#2#13#3'Top'#2#8#5'Width'#2#8#11
+'HelpContext'#2#0#5'Align'#7#6'alNone'#9'Alignment'#7#13'taLeftJustify'#8'Au'
+'toSize'#9#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpa'
+'cing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0'!'
+'BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignV'
+'ertical'#7#7'ccaFill'#7'Caption'#6#1'b'#10'DragCursor'#7#6'crDrag'#8'DragMo'
+'de'#7#8'dmManual'#7'Enabled'#9#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11
+'ParentColor'#8#10'ParentFont'#9#14'ParentShowHint'#9#13'ShowAccelChar'#9#11
+'Transparent'#9#7'Visible'#9#8'WordWrap'#8#11'OptimalFill'#8#0#0#6'TLabel'#3
+'LEC'#4'Left'#3#240#0#6'Height'#2#13#3'Top'#2#10#5'Width'#2#8#11'HelpContext'
+#2#0#5'Align'#7#6'alNone'#9'Alignment'#7#13'taLeftJustify'#8'AutoSize'#9#18
+'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing.Right'#2
+#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0'!BorderSpacing.'
+'CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVertical'#7#7'c'
+'caFill'#7'Caption'#6#1'c'#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManu'
+'al'#7'Enabled'#9#6'Layout'#7#5'tlTop'#14'ParentBidiMode'#9#11'ParentColor'#8
+#10'ParentFont'#9#14'ParentShowHint'#9#13'ShowAccelChar'#9#11'Transparent'#9
+#7'Visible'#9#8'WordWrap'#8#11'OptimalFill'#8#0#0#5'TEdit'#2'EA'#4'Left'#2'('
+#6'Height'#2#23#3'Top'#2#6#5'Width'#2'H'#11'HelpContext'#2#0#5'Align'#7#6'al'
+'None'#8'AutoSize'#8#10'AutoSelect'#8#18'BorderSpacing.Left'#2#0#17'BorderSp'
+'acing.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20
+'BorderSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'
+#31'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNormal'
+#10'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8'emNorm'
+'al'#7'Enabled'#9#9'MaxLength'#2#255#14'ParentBidiMode'#9#10'ParentFont'#9#14
+'ParentShowHint'#9#12'PasswordChar'#6#1#0#8'ReadOnly'#8#7'TabStop'#9#8'TabOr'
+'der'#2#0#4'Text'#6#1'1'#7'Visible'#9#0#0#5'TEdit'#2'EB'#4'Left'#3#152#0#6'H'
+'eight'#2#23#3'Top'#2#6#5'Width'#2'P'#11'HelpContext'#2#0#5'Align'#7#6'alNon'
+'e'#8'AutoSize'#8#10'AutoSelect'#8#18'BorderSpacing.Left'#2#0#17'BorderSpaci'
+'ng.Top'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'Bor'
,'derSpacing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31
+'BorderSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNormal'#10
+'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8'emNormal'
+#7'Enabled'#9#9'MaxLength'#2#255#14'ParentBidiMode'#9#10'ParentFont'#9#14'Pa'
+'rentShowHint'#9#12'PasswordChar'#6#1#0#8'ReadOnly'#8#7'TabStop'#9#8'TabOrde'
+'r'#2#1#4'Text'#6#1'0'#7'Visible'#9#0#0#5'TEdit'#2'EC'#4'Left'#3#8#1#6'Heigh'
+'t'#2#23#3'Top'#2#6#5'Width'#2'P'#11'HelpContext'#2#0#5'Align'#7#6'alNone'#8
+'AutoSize'#8#10'AutoSelect'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing.To'
+'p'#2#0#19'BorderSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSp'
+'acing.Around'#2#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'Borde'
+'rSpacing.CellAlignVertical'#7#7'ccaFill'#8'CharCase'#7#8'ecNormal'#10'DragC'
+'ursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#8'EchoMode'#7#8'emNormal'#7'En'
+'abled'#9#9'MaxLength'#2#255#14'ParentBidiMode'#9#10'ParentFont'#9#14'Parent'
+'ShowHint'#9#12'PasswordChar'#6#1#0#8'ReadOnly'#8#7'TabStop'#9#8'TabOrder'#2
+#2#4'Text'#6#1'0'#7'Visible'#9#0#0#7'TButton'#7'Button1'#4'Left'#3'h'#1#6'He'
+'ight'#2#25#3'Top'#2#6#5'Width'#2'K'#11'HelpContext'#2#0#5'Align'#7#6'alNone'
+#8'AutoSize'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'Borde'
+'rSpacing.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2
+#0'!BorderSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAli'
+'gnVertical'#7#7'ccaFill'#6'Cancel'#8#7'Caption'#6#6'&Apply'#7'Default'#8#10
+'DragCursor'#7#6'crDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'#9#14'ParentBid'
+'iMode'#9#11'ModalResult'#2#0#7'OnClick'#7#12'Button1Click'#10'ParentFont'#9
+#14'ParentShowHint'#9#8'TabOrder'#2#3#7'TabStop'#9#7'Visible'#9#0#0#0#6'TPan'
+'el'#6'Panel1'#4'Left'#2#0#6'Height'#3#12#1#3'Top'#2' '#5'Width'#3#247#1#11
+'HelpContext'#2#0#5'Align'#7#8'alClient'#9'Alignment'#7#8'taCenter'#8'AutoSi'
+'ze'#8#18'BorderSpacing.Left'#2#0#17'BorderSpacing.Top'#2#0#19'BorderSpacing'
+'.Right'#2#0#20'BorderSpacing.Bottom'#2#0#20'BorderSpacing.Around'#2#0'!Bord'
+'erSpacing.CellAlignHorizontal'#7#7'ccaFill'#31'BorderSpacing.CellAlignVerti'
+'cal'#7#7'ccaFill'#10'BevelInner'#7#6'bvNone'#10'BevelOuter'#7#9'bvLowered'
+#10'BevelWidth'#2#1#11'BorderWidth'#2#0#11'BorderStyle'#7#6'bsNone'#7'Captio'
+'n'#6#6'Panel1'#28'ChildSizing.LeftRightSpacing'#2#0#28'ChildSizing.TopBotto'
+'mSpacing'#2#0#29'ChildSizing.HorizontalSpacing'#2#0#27'ChildSizing.Vertical'
+'Spacing'#2#0#27'ChildSizing.ControlsPerLine'#2#0#8'DockSite'#8#10'DragCurso'
+'r'#7#6'crDrag'#8'DragKind'#7#6'dkDrag'#8'DragMode'#7#8'dmManual'#7'Enabled'
+#9#11'FullRepaint'#9#11'ParentColor'#9#10'ParentFont'#9#14'ParentShowHint'#9
+#8'TabOrder'#2#1#7'TabStop'#8#7'Visible'#9#0#0#0
]);

View File

@ -0,0 +1,79 @@
unit frmmain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, fpexprpars,exprplotpanel;
type
{ TMainForm }
TMainForm = class(TForm)
Button1: TButton;
EA: TEdit;
EB: TEdit;
EC: TEdit;
LEA: TLabel;
LEC: TLabel;
LEB: TLabel;
Panel1: TPanel;
PParams: TPanel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
FPanel : TPlotExpressionPanel;
public
{ public declarations }
end;
var
MainForm: TMainForm;
implementation
{ TMainForm }
procedure TMainForm.FormCreate(Sender: TObject);
begin
FPanel:=TPlotExpressionPanel.Create(Self);
FPanel.Parent:=Panel1;
FPanel.Align:=alClient;
FPanel.Identifiers.AddFloatVariable('a',1.0);
FPanel.Identifiers.AddFloatVariable('b',0);
FPanel.Identifiers.AddFloatVariable('c',0);
FPanel.XAxis.Origin:=-30;
FPanel.XAxis.DrawZero:=True;
FPanel.YAxis.Caption.Alignment:=taCenter;
FPanel.YAxis.Origin:=-10;
FPanel.YAxis.DrawZero:=True;
FPanel.Expression:='a * (x * x) + b * x + c';
FPanel.Active:=True;
FPanel.Caption.Title:='Square function demo';
FPanel.Caption.Alignment:=taRightJustify;
end;
procedure TMainForm.Button1Click(Sender: TObject);
Var
A,b,c : TExprFloat;
begin
A:=StrToFLoat(EA.Text);
b:=StrToFLoat(EB.Text);
C:=StrToFLoat(EC.Text);
FPanel.Identifiers.IdentifierByName('a').AsFloat:=A;
FPanel.Identifiers.IdentifierByName('b').AsFloat:=B;
FPanel.Identifiers.IdentifierByName('c').AsFloat:=C;
FPanel.Invalidate;
end;
initialization
{$I frmmain.lrs}
end.

View File

@ -0,0 +1,173 @@
{ Unit to plot an expression on a canvas
Copyright (C) 2008 Michael Van Canneyt michael@freepascal.org
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}
unit exprplotpanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, plotpanel, fpexprpars;
Type
{ TExpressionControlPlotter }
TExpressionControlPlotter = Class(TCanvasPlotter)
private
FParser : TFPExpressionParser;
FX : TFPExprIdentifierDef;
function GetExpression: String;
function GetIdentifiers: TFPExprIdentifierDefs;
procedure SetExpression(const AValue: String);
procedure SetIdentifiers(const AValue: TFPExprIdentifierDefs);
Protected
Function CalcFunction(X : TPlotFloat) : TPlotFloat; override;
Property Parser : TFPExpressionParser Read FParser;
Public
Constructor Create(AOwner : TComponent); override;
Destructor Destroy; override;
Property Expression : String Read GetExpression Write SetExpression;
Property Identifiers : TFPExprIdentifierDefs Read GetIdentifiers Write SetIdentifiers;
end;
{ TPlotFunctionPanel }
TPlotExpressionPanel = Class(TCustomPlotFunctionPanel)
private
function GetExpression: String;
function GetIdentifiers: TFPExprIdentifierDefs;
procedure SetExpression(const AValue: String);
procedure SetIdentifiers(const AValue: TFPExprIdentifierDefs);
Protected
Function CreatePlotter : TCanvasPlotter; override;
Published
Property Expression : String Read GetExpression Write SetExpression;
Property Identifiers : TFPExprIdentifierDefs Read GetIdentifiers Write SetIdentifiers;
Property Anchors;
Property Align;
Property XAxis;
Property YAxis;
Property Active;
Property PlotColor;
end;
implementation
resourcestring
SErrInvalidResultType = 'Expression result type must be integer or float. Got %s"';
{ TExpressionControlPlotter }
function TExpressionControlPlotter.GetIdentifiers: TFPExprIdentifierDefs;
begin
Result:=FParser.Identifiers;
end;
function TExpressionControlPlotter.GetExpression: String;
begin
Result:=FParser.Expression;
end;
procedure TExpressionControlPlotter.SetExpression(const AValue: String);
begin
FParser.Expression:=AValue;
If Not (FParser.ResultType in [rtInteger,rtFLoat]) then
Raise EExprParser.CreateFmt(SErrInvalidResultType,[ResultTypeName(FParser.ResultType)]);
Changed;
end;
procedure TExpressionControlPlotter.SetIdentifiers(
const AValue: TFPExprIdentifierDefs);
begin
FParser.Identifiers.Assign(AValue);
// Reassign...
FX:=FParser.IdentifierByName('X');
end;
function TExpressionControlPlotter.CalcFunction(X: TPlotFloat): TPlotFloat;
Var
E : TFPExpressionResult;
begin
FX.AsFloat:=X;
E:=FParser.Evaluate;
If E.ResultType=rtFloat then
result:=E.ResFloat
else If E.ResultType=rtInteger then
result:=E.ResInteger;
end;
constructor TExpressionControlPlotter.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FParser:=TFPExpressionParser.Create(Self);
FX:=FParser.Identifiers.AddFloatVariable('X',0.0);
end;
destructor TExpressionControlPlotter.Destroy;
begin
FX:=Nil;
FreeAndNil(FParser);
inherited Destroy;
end;
{ TPlotExpressionPanel }
function TPlotExpressionPanel.GetExpression: String;
begin
Result:=TExpressionControlPlotter(Plotter).Expression;
end;
function TPlotExpressionPanel.GetIdentifiers: TFPExprIdentifierDefs;
begin
Result:=TExpressionControlPlotter(Plotter).Identifiers;
end;
procedure TPlotExpressionPanel.SetExpression(const AValue: String);
begin
TExpressionControlPlotter(Plotter).Expression:=AValue;
end;
procedure TPlotExpressionPanel.SetIdentifiers(const AValue: TFPExprIdentifierDefs
);
begin
TExpressionControlPlotter(Plotter).Identifiers:=AValue;
end;
function TPlotExpressionPanel.CreatePlotter: TCanvasPlotter;
begin
Result:=TExpressionControlPlotter.Create(Self);
end;
end.

View File

@ -0,0 +1,56 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="3">
<Name Value="lazplotpanel"/>
<AddToProjectUsesSection Value="False"/>
<Author Value="Michael Van Canneyt"/>
<CompilerOptions>
<Version Value="8"/>
<SearchPaths>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Other>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Description Value="2 components to plot a 2-D function y=f(x) in a grid.
The function result can be specified in an event
or in an expression
"/>
<License Value="Modified LGPL
"/>
<Version Release="1"/>
<Files Count="3">
<Item1>
<Filename Value="regplotpanel.pp"/>
<HasRegisterProc Value="True"/>
<UnitName Value="regplotpanel"/>
</Item1>
<Item2>
<Filename Value="exprplotpanel.pp"/>
<UnitName Value="exprplotpanel"/>
</Item2>
<Item3>
<Filename Value="plotpanel.pp"/>
<UnitName Value="plotpanel"/>
</Item3>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="LCL"/>
</Item1>
<Item2>
<PackageName Value="FCL"/>
<MinVersion Major="1" Valid="True"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)/"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@ -0,0 +1,21 @@
{ This file was automatically created by Lazarus. do not edit!
This source is only used to compile and install the package.
}
unit lazplotpanel;
interface
uses
regplotpanel, exprplotpanel, plotpanel, LazarusPackageIntf;
implementation
procedure Register;
begin
RegisterUnit('regplotpanel', @regplotpanel.Register);
end;
initialization
RegisterPackage('lazplotpanel', @Register);
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
This package contains 2 components:
TPlotFunctionPanel
Plots a function y=F(x) on a grid.
The function result is calculated with an event "OnCalcPlot". This
function is called for each X for which an Y must be calculated.
TPlotExpressionPanel
Plots a function y=F(x) on a grid.
The function result is calculated from the expression "Expression"
The fpexprpars unit is used to calculate the expression. The
"Identifiers" property of the parsers is exposed so the variables
and function definitions can be manipulated
Both components have the following properties:
Active : If set to false, only the grid is drawn.
PlotColor : Color of the plotted line
Caption : Caption of the graph
XAxis, YAxis: These control the appearance of the X and Y axis.
They have both the following properties:
Color : Axis color
TickColor : Color of the tick marks on the axis.
Ticks : Number of tick marks or distance between tick marks on the
axis.
TickSize : Length of the tick mark.
TickMode : Ticks is number of ticks or distance (in pixels) between ticks.
TickFont : Font for the tick labels
Caption : Caption of the axis.
Drawzero : Should the 0 line be drawn extra ?
Origin : Starting point (in X or Y) of the axis.
Interval : Interval over which will be drawn. The axis covers the
X or Y interval [Origin,Origin+Interval]
LegendInterval : The interval (in ticks) at which a legend for the tick
mark should be printed.
LegendFormat : Controls the formatting of the legend at the tick marks.
This should be a valid float formatting specifier (used in FormatFloat);
GridInterval : The number of ticks at which a grid line must be drawn.
GridColor : Color of the grid line.

View File

@ -0,0 +1,28 @@
LazarusResources.Add('tplotfunctionpanel','PNG',[
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
+#0#0#218'IDATH'#137#181#149'M'#14#131' '#16#133#31#141#7#145#133#199'h{'#162
+#174#225#8#174#245'B'#213#30#195'&'#210'4'#233'5'#166'+'#12#17#20#208#225#173
+#128#197#251#222#240'3'#8'"BI]'#138#186#3#168#236'@'#235#158#173#148#182'}'
+#136'eBD "('#213#17#135#148#234'h|'#14'd}'#171'5'#221#152#247#225#228#223#207
+#207'['#243#0'!I'#217'xk'#243'<%A'#147#0#169'f!'#5'oQ(1+'#128'S'#135#1'ub'
+#149#135#0#181'l`'#230'i'#129#236#193#178#1#214#28#192#2'1;'#151#224#244#25
+#236#153'G'#1#181'l'#146#247':'#27'`K_'#239'u,q2'#192#149#11#201#213#230'K^'
+''''#205'M'#30#5#228#190#230#173'v'#18#4#156#233'=Q@'#168#229#178#1#180#238
+'Y'#205#1'@'#184#159#254'k'#24#217#190#205#235#253'&<@'#9#21'o'#215''#154'9'
+#159#151'4H'#189';'#0#0#0#0'IEND'#174'B`'#130
]);
LazarusResources.Add('tplotexpressionpanel','PNG',[
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
+#0#1#13'IDATH'#137#181#150'Q'#14#131' '#12#134#203#226'='#148#7#142#177#237
+'D{'#214'#'#236'Y/4'#221'1X'#2'f'#201#174#209#189#12#131'P*.'#248'''&'#210
+#164#255#215#150#128#10'D'#132'#u:'#212#29#0'*'#247#210'uC'#177'V'#238#247
+#155'X'#22#136#8#136#8'm'#219'c'#9#181'm'#143#211'cD'#231'['#133'tk_W'#254
+#158'?Q,'#2'P'#146'RE1ct'#22'4'#185#201#205#207#180#145#10#140#209#171''''
+#220#172#134'('#128#5'P'#21'7R-F'#214#232'U'#1#150#233#134#29#145'_Yh'#226' '
+#156'9'#0'3"k'#244'*'#217#239#192#173#253'NRJv'#16'&'#134'0'#183#222#234'$'#9
+#224'Z'#167#198#149#210#238#171'B'#206#252'Hv'#1#228#172'H'#195#220#24#11#144
+#179#2'Sk0'#181'^'#146#169#152#31#167#148'u'#146'C'#195'0'#150'2g'#1'a'#18'e'
+#194#25'o'#2#168#211#204')u7'#145#128#220#139',G'#17#128#186'r'#139#1#186'n('
+'j'#14#0' '#252#143#254's'#156#138'}6'#207#215#139#136#0'G'#232#240#191#138
+'/'#213#252#214#142#192'Z'#24#196#0#0#0#0'IEND'#174'B`'#130
]);

View File

@ -0,0 +1,29 @@
unit regplotpanel;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
plotpanel,
{$IFNDEF VER2_2}
exprplotpanel,
{$ENDIF VER2_2}
lresources;
Procedure Register;
implementation
Procedure Register;
begin
Classes.RegisterComponents('Misc',[TPlotFunctionPanel
{$IFNDEF VER2_2},TPlotExpressionPanel{$ENDIF VER2_2}]);
end;
initialization
{$i regplotpanel.lrs}
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

View File

@ -0,0 +1 @@
$(LazarusDir)/components/plotpanel/lazplotpanel.lpk