記事"グラフィカルインターフェイスX:ソート、テーブル再構築とセル内のコントロール(ビルド11)"についてのディスカッション - ページ 4

 
Anatoli Kazharski:

1.開発中のMQLアプリケーションのグラフィカル・インターフェースの作成が完了し、いくつかの取引機能を追加する場合、プログラムのロード/リロード時にプログラムの値を初期化する必要があるかもしれません。これは単なる例であり、カスタムCProgram クラスから、またカスタムCProgram クラスに対して動作するようになっています。ライブラリーの開発が完了したら、もう少し本格的な例を紹介するつもりだ。第2段階はまもなく終了し、このライブラリを使ったMQLアプリケーションの実例を紹介できるようになる。

2.フォームにも同様のストレッチ・プロパティを設定する。

3.はい、必須です。

//---

追伸: 現在のところ、ライブラリの最新バージョンはこちらの記事:GUI X: 複数行入力フィールドでのテキスト選択 (build 13) にあります。


ありがとうございます。ところで、配列のオーバーフローエラーに気づいたのですが、例11_01で最後の行を選択し、例えば最初の行を削除してから最後の行を再度選択すると、こうなります:

2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) 'CanvasTable.mqh' (1897,19) の配列が範囲外です。

TestLibrary11_01という名前に注目しないでください。これは例11_01で、ライブラリは最新、つまり13番目のバージョンです。


もうひとつ質問ですが、スクロール・スライダーのタップ・ステップを変更するには、どのような方法を使うのでしょうか?

 
Konstantin:


1.ありがとうございます。ところで、配列のオーバーフローエラーに気づきました。例11_01で最後の行を選択し、例えば最初の行を削除し、再び最後の行を選択すると、次のようになります:2017.04.19 20:27:52.564 TestLibrary11_01 (RUAL,H1) array out of range in 'CanvasTable.mqh' (1897,19)

2.もう一つの質問ですが、スクロールスライダーのタップステップを変更するには、どのような方法を使用するのでしょうか。

1.次のアップデートで確認し、修正します。

2.まだ実装されていません。実装します。

 

テーブル機能のみが必要で、CWindow フォームへのバインディングが必須である場合、アクティベートしないことは可能でしょうか:

1. メニューコントロール

2.フォーム削除ボタン

3.テーブルのセル値を更新する方法は?(質問は削除しました。SetValue メソッドでredraw パラメータを見ました) :))

4.SetValue(const uint column_index,const uint row_index,const string value="",const uintdigits=0,const bool redraw=false)という メソッドがよくわからないのですが、なぜ文字列型と実数に分けるのでしょうか?私見では、文字列は テーブルに格納した方が良いと思う。しかし、どうしても必要なら、戦術的に2つのメソッドを作った方がいい。

OnInitEventメソッドの使い方がよくわからなかったので、例を待つことにする。

 
Konstantin:

テーブル機能のみが必要で、CWindow フォームへのバインディングが必須である場合、アクティベートしないことは可能でしょうか:

1. メニューコントロール

2.フォーム削除ボタン

3.テーブルのセル値を更新する方法は?

OnInitEventメソッドの使い方がよくわかりませんでした。

1.MQLアプリケーションCProgramのユーザークラスでは、グラフィカル・インターフェースを自分で構築します。したがって、メイン・メニューが不要な場合は、このクラスでこれらの要素を作成しなければよいだけです。

2.これはフォーム上の必須ボタンです。このボタンをクリックすると、このアクションを確認するウィンドウがポップアップ表示されるため、誤ってグラフからアプリケーションを削除することはできません。

3.グラフィカル・インターフェースX:描画テーブルの更新とコードの最適化(ビルド10)」の例を参照してください。簡単に言うと、CCanvasTable::SetValue() メソッドを使用します。


 
Anatoli Kazharski:

1.MQLアプリケーションCProgramのユーザー・クラスでは、グラフィカル・インターフェースを自分で構築します。したがって、メイン・メニューが不要な場合は、このクラスでこれらの要素を作成しなければよい。

2.これはフォーム上の必須ボタンです。この操作を確認するためのウィンドウが表示されるので、これをクリックして誤ってグラフからアプリケーションを削除することはできません。

3.グラフィカル・インターフェースX:描画テーブルの更新とコードの最適化(ビルド10)」の例を参照してください。簡単に言うと、CCanvasTable::SetValue() メソッドを使います。



ポイント 2 では、MessageBox にもカスタマイズ可能なボタンセットがあります。Qt では、これらのボタンのセットを変更することも可能で、標準ライブラリの MetaQuotes でも変更可能です。
 
Konstantin:

...

4.SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false) というメソッドがよくわからないのですが、なぜ文字列型と実数に分かれているのでしょうか?私見では、文字列は テーブルに格納した方が良いと思う。しかし、どうしても必要なのであれば、戦術的に2つのメソッドを作った方がよい。

データ型がよくわかりません。これらはすべて文字列として 格納されます。データ型は、ソート用のDataType()メソッドでカラムごとに指定します。また、SetValue()メソッドのdigits パラメータで、セルごとに区切り文字以降の桁 数を個別に指定できます。
 
Konstantin:

2.については、MessageBoxにもカスタマイズ可能なボタンセットがあります。Qtでは、これらのボタンのセットを変更することも可能で、標準ライブラリのMetaQuotesでも変更可能です。

現在のボタンは

  1. ウィンドウを閉じる
  2. ウィンドウの折りたたみ/展開
  3. ツールチップ。

他に何が必要ですか?

 
Anatoli Kazharski:

今はボタンがある:

  1. ウィンドウを閉じる
  2. ウィンドウの折りたたみ/展開
  3. ツールチップ

他に何が必要ですか?


私が言っているのは、このセットを変更可能にすべきだということで、これら3つのボタンすべてが常に必要なわけではないのです ))
 
Anatoli Kazharski:
データ型について理解できません。すべて文字列として 格納されています。データ型は、ソート用のDataType()メソッドを使って列ごとに指定します。そして、SetValue()メソッドのdigits パラメータで、各セルのセパレータ以降の桁 数を個別に指定できます。


)))これで理解できましたが、ところでDataType()のデフォルトではどのような型になっているのでしょうか?それともデフォルトの状態はなく、セルに追加する前に格納されている値の型を決定する必要があるのでしょうか?

PS.書き忘れましたが、メニューにリソース画像が常にロードされるわけではありません。

 
Konstantin:

私が言っているのは、このセットを変更可能にすべきだということだ。)

2と3は、すでに省略可能です。CProgram ユーザー・クラスのフォーム作成メソッドでは、メソッドを呼び出さない:

   m_window.UseRollButton();
   m_window.UseTooltipsButton();