engine.freespace not updated ?

edited September 2010 in FastReport 4.0
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
var mHeight: double;
begin

mHeight := GroupFooter1.height + child1.height;

while (engine.freeSpace > mHeight) or (JustPrintedHeader = true) do
begin
engine.ShowBand (Child1);
end;


The goal of the above is to have vertical lines between the last masterdetail and the groupfooter which I want always @ the bottom of the page.


This works perfectly if there is enougn space to at least print the group footer. and the page footer but if , in attempting to print the group footer fr4 realises that there is not enough space the following happens

- page footer is printed
- new page
- page header is printed
- group footer is printed

which is what you would expect, EXCEPT that the engine.freespace still has the values of the previous page so it print immediately and not at the bottom of the page. (in fact it lloks like all variables keep their values at the time of call of the obp, I tried to set a boolean on the page header OAP event and I always get the value false)

How can I get around this ?

Didier

Comments

  • gordkgordk St.Catherines On. Canada.
    edited 4:28PM
    try printing the child a set no of times, instead of the while loop.
    freespace - groupfooterheight+1or 2 pixels divided by childheight
  • edited 4:28PM
    gordk wrote: »
    try printing the child a set no of times, instead of the while loop.
    freespace - groupfooterheight+1or 2 pixels divided by childheight


    The trouble is ... Freespace still gets the value it had before the page break, not the actual value it really has on the new page. So that' won't work either.

    Didier
  • gordkgordk St.Catherines On. Canada.
    edited 4:28PM
    it does not reset on the new page until after all the overspill objects are processed.
    BTW what version and build number are you using?
  • edited 4:28PM
    gordk wrote: »
    it does not reset on the new page until after all the overspill objects are processed.
    BTW what version and build number are you using?


    Version is 4.9.100; the fact that it does not reset is a real pain as it throws away any logic used to physically position a band at a specific location on a page when the object you're trying to position is the overspill object ; unless you come up with one of your cunning tricks [img]style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" /> Didier[/img]
  • gordkgordk St.Catherines On. Canada.
    edited 4:28PM
    Didier
    as i look at your code i am begging to suspect your or section may be inadvertently causing the problem(where is it reset to false).
    if you want to see where freespace resets just add some memos with [engine.freespace]

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.