CodeZine(コードジン)

特集ページ一覧

Curlで構築する長崎県電子県庁システム(ポータル・スケジューラー)
UIの向上と帳票

第2回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

目次

F5キーの無効化

 一般的なブラウザでは、F5キーを押すとブラウザの更新が行われページが初期化されてしまいます。しかし、以下のようにすることで、Curlではブラウザにイベントが通知される前にイベントを無効化できます。

F5キーの無効化
{{get-gui-manager}.add-event-handler
  {on t: KeyPress do
    {if t.value == KeyPressValue.f5 then
      {t.consume}
    }
  }
}

帳票出力

 ポータル・スケジューラーは、帳票出力として以下の2つを実装しています。

予定をエクセル形式で出力

 PHPでpearのSpreadsheet_WriteExcelを使用して、予定をエクセル形式で出力します。ただし、出力されるファイルフォーマットがExcel 95形式なので、1セル255文字までの制約があります。なお、出力形式を2000形式にするパッチが公開されているようです(参考:Spreadsheet_Excel_WriterでBIFF8を取り扱う - Paradigm Shift Design)。

画面のハードコピー

 画面のハードコピーをBMP形式でローカルに一時保存し、保存したファイルをプリンタに出力します。わざわざ帳票を作成するまでもないときは使えそうな機能だと思います。

画面に表示しているViewをBMPに保存する
{define-proc public {my-graphic-to-bitmap p_image: Graphic, p_file: Url}: void
  let v_gc: DisplayContext = {p_image.get-display-context},
      v_rect: GRect        = {p_image.layout.get-bounds},
      (r2: Renderer2d,
       d: Drawable)        = {Renderer2d.create-offscreen
                               v_rect.width,
                               v_rect.height,
                               1 / v_gc.pixel-size
                             },
      v_data: ImageData    = {ImageData}
  {r2.render-rectangle
    0pt, 0pt,
    v_rect.width - 0.5pt, v_rect.height - 0.5pt,
    fill-pattern = "white"
  }
  {{p_image.get-graphical-root}.draw r2}
  {r2.render-line
    0pt, 0pt,
    0pt, v_rect.height - 0.5pt,
    fill-pattern = "black"
  }
  {r2.render-line
    0pt,                  v_rect.height - 0.5pt,
    v_rect.width - 0.5pt, v_rect.height - 0.5pt,
    fill-pattern = "black"
  }
  {r2.render-line
    v_rect.width - 0.5pt, v_rect.height - 0.5pt,
    v_rect.width - 0.5pt, 0pt,
    fill-pattern = "black"
  }
  {r2.render-line
    v_rect.width - 0.5pt, 0pt,
    0pt,                  0pt,
    fill-pattern = "black"
  }
  set v_data.pixmaps =
        {new {Array-of Pixmap},
          {d.to-Pixmap}
        }
  {v_data.save-to-url p_file, "image/bmp"}
  {d.destroy}
}

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • 株式会社ドゥアイネット 前田慎治(マエダシンジ)

    株式会社ドゥアイネットに勤務するプログラマーです。制御系から事務系まで 様々な開発を経験し、現在はCurlやOpenLaszloを使ってRIAの開発を担当してい ます。 OpenLaszloで開発した「スマートスケジューラー」 http://www.dinss.jp/

バックナンバー

連載:Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)
All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5