MQLで書かれたUIのギャラリー - ページ 15 1...8910111213141516171819202122...83 新しいコメント Реter Konow 2024.06.08 18:43 #141 Nikolai Semko #:ピョートル、私はあなたを理解していません。 プログラマーにとって、作業中にGUIとどのようにインタラクションするかを知ることは重要です。 ここに私のGUIの例を示します。私は明暗テーマのショートカットをクリックし、このイベントはすぐに背景色と線を変更する機能をトリガーしました。このインタラクションはどのように行うのでしょうか? ユーザーは私のコードと(まったく)インタラクションしない」とはどういう意味 ですか ? プログラマーはコードとインタラクションするのではなく、コードが生成するイベントとインタラクションする必要があります。 いいね。わかりやすくするために、絵だけを使ってみよう。 1. 2. 3. 4. オプション・シートとウィンドウのチェックボックスとInternal_APIファイル: 5.ユーザーコードでウィンドウとアイテムにアクションを実行する: 6. インテリセンスがすべてを教えて くれます! Nikolai Semko 2024.06.08 18:46 #142 わかりました。 Web開発を例にとると、GUIはあなたが作ったマークアップ言語を使って書かれます。 HTMLだけでWebサイトを作った場合、純粋なHTMLでコントロールを作ることができます。 し かし、この場合、コントロールが動作しているときに何も起こらないので、サイトは死んでしまいます。 何かを起こすには、JavaScriptとaddEventListener関数を使用して、各イベントにハンドラを置く必要があります。そのようなハンドラの例を以下に示します: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 私の主な質問は、次のように言い換えることができます:ユーザーが動作するときにGUIによって生成されるイベント・ハンドラをプログラマーに どのように実装しますか。 つまり、addEventListenerの 類似品は何ですか? 私が言ったように、GUIがプログラムで生成されるとき、各コントロールは関数へのポインタを 使用して独自のイベント・ハンドラ関数を割り当てられるという事実を通して、私はそれを実装しています。 Реter Konow 2024.06.08 18:47 #143 要素から値を取得する図で、その値を書き込む変数を書き忘れていました。すみません、久しぶりのプログラミングで。) Реter Konow 2024.06.08 18:49 #144 Nikolai Semko #: わかりました。Web開発を例にとると、GUIはあなたが作ったマークアップ言語を使って書かれます。HTMLだけでWebサイトを作った場合、純粋なHTMLでコントロールを作ることができます。しかし、この場合、コントロールが動作しているときに何も起こらないので、サイトは死んでしまいます。 何かを起こすには、JavaScriptとaddEventListener関数を使用して、各イベントにハンドラを置く必要があります。そのようなハンドラの例を以下に 示します: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 私の主な質問は、次のように言い換えることができます:ユーザーが動作するときにGUIによって生成されるイベント・ハンドラをプログラマーに どのように実装しますか。つまり、addEventListenerの アナログは何ですか? 私が言ったように、私はGUIがプログラムで生成されるとき、各コントロールが関数へのポインタを 使用して独自のイベントハンドラ関数を割り当てられているという事実を通してそれを実装しています。 ニコラス、すべてうまくいったよ。後で自分で試してみてください。すべてはあなたが考えているよりずっとシンプルなのだ。私はこの技術を使って多くの動くインターフェースを作ってきた。だから...すぐにわかるだろう。 Nikolai Semko 2024.06.08 19:14 #145 Реter Konow #:ニコライ、うまくいったよ。後で自分でやってごらん。君が考えているよりずっと簡単だよ。私はこの技術を使って多くの動くインターフェイスを作ってきた。だから...すぐにわかるよ 分かった待ってるよ。 私はあなたの創造を本当に理解したいのですが、例によって理解しやすくするために、単純な空のインジケータ(またはExpert Advisor)を作成してください。 その中で、あなたのGUIが独立したボタンの形で接続され、それを押すとウィンドウの背景色が黒から白、白から黒に変わります。色の変更は、接続されたファイルではなく、インジケーター本体で行われることが望ましいです。 簡単に書くために、ボタンが押されたときにプログラム本体で実行される関数のコードを示します: void ChangeColorScheme() { struct ColorScheme { uint background; uint foreground; uint grid; uint bar; uint bull; uint bear; uint volume; }; static const ColorScheme c[2] = {{0x00000000,0x00DDAAAA,0x00804040,0x0000FF00,0x00000000,0x00FFFFFF,0x0032CD32}, {0x00FFFFFF,0x00000000,0x00C0C0C0,0x00000000,0x00FFFFFF,0x00000000,0x00008000} }; static int clr_scheme = 0; if (clr_scheme == 1) clr_scheme = 0; else clr_scheme = 1; ChartSetInteger(0,CHART_COLOR_BACKGROUND,c[clr_scheme].background); ChartSetInteger(0,CHART_COLOR_FOREGROUND,c[clr_scheme].foreground); ChartSetInteger(0,CHART_COLOR_CHART_LINE,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_UP,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,c[clr_scheme].bull); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,c[clr_scheme].bear); ChartSetInteger(0,CHART_COLOR_GRID,c[clr_scheme].grid); ChartSetInteger(0,CHART_COLOR_VOLUME,c[clr_scheme].volume); ChartRedraw(); } Реter Konow 2024.06.08 19:22 #146 Nikolai Semko #:わかりました。待ちます。しかし、例によって理解しやすくするために、単純な空のインジケータ(またはExpert Advisor)を作成してください。 その中で、GUIが独立したボタンの形で接続され、それを押すとウィンドウの背景色が黒から白、白から黒に変わります。色の変更は、接続されたファイルではなく、インジケーター本体で行われることが望ましいです。 簡単に書くために、ボタンが押されたときにプログラム本体で実行される関数のコードを示します: OK。理解しやすいように、できるだけ単純な実装にします。飾り気はありません)。 インジケーター インジケーターの中にはユーザー・ウィンドウがあります。 ウィンドウにはボタンが1つ ボタンはあなたの関数を呼び出します。 すべてのアクションはインジケーターのボディに記述されます。 Nikolai Semko 2024.06.08 19:25 #147 Реter Konow #:オーケー。理解のために、できるだけシンプルな実装にしよう。飾り気はありません)。 インジケーター インジケーターの中にはユーザー・ウィンドウがあります。 ウィンドウにはボタンが1つ ボタンはあなたの関数を呼び出します。 すべてのアクションはインジケータ本体に記述されます。 すばらしい!ありがとうございました。 Реter Konow 2024.06.08 20:10 #148 Nikolayさん、インジケーター本体の中に関数コールを書くことはできません。なぜなら、そのハンドラーはInternal_API.mqhの中にあるからです。 つまり、このファイル内のハンドラーから、ボタンを押したイベントであなたの関数を呼び出すことができます。しかし、例えばインジケーター本体からタイマーのイベントに対してプログラムでボタンの状態を設定することもできます。しかし、その場合はボタンを押す必要はありません。要するに、さまざまな要素がある。インジケーター本体の中で処理できるものもあれば(例えばプログレスバーなど、ほとんどが非インタラクティブ要素)、Internal_API.mqh ファイルにハンドラーを持ち、そこから動作する ものもあります。これらの状態は、EA/インジケーター本体からプログラムで設定することができます。 タスクは完了です。(白い四角 - クリック) コード //+------------------------------------------------------------------+ //| Indicators 1.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #include<GUI_DRIVE_2.mqh> #include<MyProject_1\CORES.mqh> #include<MyProject_1\Internal_API.mqh> //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetMillisecondTimer(25); //------------------------- D_OnInit(); //------------------------- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //ВАШ КОД----------------- //ВАШ КОД----------------- //ВАШ КОД----------------- //ВАШ КОД----------------- //УСТАНОВИТЬ ВЫЗОВ В САМОМ НИЗУ, ПОД ПОЛЬЗ.КОДОМ.------------------ //--------------------------- RMSG(1); //--------------------------- } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //УСТАНОВИТЬ ВЫЗОВ НА САМОМ ВЕРХУ, НАД ПОЛЬЗ.КОДОМ.--------------- //---------------------------------------------------------------- D_OnChartEvent(id,lparam,dparam,sparam); //---------------------------------------------------------------- } //+------------------------------------------------------------------+ /*void ChangeColorScheme() { struct ColorScheme { uint background; uint foreground; uint grid; uint bar; uint bull; uint bear; uint volume; }; static const ColorScheme c[13] = {{0x00000000,0x00DDAAAA,0x00804040,0x0000FF00,0x00000000,0x00FFFFFF,0x0032CD32}, {0x00FFFFFF,0x00000000,0x00C0C0C0,0x00000000,0x00FFFFFF,0x00000000,0x00008000} }; static int clr_scheme = 0; if (clr_scheme == 1) clr_scheme = 0; else clr_scheme = 1; ChartSetInteger(0,CHART_COLOR_BACKGROUND,c[clr_scheme].background); ChartSetInteger(0,CHART_COLOR_FOREGROUND,c[clr_scheme].foreground); ChartSetInteger(0,CHART_COLOR_CHART_LINE,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_DOWN,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CHART_UP,c[clr_scheme].bar); ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,c[clr_scheme].bull); ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,c[clr_scheme].bear); ChartSetInteger(0,CHART_COLOR_GRID,c[clr_scheme].grid); ChartSetInteger(0,CHART_COLOR_VOLUME,c[clr_scheme].volume); ChartRedraw(); }*/ void ChangeColorScheme(uint _color) { ChartSetInteger(0,CHART_COLOR_BACKGROUND,_color); } コンパイラが悪態をついたので、あなたの関数をコメントアウトした。もっとシンプルにした。 以下はInternal_API.mqhのコードです。 Реter Konow 2024.06.08 20:24 #149 ところで、追加しておく必要がある: Internal_API.mqhファイルはコントロール・ ハンドラーを含み、それらを接続するために特別に設計されている。 このファイルはユーザーのためのもので、エンジンや私の他のコードの一部ではない。 Nikolai Semko 2024.06.08 21:05 #150 Реter Konow コントロールの ハンドラが含まれており、それらを接続するために特別に設計されている。 このファイルはユーザーのためのもので、エンジンや私の他のコードの一部ではない。 ありがとう。 もちろん、開発者にとっては便利ではない。それでも、関数へのポインタを持つバリアントの方がずっといい。 1...8910111213141516171819202122...83 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ピョートル、私はあなたを理解していません。
プログラマーにとって、作業中にGUIとどのようにインタラクションするかを知ることは重要です。 ここに私のGUIの例を示します。私は明暗テーマのショートカットをクリックし、このイベントはすぐに背景色と線を変更する機能をトリガーしました。このインタラクションはどのように行うのでしょうか?
ユーザーは私のコードと(まったく)インタラクションしない」とはどういう意味 ですか ? プログラマーはコードとインタラクションするのではなく、コードが生成するイベントとインタラクションする必要があります。
いいね。わかりやすくするために、絵だけを使ってみよう。
1.
2.
3.
4.
オプション・シートとウィンドウのチェックボックスとInternal_APIファイル:
5.ユーザーコードでウィンドウとアイテムにアクションを実行する:
6.
インテリセンスがすべてを教えて くれます!
Web開発を例にとると、GUIはあなたが作ったマークアップ言語を使って書かれます。
HTMLだけでWebサイトを作った場合、純粋なHTMLでコントロールを作ることができます。
し
かし、この場合、コントロールが動作しているときに何も起こらないので、サイトは死んでしまいます。 何かを起こすには、JavaScriptとaddEventListener関数を使用して、各イベントにハンドラを置く必要があります。そのようなハンドラの例を以下に示します: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 私の主な質問は、次のように言い換えることができます:ユーザーが動作するときにGUIによって生成されるイベント・ハンドラをプログラマーに どのように実装しますか。
つまり、addEventListenerの 類似品は何ですか? 私が言ったように、GUIがプログラムで生成されるとき、各コントロールは関数へのポインタを 使用して独自のイベント・ハンドラ関数を割り当てられるという事実を通して、私はそれを実装しています。
わかりました。Web開発を例にとると、GUIはあなたが作ったマークアップ言語を使って書かれます。HTMLだけでWebサイトを作った場合、純粋なHTMLでコントロールを作ることができます。しかし、この場合、コントロールが動作しているときに何も起こらないので、サイトは死んでしまいます。 何かを起こすには、JavaScriptとaddEventListener関数を使用して、各イベントにハンドラを置く必要があります。そのようなハンドラの例を以下に
示します: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_element_addeventlistener4 私の主な質問は、次のように言い換えることができます:ユーザーが動作するときにGUIによって生成されるイベント・ハンドラをプログラマーに どのように実装しますか。つまり、
addEventListenerの アナログは何ですか? 私が言ったように、私はGUIがプログラムで生成されるとき、各コントロールが関数へのポインタを 使用して独自のイベントハンドラ関数を割り当てられているという事実を通してそれを実装しています。
ニコラス、すべてうまくいったよ。後で自分で試してみてください。すべてはあなたが考えているよりずっとシンプルなのだ。私はこの技術を使って多くの動くインターフェースを作ってきた。だから...すぐにわかるだろう。
ニコライ、うまくいったよ。後で自分でやってごらん。君が考えているよりずっと簡単だよ。私はこの技術を使って多くの動くインターフェイスを作ってきた。だから...すぐにわかるよ
分かった待ってるよ。
私はあなたの創造を本当に理解したいのですが、例によって理解しやすくするために、単純な空のインジケータ(またはExpert Advisor)を作成してください。 その中で、あなたのGUIが独立したボタンの形で接続され、それを押すとウィンドウの背景色が黒から白、白から黒に変わります。色の変更は、接続されたファイルではなく、インジケーター本体で行われることが望ましいです。
簡単に書くために、ボタンが押されたときにプログラム本体で実行される関数のコードを示します:
わかりました。待ちます。しかし、例によって理解しやすくするために、単純な空のインジケータ(またはExpert Advisor)を作成してください。 その中で、GUIが独立したボタンの形で接続され、それを押すとウィンドウの背景色が黒から白、白から黒に変わります。色の変更は、接続されたファイルではなく、インジケーター本体で行われることが望ましいです。
簡単に書くために、ボタンが押されたときにプログラム本体で実行される関数のコードを示します:
OK。理解しやすいように、できるだけ単純な実装にします。飾り気はありません)。
オーケー。理解のために、できるだけシンプルな実装にしよう。飾り気はありません)。
すばらしい!ありがとうございました。
Nikolayさん、インジケーター本体の中に関数コールを書くことはできません。なぜなら、そのハンドラーはInternal_API.mqhの中にあるからです。
つまり、このファイル内のハンドラーから、ボタンを押したイベントであなたの関数を呼び出すことができます。しかし、例えばインジケーター本体からタイマーのイベントに対してプログラムでボタンの状態を設定することもできます。しかし、その場合はボタンを押す必要はありません。要するに、さまざまな要素がある。インジケーター本体の中で処理できるものもあれば(例えばプログレスバーなど、ほとんどが非インタラクティブ要素)、Internal_API.mqh ファイルにハンドラーを持ち、そこから動作する ものもあります。これらの状態は、EA/インジケーター本体からプログラムで設定することができます。
タスクは完了です。(白い四角 - クリック)
コード
コンパイラが悪態をついたので、あなたの関数をコメントアウトした。もっとシンプルにした。
以下はInternal_API.mqhのコードです。
ところで、追加しておく必要がある:
Internal_API.mqhファイルはコントロール・ ハンドラーを含み、それらを接続するために特別に設計されている。
このファイルはユーザーのためのもので、エンジンや私の他のコードの一部ではない。
このファイルはユーザーのためのもので、エンジンや私の他のコードの一部ではない。
ありがとう。
もちろん、開発者にとっては便利ではない。それでも、関数へのポインタを持つバリアントの方がずっといい。