2012-06-27

JasperReports Formatting Tools(排版工具)

從「視窗 > Formatting Tools」可以開啟功能強大的排版工具,不用在「屬性」視窗裡與數字奮鬥,或者「Designer」裡跟滑鼠靈敏度過不去,懷疑自己手殘(水晶報表後遺症),雖然 iReport 的鎖點自動對齊功能已經比水晶報表好用多了,但是用過 Formatting Tools 之後,突然覺得人生一片光明啊。

在開始之前,先修改 Designer 垂直水平座標軸的單位,可以從「工具 > 選項 > iReport > General > Units」做修改。

還有重要的選取單一或多個物件方式:
  • 從 Report Inspector 展開各個 Bands,就可以看到該 Band 裡所有的元件,單點就可以選取 Designer 裡的元件並顯示在「屬性」視窗,可以搭配 Ctrl 或 Shift 做多筆選取。
  • 從 Designer 裡直接單點,可以搭配 Ctrl 做多筆選取。
  • 從 Designer 裡框選,往右框選必須整個物件框進才算選到,往左框選只要摸到邊就算選到

從 Report Inspector 選取元件有個好處,就是當元件在 Designer 裡被蓋住,或看不到時,用 Report Inspector 做選取就很方便。

半自動排版

熊熊看到滿盤的 Formatting Tools,可能會退避三舍。


如果 iReport 可以分類一下會比較友善一點,不然每次都得找到眼花。

第一種分類方式,就是依據選取的元件(Element)數量,下圖顯示的是選取一個元件時可以使用的 Tool 。


選取兩個元件以上時,則所有的 Tool 都可以使用,包括上圖一個元件可用的 Tool。

第二種分類方式,就是依據功能。
  • 對齊類
    • Align Top/Bottom/Left/Right - 對齊第一個元件的四個邊緣
    • Align Horizontal/Vertical Axes - 對齊第一個元件的中心水平軸/中心垂直軸
    • Align To Top/Bottom/Left/Right Margin - 對齊 Container 的四個邊緣
    • Center /Horizontally/Vertically  - 對齊 Container 的正中心/中心垂直軸/中心水平軸
  • 排版類
    • Organize As Table - 水平方向排列,水平距離相等(約10px),最左上元件貼齊 Container 左上角
    • Join Left/Right - 水平方向排列,無水平距離(前後緊貼),向左/右靠齊
    • Equal/Increase/Decrease/Remove Horiz. Space - 均分/增加/減少/移除水平距離,垂直位置不變
    • Equal/Increase/Decrease/Remove Vert. Space - 均分/增加/減少/移除垂直距離,水平位置不變
  • 調整尺寸類
    • Same Width/Height (/Min/Max) - 與第一個/最小的/最大的元件同寬/同高
    • Same Size - 與第一個元件同大小
    • Adapt to parent /width/height - 與 Container 同大小/同寬/同高
其中最好用的應該是 Organize As Table、Join Left/Right、Equal/Increase/Decrease/Remove Horiz./Vert. Space、Same Width/Height/Size 吧!

後來在 Report Inspector 對元件按右鍵,發現 iReport 有對 Formatting Tools 做分類:
  • Align
  • Size
  • Position
  • Horizontal Spacoing
  • Vertical Spacing 
  • Organize As Table

純手工排版

看過神奇的半自動排版工具,還是補充一下純手工的排版方式。

純手工排版最需要的就是「自動吸附」功能,iReport 提供兩種「自動吸附」。
  • 網格吸附(Grid)
    先從「檢視 > Report Designer > Show Grid」顯示網格,再從「檢視 > Report Designer > Snap to Grid」開啟網格吸附功能。
  • 物件吸附
    物件指的是已有的元件、Band 邊界與導線 Guideline,只要在座標軸上單點就可以產生一條導線,按住不放可以移動,移出左上角導線就會消失。
    元件利用導線對齊後,再移動導線並不會連帶移動以其對齊的元件

記住,兩種「自動吸附」只能二選一,開啟了網格吸附,物件吸附就自動失效。

如果半自動排版與純手工排版還搞不定,就只好去「屬性」裡輸入Top、Left、Width 與 Height 了。

特別的屬性 - Position Type

上面提到的排版結果,都是回歸到 Top、Left、Width 與 Height 四個屬性,另外還有一個屬性會影響到元件的位置,那就是 Position Type,有三個值可以設定:
  • Fix Relative To Top
    完全鎖死 Top 與 Left,即使前一個元件因內容而動態加高了,超出定義高度,也不會影響到這個元件的位置,而會出現覆蓋的情形。
  • Fix Relative To Bottom
    鎖死元件與 Band 下邊緣的距離,若前一個元件因內容而動態加高了,超出定義高度,連帶會使 Band 高度增加,而使 Band 下緣延伸,使用這個設定值,則會讓該元件跟著 Band 下緣走,所以不會出現「Fix Relative To Top」那種覆蓋的情形,多半用在資料分隔線。
    但是若在這個元件與 Band 下邊緣中間還有其他元件的話,就還是可能出現覆蓋的情形
  • Float
    會被前一個元件推著走,所以絕不會出現覆蓋的情形。

元件搬家

最後就是很少發生的需求,元件搬家,從一個 Band 搬到另一個 Band,精確的作法就是在 Report Inspector 裡拖拉,不精確的作法就是在 Designer 裡拖拉,在 Designer 裡移動元件,一定要確定整個元件包在 Container 裡,iReport 不允許元件超出 Band 邊界。

元件重疊了?

元件是可以重疊的,最常用在多個元件同時只會顯示一個元件的需求上,可以用「Print When Expression」控制。

重疊的另一個議題是順序,就是誰在上誰在下,以 Report Inspector 的樹狀圖來看,離父節點愈遠的,也就是排在愈下面的元件,是在最上層的,在 Report Inspector 對元件按右鍵,有四個順序相關的功能可用:
  • Bring To Front - 移到最上層
  • Bring Forward - 往上移一層
  • Send Backward - 往下移一層
  • Send To Back - 移到最下層
複製元件

除了少數元件以外,大部分元件是可以複製再貼上的。

沒有留言:

張貼留言