記事"グラフィカルインターフェイスXI:テーブルセル内のテキストエディットボックスとコンボボックス(ビルド15)"についてのディスカッション - ページ 3

 
Oleksii Chepurnyi:

そうだ。

実はそうなんだ。そんな記憶があるんだ...。あとは、何を変えたか思い出さないとね :)

これを追加したと思う。キー.mqh

どうもありがとう!
 
Oleksii Chepurnyi:

...

私はこれを追加していたと思う。キー.mqh

ライブラリーの最新アップデートに追加しました。次回の記事で付録として公開します。

さらに、CTable クラスのテーブルに関する更新もあります。

このクラスの最新バージョンは、こちらの記事でダウンロードできます:選択した基準による最適化結果の視覚化

少し後に、コードベースにあるライブラリの最新バージョンに追加されます:EasyAndFast

 
Anatoli Kazharski:

ライブラリーの最新アップデートに追加。次回は付録として公開予定。

また、CTable クラスのテーブルについてもいくつか更新があります。

このクラスの最新バージョンは、こちらの記事でダウンロードできます:選択した基準による最適化結果の視覚化

少し後に、コードベースにあるライブラリの最新バージョンが追加されます:EasyAndFast

もし可能であれば、この機能を追加してください:

セルのデータ型を指定する際に、小数点以下の文字数を指定してください:

例:m_table.DataType(column,TYPE_DOUBLE,2);

または、別の関数で文字数を指定します。

例:m_table.DataDigits(column,2);

 
Andrii Djola:

可能であれば、このような機能を増やしてほしい:

セルのデータ型を指定する際に、小数点以下の文字数を指定する:

...

小数点以下の 数も指定できるようになりました:

//+------------------------------------------------------------------+
//| 配列を指定されたインデックスで埋める。
//+------------------------------------------------------------------+
void CTable::SetValue(const uint column_index,const uint row_index,const string value="",const uint digits=0,const bool redraw=false)
  {
//--- 範囲外をチェックする
   if(!CheckOutOfRange(column_index,row_index))
      return;
//--- 値を配列に設定する:
// 文字列
   if(m_columns[column_index].m_data_type==TYPE_STRING)
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- リアル
   else if(m_columns[column_index].m_data_type==TYPE_DOUBLE)
     {
      m_columns[column_index].m_rows[row_index].m_digits=digits;
      double type_value=::StringToDouble(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::DoubleToString(type_value,digits);
     }
//--- 時間
   else if(m_columns[column_index].m_data_type==TYPE_DATETIME)
     {
      datetime type_value=::StringToTime(value);
      m_columns[column_index].m_rows[row_index].m_full_text=::TimeToString(type_value);
     }
//--- その他の型は文字列として設定される。
   else
      m_columns[column_index].m_rows[row_index].m_full_text=value;
//--- セルに収まらない場合は、テキストを調整して保存する。
   m_columns[column_index].m_rows[row_index].m_short_text=CorrectingText(column_index,row_index);
//--- 指定があればセルを再描画する
   if(redraw)
      RedrawCell(column_index,row_index);
  }
 
Anatoli Kazharski:

小数点以下の桁 数も指定できるようになった:

そうなんですが、入力フィールドに 小数点を入力すると、小数点以下はすべて捨てられてしまうので、ちょっと修正する必要がありました!

でも、あなたは素晴らしい仕事をしてくれました!

 
Rebuild関数を呼び出すと、ボタンの絵が表示されない。
 
Andrii Djola:
また、Rebuild関数を呼び出すと、ボタンの画像が描画されないという問題が発生しました。

これは、CTable::Rebuilding()メソッドですべてのセルが削除され、新しいセルが作成されるためです。したがって、テーブルを再構築した後、すべてのセルにデータを再度入力する必要があります。

アンドレイ・ジョラ

はい、しかし 入力フィールドに カンマで値を入力すると 、カンマ以降はすべて破棄されるので、少し修正する必要がありました!

どういう意味か詳しく教えてください。

 
テーブルを作成する のに使ったのと同じ関数でそれらを埋めますが、絵は描かれません。
 
Andrii Djola:
表を作成するのに使ったのと同じ関数を使って表を埋めていますが、絵が描けません。

何をどうやっているのか見せてください。それを見なければ、何かを提案することは難しい。

 
Anatoli Kazharski:

何をどうやっているのか見せてくれ。見てみないと何とも言えない。

このコードは削除してしまいましたが、もし再現できたらここに掲載します!