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

 

こんばんは。

mouse.mqhです。

//+------------------------------------------------------------------+
//| マウスの左ボタンの状態が変わったかどうかをチェックする。
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=(bool)int(mouse_state);
//--- マウスの左ボタンの状態を変更するメッセージを送信する。
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- マウスの左ボタンの現在の状態を返す
   return(left_button_state);
  }
//+------------------------------------------------------------------+

ここではsparamを渡していますが、私が理解する限り、0以外の値はマウスボタンが押されたものとして扱われます。しかし、ゼロ以外の値は、すべてのマウスボタン、それに少なくともShiftとControlによって 与えられます。

これは意図された方法なのでしょうか?

 
Oleksii Chepurnyi:

こんばんは。

マウス.mqh

ここではsparamを渡しているが、私が理解する限り、ゼロ以外の値はマウスボタンが押されたものとして扱われる。しかし、ゼロ以外の値は、すべてのマウス・ボタンと、少なくともShiftとControlによって与えられます。

それは意図された方法ですか?

いや、これは僕のカスタムタスクのための一時的な解決策なんだ。

今はライブラリのどこにも使われていないようだ。必要なら改良できる。

 
Anatoli Kazharski:

いや、それは僕のカスタムタスクのための一時的な解決策だったんだ。

今はライブラリーのどこにも使われていないようだ。必要なら改良できる。

よく使いますよ。)例えば、ウィンドウのドラッグ、SpinEditのクイックスワイプ。LKMの状態がチェックされるところならどこでも。

こんな感じにしました。

//+------------------------------------------------------------------+
//| マウスの左ボタンの状態が変わったかどうかをチェックする。
//+------------------------------------------------------------------+
bool CMouse::CheckChangeLeftButtonState(const string mouse_state)
  {
   bool left_button_state=((int)mouse_state==1);
//--- マウスの左ボタンの状態を変更するメッセージを送信する。
   if(m_left_button_state!=left_button_state)
      ::EventChartCustom(m_chart.ChartId(),ON_CHANGE_MOUSE_LEFT_BUTTON,0,0.0,"");
//--- マウスの左ボタンの現在の状態を返す
   return(left_button_state);
  }
//+------------------------------------------------------------------+
 
Anatoli Kazharski:

いや、それは僕のカスタムタスクのための一時的な解決策だったんだ。

今はライブラリーのどこにも使われていないようだ。必要なら改良できる。

最新リリースでは -https://www.mql5.com/ja/code/19703

を追加できない。

 //CCanvasTable m_canvas_table;

問題は、私が古いバージョンの例を見ていることにあるようだ!


class CProgram : public CWndEvents
  {
protected:
   //--- 時間カウンター
   CTimeCounter      m_counter1; // 実行プロセスを更新する
   CTimeCounter      m_counter2; // ステータス・バーの項目を更新する
   //--- メイン・ウィンドウ
   CWindow           m_window;
   //--- 写真
   CPicture          m_picture1;
   
   //--- メインメニューとそのコンテキストメニュー
   CMenuBar          m_menubar;
   CContextMenu      m_mb_contextmenu1;

   //--- 図面表
   //CCanvasTable m_canvas_table;
   
   //--- ステータス文字列
   CStatusBar        m_status_bar;

 
 

 
EasyAndFastGUI - библиотека для создания графических интерфейсов
EasyAndFastGUI - библиотека для создания графических интерфейсов
  • www.mql5.com
Библиотека EasyAndFastGUI дает возможность создавать графические интерфейсы для своих MQL-программ.
 
Yuriy Zaytsev:

最新リリース -https://www.mql5.com/ja/code/19703

を追加できない。

問題は、私が古いバージョンの例を見ていることにあるようだ!


私はBuild 10のバージョンを手に入れたが、https://www.mql5.com/ja/articles/3042!

私はこのようなことをしなければなりませんでした。

MQL5IncludeEasyAndFastGUI_B10

MQL5Include\EasyAndFastGUI_B16

Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
Графические интерфейсы X: Обновления для нарисованной таблицы и оптимизация кода (build 10)
  • www.mql5.com
О том, для чего предназначена эта библиотека, более подробно можно прочитать в самой первой статье: Графические интерфейсы I: Подготовка структуры библиотеки (Глава 1). В конце статей каждой части представлен список глав со ссылками. Там же есть возможность загрузить к себе на компьютер полную версию библиотеки на текущей стадии разработки...
 

素晴らしいライブラリです!

MICEX用のシンプルだが便利なインジケーターを作ってみた。

シェア、一日の成長率は、その後、標準的なデータ、一日の初めから購入するボリューム BuyVol、販売するボリューム SellVol、一日の初めからボリュームのVolDelta差、私はボリュームの現在の差の%を終了します。

緑のデルタ - それは買いを保持することが望ましい、または買いのエントリーポイントを探してみるなど



 
Yuriy Zaytsev:

ビルド10のバージョンで、https://www.mql5.com/ja/articles/3042!

私はこのようなことをしなければならなかった。

MQL5IncludeEasyAndFastGUI_B10

MQL5Include。

メッセージありがとう。今は時間がないんだ。何が問題なのか、もう少し後で調べてみます。

 
Yuriy Zaytsev:

ビルド10のバージョンで、https://www.mql5.com/ja/articles/3042!

私はこのようなことをしなければならなかった。

MQL5IncludeEasyAndFastGUI_B10

MQL5/Include/EasyAndFastGUI_B16

ライブラリが大幅に再設計された後は、ビルド番号を覚えていない。新しいビルドには CCanvasTable がない可能性が高いです :)

