記事「MQL5 MVCパラダイムにおけるテーブルのビューおよびコントローラーコンポーネント:コンテナ」についてのディスカッション

 

新しい記事「MQL5 MVCパラダイムにおけるテーブルのビューおよびコントローラーコンポーネント:コンテナ」はパブリッシュされました:

この記事では、コンテンツのスクロールに対応したContainer(コンテナ)コントロールの作成について解説します。その過程で、既存のグラフィックライブラリのコントロールクラスを改良していきます。

MVC (Model-View-Controller)パラダイムにおけるTableViewコントロールの開発の一環として、テーブルモデル(モデルコンポーネント)を作成し、ビューおよびコントローラーコンポーネントの作成を開始しました。前回の記事では、シンプルながら十分に機能するコントロールを作成しました。複雑なコントロールは、こうした要素を組み合わせて構築されます。本記事では、Panel、GroupBox、Containerの3つのコントロールクラスを作成します。これらはいずれもコントロール配置用のコンテナです。

  • Panelコントロールは、任意の数のコントロールを配置できるパネルです。Panelを新しい座標に移動すると、その上に配置されたすべてのコントロールも一緒に移動します。このように、Panelは配置されたコントロールのコンテナとなります。ただし、Panelにはコンテンツが境界を超えた場合にスクロールするためのスクロールバーはありません。超過部分はコンテナの枠に合わせて切り取られます
  • GroupBoxコントロールは、複数の要素を1つのグループにまとめるコントロールです。Panelを継承しており、たとえばラジオボタンのグループのように、特定の目的で要素をまとめることができます。ラジオボタンのグループ内では1つの要素のみが選択され、残りは非選択状態になります。
  • Containerコントロールは、1つのコントロールのみを自身に追加できます。追加された要素がContainerの範囲を超える場合、スクロールバーが表示され、コンテンツをスクロールできるようになります。コンテナのコンテンツをスクロールできるようになります。任意の数のコントロールをContainerに配置するには、まずPanelをContainer内に置き、そのPanelに必要な数のコントロールを追加します。こうすることで、ContainerがPanelをスクロールし、Panelがスクロールに応じて内部コンテンツを移動します。

このため、前述の3つの主要コントロールに加えて、スクロールバー作成用のクラス(ThumbクラスとScrollBarクラス)も作成する必要があります。スクロールバーは縦横それぞれのクラスを用意します。

インジケーターをコンパイルし、チャート上で実行します。


トラックをクリックしたときの1画面スクロールは動作し、ボタンをクリックしたときのスクロールも動作します。ボタンを押し続けたときのイベント自動繰り返しも機能し、ホイールスクロールも動作します。


作者: Artyom Trishkin