記事"グラフィカルインターフェイスXI:レンダリングされたコントロール(ビルド14.2)"についてのディスカッション - ページ 3

 
Artyom Trishkin:

トール、この連載のどの記事でCKEYについて読むことができますか?

...

例:プログラムを開始し、Backspaceを押し始めると、Backspaceを押すたびにすべてのコントロールが削除されます。最終的には、すでに空のフォームウィンドウも削除される。

...


GUI X:複数行テキスト入力フィールド要素(ビルド8)

Backspace キーを押すとGUI要素が削除される状況を再現できませんでした。

 
Artyom Trishkin:

TestLibrary14のProgram.mqhに、ウィンドウタイトルの色を変更する 行を1行書く:

その後、ウィンドウを最小化すると、色がデフォルト値に戻ります。そして、ツールチップ、最小化/変更解除、閉じるボタンは、プログラムで設定されたウィンドウタイトルの色で再描画されます。そして、これらのボタンの色は、カーソルを合わせたときだけデフォルトの色に変わります。

...

マウスオーバー時にフォームタイトルの色を変更することを追加するのを忘れていました。次のアップデートで追加する予定です。

今は両方の状態に対して色を設定する必要があります:

...
   m_window.CaptionColor(clrDimGray);
   m_window.CaptionColorHover(clrDimGray);
...

//---

ボタンについては、ポインタとフォーム作成後に色を設定できます。

...
   m_window.GetCollapseButtonPointer().BackColorHover(clrGray);
   m_window.GetTooltipButtonPointer().BackColorHover(clrGray);
//---
   m_window.GetCollapseButtonPointer().BackColorPressed(clrGray);
   m_window.GetTooltipButtonPointer().BackColorPressed(clrGray);
...

//---


 

私見だが、この記事で使われている「ライブラリー・コア」という用語は正しくない。先に「ライブラリ・エンジン」という用語が使われたが、これはどうもしっくりこない。

コア」という言葉は、必要な情報をまとめた静的な 配列を指すべきであり、「エンジン」という言葉は、この情報を使って一連のタスクを実行するメカニズムを指すべきである。

プログラミングにおける「ライブラリ」という用語は、一連のタスクを解決するためのツールキットとして機能する、多様で、ばらばらで、独立した機能を意味し、単一の中心を中心にまとまっているわけではない。このツールキットは「エンジン」でも「カーネル」でもなく、ユーザーメカニズムを構築するためのツール群に過ぎない。

もしライブラリがカーネルとエンジンを含むなら、それはもはやライブラリではなく、全体として動作するシステムである。

グラフィカル・ライブラリが、GUIを作成するための不可欠なメカニズムへと変化するのは自然な発展段階であり、その後、そのようなライブラリはもはや存在しなくなる。つまり、バラバラの機能は必要なくなるのである。なぜなら、既製のメカニズムが一連のタスクをはるかに効率的に解決してくれるからである。

おそらく今、ライブラリーはそのようなメカニズムに変わりつつあるのだろうが、現時点ではまだそうなっていない。従って、ライブラリーの「コア」や「エンジン」という言葉は、正確ではない。

イミフである。

 

こんにちは、コントロールの セットは本当に素晴らしく、役に立ちますが、より高いDPI設定をより良い方法で扱うことができれば、さらに良くなるでしょう。

明らかに、ビットマップは正しく表示されますが、テキストは表示されません。下の画像のように、下にずれたり、切れたりしてしまいます:

私は以下のディスプレイ設定を使用しています:


 
Artur Zas:

こんにちは、コントロールのセットは本当に素晴らしく、役に立ちますが、より高いDPI設定をより良い方法で扱うことができれば、さらに良くなるでしょう。

明らかに、ビットマップは正しく表示されますが、テキストは表示されません。下の画像のように、下にずれたり、切れたりしてしまいます:

私は以下のディスプレイ設定を使用しています:


 
Facundo Laje:
MT4で使用できますか?

 
Facundo Laje:
MT4で使用できますか?

技術的に言えば、OBJ-BITMAP_LABELはMQL4でも利用可能なので可能ですが、MQL4コンパイラではコンパイルできない箇所がいくつかあるので、ライブラリのコードを調整する必要があります。

ライブラリーを弄ってみて、どうにかMQL4に移植できたらお知らせします。自分で試すこともできる。サンプルのEAの拡張子.mq5を.mq4にリネームして、コードをコンパイルしてみてください。

明らかにコンパイルエラーは出ますが、それがどこで何なのかをチェックする ことができます。

 

こんにちは、

この記事シリーズに従って、自分のコントロールパネルを開発しようとしています。マルチウィンドウモード部分(Article04)に興味がありますが、更新されたLibrary14(Article10)を使いました。

今までのところ(添付の写真):


イメージ1

イメージ2

window2とwindow3が動かない、閉じるボタンを押しても閉じない、colapseボタンを押しても見つからない。

