[Lazarus] PlotFunction patch declined?
Michael Van Canneyt
michael at freepascal.org
Tue Nov 7 15:41:44 CET 2017
On Tue, 7 Nov 2017, Werner Pamler via Lazarus wrote:
> Am 07.11.2017 um 13:42 schrieb Michael Van Canneyt via Lazarus:
>> I don't see why you would need a separate package. fpexprparser is in the
>> FCL since 10 years or so. A separate unit is definitely good so as to
>> minimize the dependencies of the basic tachart unit, but a package ?
>> Seems overkill to me ?
> Maybe I am paranoid here or oversensitive because it has never been
> clear to me whether "unused" code is linked into a program or not. When
> there is designtime or initialization code "unused" code may be called
> internally although it is never called explicitly by the program itself.
> To be specific: How much of the otherwise unused fpexprparser is linked
> into a program if the initialization code of the TExpressionSeries unit
> adds the series to the list needed by the series editor at designtime?
> Probably none, but I am not sure... Therefore I follow the strategy to
> keep packages as slim as possible and I want them to contain only the
> code they need for their main job. For TAChart, the main job is to plot
> data, not to evaluate functions. Therefore, the formula parser should
> stay outside the chart package in this way of thinking. In particular
> since there are other libraries to parse math expressions, such as
> "symbolic" which is distributed along with fpc as well.
> Of course, runtime code should be separated from designtime code in the
> first place.
Well, that was going to be my question.
Designtime should be separated from runtime to begin with.
Normally you should have 2 packages. One runtime, one designtime...
But if you make the expression chart a different component in a different unit,
(as I suggested) then it will not link in the fpexprparser unit at all unless
you actually use this component.
But I know too little about the TAChart architecture to comment further.
>> These values can only be handled in code. Of the three,
>> itFunctionHandler can be handled by using an event handler.
>> But itFunctionCallBack,itFunctionNode make no sense in the designer.
> This means: If I select itFunctionHandler then the events
> OnGetFunctionValue and OnGetVariableValue are fired? In this case
> TPlotExpressionPanel would behave like TPlotFunctionPanel?
The event of the collection item will be triggered if you use
itFunctionHandler, yes. But obviously only during runtime.
> BTW I was suprised to see a collection editor here although there is no
> explicit code defining it. But then I realized that it's just the clever
> usage of the word "published" and the selection of the specific
> inherited class which achieves this. It is amazing how seamlessly the
> design editors of Lazarus are integrated.
Hm. I no longer even think about such things. It's just normal.
Shows how spoiled I am, I guess ;)
More information about the Lazarus