OpenLaszloアドバンスド・テクニック(3) Page 2/4
リアルタイム株価チャートの基盤フレームを作る
ネットエイト小野 圭二
2006/6/7
■画面モデルビューの作成
この画面設計に基づいてビュー化したモデルが図4です。このコードがリスト1となります。ここでは分かりやすくするために各ビューに色を付けています。
図4 画面ビューレイアウト |
<?xml version="1.0" encoding="UTF-8" ?> |
リスト1 画面ビューレイアウトのソースコード |
独自クラスの作成
リスト1のコードではチャート表示の各ビューである
- ローソク足・出来高チャート[candlechart]
- リアルタイム株価チャートビュー[realtimechart]
- 株価一覧ビュー[datalist]
に共通の振る舞いを持たせるため、「chartview」という独自クラスを作成して使っています。「chartview」クラスは<class>タグで宣言されています。
<class>タグはコンポーネントを拡張して独自のコンポーネントを作成するために使われます。ビューやコンボボックスなど、LZX標準タグのほとんどがこのクラスタグで機能拡張できます。また、ほとんどのLZX標準タグが同様に機能拡張されて作られています。
<class>タグには継承を表すextends属性があります。このextends属性を指定することで、「このクラスが何のクラスを継承するか」を指定でき、同時にそのクラスの機能を継承できます。このextends属性を指定しないとデフォルトで「view」クラスを継承することになります。
ここでは、viewクラスを継承し、ドラッグ機能を備えたクラスとしてchartviewクラスを作成しています。このようにクラスを作成すると、それ以降はname属性で指定した名前をタグ名として使用できます。そのため、チャート表示ビューでは<chartview>タグを使用しています。早い話、「オブジェクトを継承したクラスを作って使っている」ということです。
制約の記述
また、各タグの「width/height/x/y」で「${}」を使っています。これは「制約」と呼ばれるものです。例えば、contビューのheightは「${canvas.height*0.1}」となっています。これは「<canvas>の高さ(height)の10分の1」に同じであるということです。同じく、stocklistビューのheightは「${parent.height}」となっていますが、これは「自分の親(parent)の高さ(height)」に同じであるということです。
この場合の「親(parent)」は1つ上のビューであるcontビューを指します。親(parent)はつなげることで階層をたどっていくことができます。例えばリスト2の例では、「v4」が「v3」のheight属性を制約とするならば、「v4」のheight属性は「${parent.height}」で表されます。「v2」のheight属性を制約とするならば「${parent.parent.height}」、「v1」を制約とするならば「${parent.parent.parent.height}」です。
<canvas> |
リスト2 制約で階層をたどる |
このように、parentをつなげて階層をたどることができますが、あまり長くなると混乱してきます。そこで、ルートから見る方法もあります。つまり「v4」が「v1」のheight属性を制約とする場合、「${canvas.v1.height}」とも書けるのです。これは階層のルート(<canvas>)からたどった書式です。
<view>タグに名前を付ける属性には、「name」のほかに「id」もあります。id属性で指定された名前はそのアプリケーションでユニークな名前でなければなりません。name属性は同じ階層に同名がなければいいのです。リスト3の例では、同じ階層で同名ではないのでOKです。
<canvas> |
リスト3 name属性の使用法 |
ところがリスト4の例では、同名のidがあるのでコンパイルでワーニングが出ます。
<canvas> |
リスト4 id属性の間違った使用法 id属性の場合、異なる階層であっても同名のidがあってはならない。 |
2/4 |
INDEX |
||
OpenLaszloアドバンスド・テクニック(3) リアルタイム株価チャートの基盤フレームを作る |
||
Page1 はじめに アプリケーションの設計条件 株価チャートのおさらい アプリケーションの画面設計 |
||
Page2 画面モデルビューの作成 |
||
Page3 ビューへのコンポーネント配置 |
||
Page4 最後の仕上げとWebブラウザでの動作確認 |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|