以下はウィンドウ2とウィンドウ3のコード部分である:

//-------- ウィンドウ2
#resource "\\Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp"
bool CmyPanel_Test2::CreateWindow2(const string caption_text)
  {
//--- ウィンドウ・ポインタを格納する
   CWndContainer::AddWindow(m_window2);
    m_window2.MainPointer(m_mb_contextmenu1);
//--- 座標
   int x =(m_window2.X()>0) ? m_window2.X() : 100;
   int y =(m_window2.Y()>0) ? m_window2.Y() : 100;
//--- プロパティ
   m_window2.Movable(true);
   m_window2.Alpha(200);
   m_window2.XSize(300);
   m_window2.YSize(100);
   m_window2.IconXGap(3);
   m_window2.IconYGap(2);
   m_window2.WindowType(W_DIALOG);
   m_window2.CloseButtonIsUsed(true);
   m_window2.GetCloseButtonPointer().Tooltip("Close");
   m_window2.GetCollapseButtonPointer().Tooltip("Collapse/Expand");
   m_window2.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp");
//--- フォームの作成
   if(!m_window2.CreateWindow(m_chart_id,m_subwin,caption_text,x,y))
      return(false);
//---
   return(true);
  }
//------------------Window3----------------
bool CmyPanel_Test2::CreateWindow3(const string caption_text)
  {
//--- ウィンドウ・ポインタを格納する
   CWndContainer::AddWindow(m_window3);
    m_window2.MainPointer(m_menubar);
//--- 座標
   int x =(m_window2.X()>0) ? m_window2.X() : 100;
   int y =(m_window2.Y()>0) ? m_window2.Y() : 100;
//--- プロパティ
   m_window3.Movable(true);
   m_window3.Alpha(200);
   m_window3.XSize(200);
   m_window3.YSize(200);
   m_window3.IconXGap(3);
   m_window3.IconYGap(2);
   m_window3.WindowType(W_DIALOG);
   m_window3.CloseButtonIsUsed(true);
   m_window3.GetCloseButtonPointer().Tooltip("Close");
   m_window3.GetCollapseButtonPointer().Tooltip("Collapse/Expand");
   m_window3.IconFile("Images\\EasyAndFastGUI\\Icons\\bmp16\\color_picker.bmp");
//--- フォームの作成
   if(!m_window3.CreateWindow(m_chart_id,m_subwin,caption_text,x,y))
      return(false);
//---
   return(true);
  }

とOnEventの部分です:

void CmyPanel_Test2::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {

   if(id==CHARTEVENT_CUSTOM+ON_CLICK_MENU_ITEM)
     {
      PRINT_EVENT(ON_CLICK_MENU_ITEM,id,lparam,dparam,sparam);
      return;
     }
//---
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_BUTTON)
     {
     PRINT_EVENT(ON_CLICK_BUTTON,id,lparam,dparam,sparam);
     
     if(lparam==1 && dparam==1)
     {
      m_window3.Show();
      return;
     }
      return;
     }
//---
   if(id==CHARTEVENT_CUSTOM+ON_CLICK_CONTEXTMENU_ITEM)
     {
      if (dparam==0)
      m_window2.Show();
      PRINT_EVENT(ON_CLICK_CONTEXTMENU_ITEM,id,lparam,dparam,sparam);
      return;
     }

ありがとうございました。

 
zlory73:

こんにちは、

この記事シリーズに従って、自分のコントロールパネルを開発しようとしています。マルチウィンドウモード部分(Article04)に興味がありますが、更新されたLibrary14(Article10)を使いました。

今までのところ(添付の写真):


window2とwindow3が動かない、閉じるボタンを押しても閉じない、colapseボタンを押しても見つからない。

以下はウィンドウ2とウィンドウ3のコード部分である:

とOnEventの部分です:

ありがとうございました。


すみません、修正しました:

bool CmyPanel_Test2::CreateWindow3(const string caption_text)
  {
//--- ウィンドウ・ポインタを格納する
   CWndContainer::AddWindow(m_window3);
    m_window3.MainPointer(m_window);

そして

bool CmyPanel_Test2::CreateWindow2(const string caption_text)
  {
//--- ウィンドウ・ポインタを格納する
   CWndContainer::AddWindow(m_window2);
    m_window2.MainPointer(m_window);

を修正しました。

助けてください1

 
Artur Zas:

技術的に言えば、OBJ-BITMAP_LABELはMQL4でも利用可能なので、そのはずなのですが、MQL4コンパイラではコンパイルできない箇所がいくつかあるので、ライブラリのコードを調整する必要があります。

ライブラリーを弄ってみて、どうにかMQL4に移植できたらお知らせします。自分で試すこともできる。サンプルのEAの拡張子.mq5を.mq4にリネームして、コードをコンパイルしてみてください。

明らかにコンパイルエラーが出ますが、それがどこで、何なのかをチェックすることができます。