cannot understand what the series.marks (and series at all) have to do with the extents
Margins are reserved to guarantee that all marks labels fit into the viewport.
As for series themselves -- they are a primary source of chart full extent,
which is, by definition, an extent designed to cover all series data.
I absolutely agree that
full extent must take care to show series marks.
But full extent is one thing, and extents and logicalextents seem a completely different thing to me. If I choose to change them manually, then I am supposed to know what I want to have on the screen?
IMHO, the current behaviour is somehow unpascalish.
In Pascal when I write
showmessage (i) I get an error message, just because
i is an integer, and Pascal is not sure how I want to convert it. But when I set the extents TChart decides instead of me what the real extents shall be.
Indeed, I have very limited experience with Pascal, probably I have much more to see.
Perhaps, I should set series marks.visible:= False, to change the extents and to set them back to visible again?
No, this will not help, as the chart extent will be recalculated automatically.
Indeed, I tried this, too. If I switch off series marks- scales are fine. But if switch them back to visible again- the same result as before. Probably I should make marks visible in another handler, but I use TEdit- there is no handler after EditingDone. The only thing, that occurs to me is to use a timer, which will make marks visible after some delay

The solution is to improve control over series margins.
I can see several independent options:
1) Add Chart.CombineMargins property with values of (cmMax, cmMin, cmSum, cmNone), which would control algorithm of TChart.GetMargins function.
2) Add MarginsForMarks property to series, which could be either a boolean or enumeration like the above.
What do you think?
I just tried and found that TChart does not have a GetMargins property? Unfortunately I could not understand what is the idea of your first proposal.
As far as your second idea is concerned- do you mean that if MarginsForMarks= False (cmNone) then
logicalextent= 5000 will result in extent
5000, because the margins around the labels will be neglected? It seems fine to me, since both those who share your understanding and mine will be content.
As I mentioned maybe
cmMax,
cmMin,
cmSum,
cmNone are nice (usually the more options, the better, providing that implementing them won't hurt something else), but still I do not understand their conception.
marks themselves are the short lines, but they may or may not have labels (right?)
That depends on chart settings. Usually, if OverlapPolicy=opIgnore and labels are visible, all marks will have labels.
In some other tread I asked how to make sure that labels are displayed for the firsts (min) and the last (max) displayed values.
I will search it, but as far as I remember, there was not an easy solution.
Anyway I could place an area of another colour (better at mouseover), so the user will know where the click area is.
@ask, since you are an moderator, could I ask you to put the item into another tread?