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

 
EasyAndFast GUIのバグ

MT4バージョン

ExpertsArticle09

編集が常にちらついている。

Anatoli Kazharski このバグを解決してください。

https://www.mql5.com/en/forum/274301


EasyAndFast GUI bug
EasyAndFast GUI bug
  • 2018.08.20
  • www.mql5.com
I download the library of the last MT4 version https://www.mql5.com/en/code/19703 Experts\Article09\TestLibrary03 The Edit is always flickering...
 
Oleksii Chepurnyi:

こんにちは。

もっと大きな問題です :)

ダイナミック・オブジェクトを作成する。

...

ダイナミック・オブジェクトを作成 するためのライブラリをテストしたことがないので、今は何もアドバイスできません。

 

このライブラリを使ってGUIを作成したアプリケーションのもう一つの例:


 
greentreen:

MT4バージョン。

残念ながら、MT4では動作しなくなったため、現在はお役に立てません。このバージョンのライブラリはMT5でのみテストされています。

 
Anatoli Kazharski:

ダイナミック・オブジェクト作成 用のライブラリをテストしたことがないので、今はアドバイスできない。

そうだと思った。)

単純なオブジェクトの場合はこう書いた:

//+------------------------------------------------------------------+
//|| 要素の配列からポインタを削除する。
//+------------------------------------------------------------------+
void CWndContainer::DeleteElementsFromArray(const int window_index,const int id)
  {
   int windows_total=::ArraySize(m_windows);
//--- データベースにコントロール用のフォームがない場合
   if(windows_total<1)
     {
      ::Print(__FUNCTION__,「形は一つではない");
      return;
     }
//--- 存在しないフォームに対するリクエストの場合
   if(window_index>=windows_total)
     {
      ::Print(PREVENTING_OUT_OF_RANGE," window_index: ",window_index,"; windows total: ",windows_total);
      return;
     }
//--- 共通配列から要素を取り除く
   DeleteElement(id,m_wnd[window_index].m_elements);
//--- 配列から主要な要素を取り除く
   DeleteElement(id,m_wnd[window_index].m_main_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_timer_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_available_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_x_resize_elements);
//--- 
   DeleteElement(id,m_wnd[window_index].m_auto_y_resize_elements);
  }
//+------------------------------------------------------------------+
//|| 要素の配列からポインタを削除する。
//+------------------------------------------------------------------+
template<typename T>
void CWndContainer::DeleteElement(const int id,T &array[])
  {
   bool del=false;
   for(int i=0;i<ArraySize(array);i++)
     {
      if(del)
        {
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
         continue;
        }
      if(array[i].Id()==id)
        {
         del=true;
         if(i==ArraySize(array)-1) break;
         array[i] = array[i+1];
        }
     }
   if(del) ArrayResize(array,ArraySize(array)-1,RESERVE_SIZE_ARRAY);
  }
//+------------------------------------------------------------------+
 

テーブルの1列目だけに画像付きボタンが追加され、他の列では機能しません。

バグでしょうか?

 
Vladimir Ananich:

表では、画像付きボタンは最初の列にのみ追加され、残りの列では機能しません。

すべての列に追加することができます。

 
Anatoli Kazharski:

何にでも追加できる。

ありがとう。

でも不思議なことに、セル内のアライメントが中央か右に設定されていると、画像が表示されません。

アライメントが左の場合は問題なく動作します。

 
Vladimir Ananich:

ありがとう。

しかし、不思議なことに、セル内のアライメントを中央または右端に設定すると、画像が表示されません。

左端なら問題なく表示されます。

はい、今はそのような制限があります(左端のみ)。