5

I have fields in title and page header that have multiple lines. I want them to stretch vertically but the problem is the field below the stretched field is missing. I also grouped them using a frame.

The properties I set:

Position Type : Float
Stretch Type : Relative to Tallest Object
Stretch With Overflow : True

Please see below screen shot. enter image description here

Alex K
  • 22,315
  • 19
  • 108
  • 236
NinjaBoy
  • 3,715
  • 18
  • 54
  • 69

3 Answers3

10

You can try these properties of text : -

For first field (Cashier Name) of title band use this properties :-

Position Type-         Fix Relative to Top

Stretch Type-          Relative to Band Height

Stretch With Overflow -    true

For the second field (Date) set these properties

Position Type-         Fix Relative to Bottom

Stretch Type-          No stretch

Stretch With Overflow-     false

In this report you can see the properties if you run the report with Sample HSQL database in ireport :-

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="ward utilization" pageWidth="300" pageHeight="300" orientation="Landscape" columnWidth="280" leftMargin="10" rightMargin="10" topMargin="10" bottomMargin="10" uuid="85476864-df43-454c-83dd-9c1b475ec223">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<queryString>
    <![CDATA[select * from orders]]>
</queryString>
<field name="ORDERID" class="java.lang.Integer"/>
<field name="CUSTOMERID" class="java.lang.String"/>
<field name="EMPLOYEEID" class="java.lang.Integer"/>
<field name="ORDERDATE" class="java.sql.Timestamp"/>
<field name="REQUIREDDATE" class="java.sql.Timestamp"/>
<field name="SHIPPEDDATE" class="java.sql.Timestamp"/>
<field name="SHIPVIA" class="java.lang.Integer"/>
<field name="FREIGHT" class="java.math.BigDecimal"/>
<field name="SHIPNAME" class="java.lang.String"/>
<field name="SHIPADDRESS" class="java.lang.String"/>
<field name="SHIPCITY" class="java.lang.String"/>
<field name="SHIPREGION" class="java.lang.String"/>
<field name="SHIPPOSTALCODE" class="java.lang.String"/>
<field name="SHIPCOUNTRY" class="java.lang.String"/>
<group name="bed"/>
<title>
    <band height="42">
        <textField isStretchWithOverflow="true">
            <reportElement uuid="c438eefe-5415-409e-8e7c-c763a7305ae2" stretchType="RelativeToBandHeight" x="87" y="0" width="24" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{SHIPNAME}]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement uuid="83c8a0d7-af5f-43ec-88dd-7d923a5b2a28" positionType="FixRelativeToBottom" x="87" y="21" width="24" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[$F{SHIPCITY}]]></textFieldExpression>
        </textField>
    </band>
</title>

Sharad
  • 3,562
  • 6
  • 37
  • 59
3

I see two possible solutions here.

  1. based on tests reproducing your error, you can set the date field as float also and it will shift down as the previous label (cashier name) overflows. Unfortunately this is part of a solution because then the field date does not align with its label.

  2. create a table and set those labels and fields as a table and let it handle the overflow naturally. I failed to test it without using a datasource but I'm sure you can pass it the current report's datasource and fetch the data you need from it and display that info on that table.

Let me know if it worked for you. Also, tell me what else did you try. I'm curious now :)

Good luck.

marram
  • 439
  • 2
  • 8
3

Stretch Type : Relative to Tallest Object make verttical size of any items as maximal from all items. In this case previous element overlaps next (missing) item.

This is not need. Set stretch type = "No stretch". "Stretch with overflow = true" is enough for correct display items. (imho)

Solution: Put each pair label:field into individual frame. In this case label-fields will display in the corresponding rows

sanBez
  • 933
  • 1
  • 8
  • 18