SHOEISHA iD

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

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

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

Curlで構築する電子県庁システム(ポータル・スケジューラー編)
RSSリーダーとメッセンジャー

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

ダウンロード サンプルソース (2.6 KB)

RSSリーダーの表示

 RSSリーダーで情報を表示する部分は部品化して作成しました。文字列のスクロールスピード(普通/速い/遅い)、スクロール種類(文字列が見えなくなるまでスクロール/右端にきたらスクロールを止める/すべて表示されたらスクロールを止める)、次の文字列を表示するまでの間隔を指定できるようにしました。コントロールのソースコードを簡単に説明します。コントロールのソースコードはダウンロードして実行できます。

文字列をティッカー表示するコントロール
文字列をティッカー表示するコントロール

 コントロールはグラフィカルな子を1つ格納するコンテナの基本クラスBaseFrameクラスを継承して作成しました。

BaseFrameクラスを継承
{define-class public MyScrollMessageFrame {inherits BaseFrame}
              :
            省 略
              :
}

 コンストラクタは、「①スクロールスピード」「②スクロール種類」「③次の文字列を表示するまでの間隔」「④表示を繰り返すか?」「⑤画面に表示されたら自動的にスクロールを再開するか?」を引数で受け取るようにしました。

コンストラクタ
{constructor public {default
                     scroll-speed: int  = MyScrollMessageFrame.NORMAL, ||①スクロールスピード
                     type: int          = MyScrollMessageFrame.SCROLL, ||②スクロール種類
                     delay: int         = 20,         ||③次の文字列を表示するまでの間隔
                     repeat?: bool      = false,      ||④表示を繰り返すか?
                     auto-resume?: bool = false, ...} ||⑤画面に表示されたら自動的にスクロールを再開するか?
  {construct-super ...}
            :
          省 略
            :
}

 文字列のティッカー表示はタイマーを使用しています。タイマーはTimerクラスを使用するば簡単に実現できます。

Timerクラスを使用
self._timer         =
    {Timer
        enabled? = false,
        interval = 100ms,
        delay = 0ms,
        {on t: TimerEvent do
            ||タイムアウト
            {if-non-null self.layout
             then
                {self.on-timeout-timer t}
            }
        }
    }

 文字列を描画している部分です。drawメソッドは描画が必要になったときに自動的に呼ばれるメソッドです。drawメソッドをオーバーライドして現在のスクロール位置に文字列を直接描画しています。

drawメソッドで文字列の描画
{method public {draw r2d: Renderer2d}: void
  {with-render-properties
      font          = {Font
                          self.font-family,
                          {self.any-to-distance
                              self.font-size,
                              {self.get-display-context}
                          },
                          weight = self.font-weight,
                          style  = self.font-style
                      },
      fill-pattern  = self.color,
      translation-x = self._message-xpos,
      translation-y = {r2d.get-font-ascent}
      on r2d do
      {r2d.render-string
          0pt,
          0pt,
          self._message
      }
  }
}

 コントロールを使用している部分です。コントロールを生成してappendメソッドで表示する文字列を登録します。startメソッドでティッカー表示が始まります。

コントロールの使用方法
{let v_frame: MyScrollMessageFrame =
    {MyScrollMessageFrame width = 500pt, height = 15pt,
        background = "silver", font-size = 12pt,
        type = MyScrollMessageFrame.STOP-IN-MESSAGE-END,
        repeat? = false, auto-resume? = true}
}

{do
    ||表示する文字列をセット
    {v_frame.append "Windows PowerShell 活用編(3) ファイル操作 3"}
    {v_frame.append "「会社の成長」と「自身の成長」を実感できるカカクコム"}
    {v_frame.append "VB.NETで入力エラーチェック機能を持ったフォームを作成する"}
    {v_frame.append "PR: 迷惑メール対策なら信頼のマトリックススキャンAPEX"}
    ||表示の開始
    {v_frame.start}
}

次のページ
メッセンジャー

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

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

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング