記事"グラフィカルインタフェース IV:情報インターフェース要素(チャプター1)"についてのディスカッション

 

新しい記事 グラフィカルインタフェース IV:情報インターフェース要素(チャプター1) はパブリッシュされました:

開発の現段階では、グラフィカルインタフェース作成のライブラリは、フォームとそれに取り付けることができるいくつかのコントロールを含んでいます。今後の記事の1つがマルチウィンドウモードについてになることは、以前に言及されました。そのための準備が整ったので、それは次の章で対処します。この章では、ステータスバーとツールチップ情報インタフェース要素を作成するためのクラスを作成します。

本稿では、その項目にコンテキストメニューを取り付けずに単純なステータスバーを作成します。他のインターフェイス要素と同様に、ステータスバーは、いくつかのプリミティブオブジェクトで構成されています。

  • 背景
  • 項目
  • 区切り線

図1。ステータスバーの複合部分

図1。ステータスバーの複合部分

作者: Anatoli Kazharski

 
アナトリー、素晴らしい一連の記事で、関連性があります。1.各記事の冒頭に過去の記事のリストを掲載してください。サイト上の検索は常に正しくルール化されていません) 2.例題の形で知識をまとめてください。それをかみ砕いて説明する必要はありません、私はあなたの記事を読んで、思う - 理解するだろう。しかし、それは一度に楽しい結果を見ることが興味深いだろう。3.がんばってください。)
 
Alexey Volchanskiy:
アナトリー、一連の記事は素晴らしいし、適切だ。お願いがあります。各記事の冒頭に過去の記事のリストを掲載してください。サイト上の検索は常に正しくルール化されていません) 2.例題の形で知識をまとめてください。それをかみ砕いて説明する必要はありません、私はあなたの記事を読んで、思う - 理解するだろう。しかし、それは一度に楽しい結果を見ることが興味深いだろう。3.頑張ってください。)

ありがとうございます。

あなたは後で別の記事を書くことができ、その中で例として、あなたはすべてのライブラリのコントロールを持つグラフィカルなインターフェイスを 持つアプリケーションを作成します。そして、すでにこの記事で、すべての記事へのリンクを持つ完全なコンテンツを作ってください。このオプションは、ライブラリがどのように構成されているかに立ち入ることなく、ただMQLアプリケーションでライブラリを使いたい人にとって便利でしょう。

 
Anatoli Kazharski:

ありがとう。

あなたは、例としてすべてのライブラリコントロールでGUIアプリケーションを作成する別の記事を書くことができます。そして、すでにこの記事で、すべての記事へのリンクを含む完全なコンテンツを作ってください。

+1
 
Rashid Umarov:
取引する。)
 
素晴らしい!ありがとう。
 

こんにちは~、テスト用に提供されたテンプレートをロードしましたが、エラーが発生しました。

説明: 'return'-const pointerからnonconst pointerへの変換ができません。

ファイル:SplitButton.mqh

どうすれば直りますか?

 

Tol,最後の2つのバージョンは見ていませんが、それ以前はCCtatusBarにバグがありました:

ステータス・バーm_status_bar.ValueToItem()がタイマーの中で更新されている場合、メイン・ウィンドウが最小化されると、ステータス・バーがチャートの上でずっとハングします。私はこの ようにCProgramで常に監視しなければならない:

if(m_status_bar.IsDropdown()) { m_status_bar.ValueToItem(....); }

この問題を解決するには、ValueToItem()メソッドでCCtatusBarにこのようなチェックを 追加する必要がある:

//+------------------------------------------------------------------+
//| 指定されたインデックスの値を設定する。
//+------------------------------------------------------------------+
void CStatusBar::ValueToItem(const uint index,const string value)
  {
//--- 範囲外をチェックする
   uint array_size=::ArraySize(m_items);
   if(array_size<1 || m_wnd.IsMinimized())
      return;
//--- 範囲外の場合はインデックス値を調整する
   uint correct_index=(index>=array_size)? array_size-1 : index;
//--- 送信テキストの設定
   m_items[correct_index].Description(value);
  }
//+------------------------------------------------------------------+

そうすれば、すべてがうまくいき、プログラムの中で常にそれを覚えてコントロールする必要がなくなる。

 
Artyom Trishkin:

...

ステータス・バー m_status_bar.ValueToItem()がタイマーで更新されている場合、メイン・ウィンドウが最小化されると、ステータス・バーが常にチャートに表示され、最小化されません。

...

確認しました。記事のほぼすべてのテスト例には、タイマーで更新されるステータスバーがあります。記述された動作は再現されない
 
Anatoli Kazharski:
確認してください。記事にあるほとんどすべてのテスト例には、タイマーの更新を伴うステータス行がある。説明されている動作は再現されません

その動作のビデオを録画したかったのですが、残念ながら、あなたのバージョンのValueToItem()に戻った後、この動作も失われてしまいました。でも、あったんだ。たぶん、今市場が閉まっているからだと思う。

またいつかどこかでこのバグに遭遇しないように、提案した方法を残しておこうと思う。

 


動作は標準です。
この場を借りてお聞きします。
ステータスバーにアイコンを使うにはどうしたらいいでしょうか?

接続インジケータとか...
)