SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)(AD)

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

第2回

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

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}
}

次のページ
デバッガ・ヘルプ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Curlで構築する長崎電子県庁システム(ポータル・スケジューラー編)連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3331 2008/12/08 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング