記事"グラフィカルインタフェースX:リストとテーブルの高度な管理コードの最適化(ビルド7)"についてのディスカッション - ページ 6

 
Anatoli Kazharski:

まあ、あなたは "行ったり来たりするリデザイン "に慣れていないからね。)

おそらく来週には新しい記事が出るだろう。複数行入力フィールドの 最初のバージョンを紹介する予定だ。それ以降の記事では、プライベートやフォーラムで議論されたことを徐々に追加していくつもりだ。

ItemsSelectedTotal();ItemsUnselectedTotal();メソッドをItemsTotal()と一緒に追加します;
 
Artyom Trishkin:
ItemsSelectedTotal();ItemsUnselectedTotal();メソッドをItemsTotal()と一緒に追加します;

CListViewと CCheckBoxListに 追加するか?

そうするつもりだが、次の記事では書かない。だから、かなり大きな記事になるだろう。

 
Anatoli Kazharski:

CListViewと CCheckBoxListに

追加するつもりだが、次の記事では書かない。これはかなり大きな記事だ。

そうですね。オーケー、ありがとう。
 

Tol.リスト・アイテムのどのチェック・ボックスにチェックが入っているかをプログラムで調べる方法を教えてください。クリックせずに。

私はリスト内のすべてのチェックされた項目を配列する必要があります。

困っています。どの方向を見ればいいのか教えてください。

 
Artyom Trishkin:

Tol.リスト・アイテムのどのチェック・ボックスにチェックが入っているかをプログラムで調べる方法を教えてください。クリックせずに。

私はリスト内のすべてのチェックされた項目を配列する必要があります。

困っています。どの方向を見ればいいのか教えてください。

CCheckBoxList::GetItemState()
 
Anatoli Kazharski:
CCheckBoxList::GetItemState()

ありがとう。私がやったのはそれです。私は0からItemsTotal()までループしていました。私のせいで、それが不具合を起こしていた理由です。

時間枠を切り替えたときにチェックボックスの状態はリセットされますか?

もしそうなら、この不快な瞬間を回避する方法を教えてください。(私の場合はリセットされましたが、何か間違っているのかもしれません)。

 
Artyom Trishkin:

ありがとう。私がやったのはそれです。0からItemsTotal()までループしていました。私のミスです。

時間枠を切り替えるとチェックボックスの状態はリセットされるのでしょうか?

もしそうなら、この不快な瞬間を回避する方法を教えてください。(私はリセットしましたが、何か間違っているのかもしれません)。

ファイルに書き込む必要があります。そしてGUIをインストールするときにそれを読む。これは将来の記事のテーマであり、まだ長い道のりがあります。

 
Anatoli Kazharski:

ファイルに書き込まなければならない。そしてGUIをインストールするときにそれを読む。これは今後の記事のトピックであり、まだ先は長い。

僕はもうやっているよ。素早い返信を待っていたわけではありません;)
 

Anatol、私は0列目のテーブル行に書かれた文字の入札価格をタイマーのテーブルに書き込もうとしています:

//+------------------------------------------------------------------+
//| タイマー|
//+------------------------------------------------------------------+
void CProgram::OnTimerEvent(void)
  {
   CWndEvents::OnTimerEvent();
   //--- リストとテーブルの更新を一時停止する
   if(m_counter1.CheckTimeCounter()) {
      uint sz=m_table_main_symbol_list.RowsTotal();
      for(uint i=1; i<sz; i++) {
         string sy=m_table_main_symbol_list.GetValue(0,i);
         MqlTick tick;
         if(sy!=NULL && sy!="") {
            if(SymbolInfoTick(sy,tick)) {
               int dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
               m_table_main_symbol_list.SetValue(1,i,DoubleToString(tick.bid,dg),dg);
               m_table_main_symbol_list.TextColor(1,i,clrDimGray);
               //m_table_main_symbol_list.UpdateTable();
               }
            }
         }
      //--- グラフを再描画する
      m_chart.Redraw();
      }
//--- ステータスバーの更新を一時停止する
   if(m_counter2.CheckTimeCounter()) {

      //--- グラフを再描画する
      m_chart.Redraw();
      }
  }
//+------------------------------------------------------------------+

UpdateTable()を行わないと、テーブルのセルに データが表示されません。UpdateTable()を行わないと、テーブルセルにデータが表示されません。新しいティックを取得するたびにテーブルを更新すると、テーブルが点滅し、ハイライトされた行が点滅するなど、テーブルで作業することが不可能になります。

どうすればこの状況を打破できるでしょうか?

 
Artyom Trishkin:

アナトール、私はタイマーでテーブルのインデックス1の列に0列のテーブルの行に入力された文字の入札価格を書き込もうとしています:

...

UpdateTable()なしでそれを行うと、テーブルのセルにデータが表示されません。新しいティックを受信するたびにテーブルを更新すると、テーブルが点滅し、選択した行が点滅するなど、テーブルでの作業が不可能になります。

この状況を打開するには?

再現するのに十分なデータがありません。自分で再現できるように、完全な例を添付してください。