ライブラリ: EasyAndFastGUIグラフィックインターフェース作成ライブラリ - ページ 20

 

今日、私はこのライブラリを使い始めました、2019.03.13 16:43からのビルド(ビルド16だと思います)。テーブルの作成に使っていますが、ほぼ完璧に動作しています:

https://www.mql5.com/ja/articles/2500#para6

https://www.mql5.com/ja/articles/2897#para7

私にとってはソート機能が重要 なので、"X "の記事の指示に従ってライブラリを使っています。そのビルド(ビルド6)を使用した場合、テーブルは非常にうまく動作しますが、最後のビルド(ビルド16)を使用した場合、ヘッダーセルをクリックしてもテーブルが要素をソートしません。

主な違いを調べると、Table.mqhというファイルにこのような記述がありました。


これはビルド6のものです:

void CTable::SortData(const uint column_index=0)
{
   ...
   //--- 最後にソートされたデータ列のインデックスを格納する。
   m_is_sorted_column_index=(int)column_index;
   //--- ソート
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
   //--- テーブルの更新
   UpdateTable();
   //--- ソート方向に従ってアイコンを設定する。
   m_sort_arrow.State((m_last_sort_direction==SORT_ASCEND)? true : false);
}

これがビルド16です:

void CTable::SortData(const uint column_index=0,const int direction=WRONG_VALUE)
{
   ...
   //--- Запомним индекс последнего отсортированного столбца данных
   m_is_sorted_column_index=(int)column_index;
   //--- Сортировка
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
}


新しいビルドでは "Update "メソッドがないので、これがソートされない原因だと思います。


そのため、この変更を行ったところ、どうやらうまくいったようだ:

void CTable::SortData(const uint column_index=0,const int direction=WRONG_VALUE)
{
   ...
   //--- Запомним индекс последнего отсортированного столбца данных
   m_is_sorted_column_index=(int)column_index;
   //--- Сортировка
   QuickSort(first_index,last_index,column_index,m_last_sort_direction);
   
   //--- テーブルの更新
   Update(true);
}



追記:ロシア語のコメントはあまり役に立ちません。

Graphical Interfaces VII: the Tables Controls (Chapter 1)
Graphical Interfaces VII: the Tables Controls (Chapter 1)
  • www.mql5.com
The first article Graphical Interfaces I: Preparation of the Library Structure (Chapter 1) explains in detail what this library is for. You will find a list of articles with links at the end of each chapter. There, you can also download a complete version of the library at the current stage of development. The files must be placed in the same...
 

Labelクラスはライブラリのどこにありますか?一つのLabelを作成するには?

 

グスタボ美女?

グラフ・チャートの並べ替えを成功させるために、ここでも頭を悩ませていたんだけど、偶然それを見つけたんだ.

それは、"program.mqh "のON_SORT_DATAイベントでテーブルを更新させる必要があるということです:

// --- テーブルイベントの順序
if (id == CHARTEVENT_CUSTOM + ON_SORT_DATA)
{
if (lparam == m_table_symb.Id ())
{
m_table_symb.Update (true);
return;
}
// ---
return;
}


参考になれば幸いです!

ここでは完璧に動作しました

T +

ラウル

 
raulpjr:

ここは英語のフォーラムです。英語でのみ投稿してください。

必要に応じてサイトの翻訳ツールを使用してください。

コードを投稿する場合は、コードボタン(Alt +S)を使用してください。

今回、あなたの投稿を編集しました。

 

MT4でExampleEAFをインジケーターとしてライブラリからビルドした場合、チャート上でウィンドウをドラッグしようとするとエラーでクラッシュします。

MT5では問題なく動作します。

array out of range in 'WndEvents.mqh' (288,72)

最初のサイクルでレンジオーバーのチェックを追加すると、ドラッグは機能します。

void CWndEvents::CheckElementsEvents(void)
  {
//--- マウスカーソル移動イベントの処理
   if(m_id==CHARTEVENT_MOUSE_MOVE)
     {
      //--- チャートの別のサブウィンドウにフォームがある場合は終了する。
      if(!m_windows[m_active_window_index].CheckSubwindowNumber())
         return;
      //--- 利用可能な項目のみをチェックする
      int available_elements_total=CWndContainer::AvailableElementsTotal(m_active_window_index);
      for(int e=0; e<available_elements_total; e++)
        {
         // !!!追加チェック
         if (e >= ArraySize(m_wnd[m_active_window_index].m_available_elements)) continue;
         CElement *el=m_wnd[m_active_window_index].m_available_elements[e];
         //--- 要素のフォーカスをチェックする
         el.CheckMouseFocus();
         //--- イベント処理
         el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
        }
     }
//--- マウスカーソルの移動を除くすべてのイベント
   else
     {
      int elements_total=CWndContainer::ElementsTotal(m_active_window_index);
      for(int e=0; e<elements_total; e++)
        {
         //--- 利用可能な項目のみをチェックする
         CElement *el=m_wnd[m_active_window_index].m_elements[e];
         if(!el.IsVisible() || !el.IsAvailable() || el.IsLocked())
            continue;
         //--- アイテムハンドラでのイベント処理
         el.OnEvent(m_id,m_lparam,m_dparam,m_sparam);
        }
     }
//--- イベントをアプリケーション・ファイルに向ける
   OnEvent(m_id,m_lparam,m_dparam,m_sparam);
  }

しかし、ウィンドウをチャートエリア全体に「拡大」して戻そうとすると、動作しなくなります。

MT4でも正常に動作するように、この問題を修正する方法を教えてください。

何が違うのでしょうか?MT4ではコンパイル時に警告が出ないので、どの方向から掘り下げればいいのかわかりません。


また、MT4ではインジケーターとしてコンパイルする際、フォーカスの切り替えが機能しません。ドロップダウンリストを開き、どこか脇をクリックしても、リストは閉じず、入力フォーカスは別の要素に切り替わりません。エキスパートモードでは正常に機能します。

MT5ではExpert Advisorもindicatorも正常に動作します。

 
テキストフィールドから テキストをコピー&ペーストすることは可能ですか?
 

テーブルに関するもう一つの興味深い不具合。

何度か入力すると、文字が2倍、3倍と増えていくのだ(gif参照)。

何が問題なのでしょうか?

ファイル:
ScreenFlow.gif  28 kb
 

CreateTextEditは中国語入力をサポートしていないようですが?


CreateTextEditは中国語入力をサポートしていないようですが?

 

こんにちは

このライブラリのMT4バージョンはどこでダウンロードできますか?

 
このライブラリを使用したプログラム(Expert Advisor)のデフォルトフォントを変更する方法を教えてください。プログラムヘッダーのタイトルから始まるすべてを印刷するものです。せめてサイズを変えてください(大きくしてください)。