記事の結論に、リリース時のライブラリの一般的なスキームがありますので、比較してみてください。

 
こんにちは

table関数を使ってカラムに色をつけることはできないのでしょうか?


2つのインジケータを追加した場合。

close window関数は2つのウィンドウを閉じます。
collect window関数は2つのウィンドウを収集します。
ご協力ありがとうございました。

私はブラジルから来ました。この言語での間違いをお詫びします。


 
こんにちは
私は以下の変更を加えました

Table.mqhファイルに

      string            m_header_text;    // 列のヘッダー・テキスト
      color             m_header_color;   // カラムヘッダーテキストの色 //André
      CTCell            m_rows[];         // テーブル行の配列

----------------------------------------------------------------------------------------------------------------------
   void              HeadersColorPressed(const color clr)    { m_headers_color_pressed=clr;      }
   //void HeadersTextColor(const color clr){ m_headers_text_color=clr; }./アンドレ

----------------------------------------------------------------------------------------------------------
   void              SetHeaderText(const uint column_index,const string value);
   //--- カラーテキストを指定されたヘッダーに設定する //André
   void              HeadersTextColor(const color &array[]);
--------------------------------------------------------------------------------------------------------------------
//アンドレ 
//+------------------------------------------------------------------+
//| テキストの整列モードの配列を埋める。
//+------------------------------------------------------------------+
void CTable::HeadersTextColor(const color &array[])
  {
   int total=0;
//--- ゼロサイズの配列が渡された場合は、そのままにしておく。
   if((total=CheckArraySize(array))==WRONG_VALUE)
      return;
//--- 値を配列に格納する
   for(int c=0; c<total; c++)
      m_columns[c].m_header_color=array[c];
  }
------------------------------------------------------------------------------------------------------------------------
      //アンドレ
      //--- テキストの色
      uint clr=::ColorToARGB(m_columns[c].m_header_color);

Window.mqhファイル

//--- フォームのボタンをクリックした場合の処理
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
     {
      //アンドレ
      if(StringFind(sparam, CElementBase::ProgramName(), 0)<0)
         return;
      //--- ウィンドウを閉じる
-------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- メッセージを送る
   //アンドレ
   //Print(__FUNCTION__, " ", subwin, " ", PROGRAM_NAME);
   //::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_COLLAPSE,CElementBase::Id(),subwin, PROGRAM_NAME);
//--- グラフィカルインターフェイスの変更に関するメッセージを送信する。
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");
  }
---------------------------------------------------------------------------------------
   int subwin=(CElementBase::ProgramType()==PROGRAM_INDICATOR)? ::ChartWindowFind() : m_subwin;
//--- メッセージを送る
   //アンドレ
   //::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,"");
   ::EventChartCustom(m_chart_id,ON_WINDOW_EXPAND,CElementBase::Id(),subwin,PROGRAM_NAME);
//--- グラフィカルインターフェイスの変更に関するメッセージを送信する。
   ::EventChartCustom(m_chart_id,ON_CHANGE_GUI,CElementBase::Id(),0.0,"");

WndEvents.mqhファイルの中。

      return(false);
//--- ウィンドウ識別子とサブウィンドウ番号が一致する場合
   //アンドレ
   if(m_sparam!=m_windows[0].ProgramName()) 
      return(false);
   if(m_lparam==m_windows[0].Id() && (int)m_dparam==m_subwin)


ローカライズを容易にするために、私の名前の行をコメントアウトしました。

変更したフルコードのファイルを添付します。

お役に立てれば幸いです。

ファイル:
WndEvents.mqh  144 kb
Window.mqh  129 kb
Table.mqh  304 kb