Highlighted

Layout miracle

Avatar

21-11-2008

Hi there,



I´m wondering how to solve a layout requirement for some days now.

Imagine a single textfield (richtext) which have to be displayed in 2 columns on the page.

I´ve solved that by using separate content areas per column and the overflow settings targeting the second column. Works just fine. But when the text is as big, that an page overflow occures, it still continues filling the second column of the new page. Makes sense with the overflow settings.^^



Is there any way to place it in the first column of the subsequent pages?



I really need your help.



Thanks and greetings,

Joerg

Replies

Highlighted

Avatar

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692
pguerett

21-11-2008

There is a basic layout rule that you are breaking. Once the layout is forced to another page you cannot go back to a previous page to do more layout. You may be able to programmatically fix up the overflow after it has been layed out but if it works at all it will by tricky. Is there another way to dislay what you have? Can the overflow be moved to the end of the document on an overflow page?
Highlighted

Avatar

21-11-2008

Hi,



yes, it is tricky^^ I´ve also thought about a programmatic solution. This would lead to success in case of normal text. But here the content is rich text and will have to be rendered to decide where to split the content.

An overflow page is no option in my opinion. The problem is not the overflow at all, it´s the fact, that the content has to be layed out in 2 columns in combination with possible page breaks. The requirement would be the same on an overflow page.

I have build a very simple example, to demonstrate the problem:

http://www.nemonon.de/MultiColumnTest.xdp

and some data here:

http://www.nemonon.de/MultiColumnTest.xml (no XHTML, but it should show the problem either).



Thanks in advance,

Joerg
Highlighted

Avatar

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692
pguerett

21-11-2008

Unless you are willing to overflow the 1st column onto the same page (i.e continuing in the next column) I do not see a solution.
Highlighted

Avatar

22-11-2008

I was afraid of that answer^^



Unfortunatelly, I´m forced to find a solution for that problem. Isn´t there another layout strategy? The requirement is not that unusual in my opinion, is it?

I thought of splitting the text programmatically...perhaps in the backend via Java. But the calculation would be really tricky. All used font´s would have to be installed on that system and the dependency to that special form isn´t really best practice.



Heeeeeeeeelp 🙂



Greetings, Joerg

Avatar

Avatar

Thomas_McConnac

Avatar

Thomas_McConnac

Thomas_McConnac

24-11-2008

What about:



-Use a font which uses the same width for each character (has a specific name for the type of font, but it escapes me at the moment).

-Check how many characters can fit in a column, have the columns actually be 2 separate fields with the same name.

-When the character limit is reached once, move the focus to the next field.

-When it is reached on the second column, do an add isntance of the entire subform (both columns) and move the focus to the first column on the new instance.



That way you can pass the focus along whenever the limit is reached.



Doesn't do well for editing it after, that would require more code if needed to put everything into a single string and move them about as required.



Hope this helps,



Tom
Highlighted

Avatar

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692

Avatar

pguerett

Total Posts

7.7K

Likes

611

Correct Answer

692
pguerett

24-11-2008

The only way I can see this working is if you allow the columns to fill like a newspaper .....fill column1 and if it overflows then move to column2 on the same page.



Once the page is turned you are toast and can't go back to layout again.