bool Create_BMP_Label(long chart_id, // id графикаstring bmp_nm, // имя объектаstring bmp_path, // путь к обектуlong anchor, // точка привязкиlong corner, // угол привязкиint x_dist, // координата по шкале Xint y_dist) // координата по шкале Y
{
//----------------------------------------------------------------------------////Work variablesbool Result = true; //Returned importance//----------------------------------------------------------------------------//ResetLastError();
Result = ObjectCreate(chart_id,bmp_nm,OBJ_BITMAP_LABEL,0,0,0); // создание объектаif(Result)
{
ObjectSetString(chart_id,bmp_nm,OBJPROP_BMPFILE,0,bmp_path); // BMP файлObjectSetInteger(chart_id,bmp_nm,OBJPROP_ANCHOR,anchor); // установка точки привязкиObjectSetInteger(chart_id,bmp_nm,OBJPROP_CORNER,corner); // установка угола привязкиObjectSetInteger(chart_id,bmp_nm,OBJPROP_XDISTANCE,x_dist); // установка координаты XObjectSetInteger(chart_id,bmp_nm,OBJPROP_YDISTANCE,y_dist); // установка координаты YObjectSetInteger(chart_id,bmp_nm,OBJPROP_SELECTABLE,false); // нельзя выделить объект, если FALSEObjectSetString(chart_id,bmp_nm,OBJPROP_TOOLTIP,"\n"); // нет всплывающей подсказки, если "\n"
}
//The execution errors checkingif(GetLastError()!=0)
{
Result = false;
}
//----------------------------------------------------------------------------//return(Result);
//----------------------------------------------------------------------------//
}
// удаление по маске всех объектов индюкаfor (int i = ObjectsTotal() - 1; i >= 0; i--)
{
string name = ObjectName(i);
if (StringFind(name, "sig_nal") == 0)
{
ObjectDelete(name);
}
}
異なるグループに対して
// удаление по маске всех объектов индюкаfor (int i = ObjectsTotal() - 1; i >= 0; i--)
{
string name = ObjectName(i);
if (StringFind(name, "signal") == 0)
{
ObjectDelete(name);
}
elseif (StringFind(name, "Asignal") == 0)
{
ObjectDelete(name);
}
}
これらのオブジェクトのプロパティを 明示的に渡します(ANCHOR_RIGHT_UPPER, CORNER_RIGHT_UPPER)。
できたと思う。動作するコードではなく、サンプル関数を表示したのですか?
以上、週末はお休みです。邪魔してすみませんでした :)
この関数のより良いバージョンですが、何かを微調整することができます(一般的に、私はこのすべてをオブジェクト、またはいくつかのオブジェクトとして実装します)。
とはいえ、関数をライブラリに入れて、好きなように使うことはできます。
この関数のより良いバージョンですが、何かを微調整することができます(一般的に、私はこのすべてをオブジェクト、またはいくつかのオブジェクトとして実装します)。
とはいえ、関数をライブラリに入れて、好きなように使うことはできます。
(それはいいことだ))。この機能をオブジェクトとして使用するメリットは何でしょうか?今のところ、すべて関数という形で実装しています。もしかしたら、私のやり方が間違っていて、後で全部やり直さなければならないかもしれない?
まあ、なんで全部なんだろう。機能はもっと普遍的にして、例えばライブラリに詰め込むこともできる。
クラスにも利点はありますが、これはOOPに関連するトリックです(実装を考えずに様々なプロジェクトでコードを使用することが主な作業になります)。
例
スクリーンショットから察するに、情報パネルの ようなものがあるようなので(他の機能もあるかもしれませんが)、このパネルを、関係のない複数のオブジェクト(グラフィック、テキストなど)と考えることもできますし、1つのクラスでつながっているオブジェクトと見ることもできます。したがって、1つの「入力」パラメータ「コーナー」を変更すると、この変更はパネルに関連するすべてに影響します。
これはチャートへのバインディングと同じで、クラスにチャートを指定することで、そのクラスが制御するすべてのオブジェクトにそのチャートを示すことになります。
まあ、なんで全部なんだろう。機能はもっと普遍的にして、例えばライブラリに詰め込むこともできる。
クラスにも利点はありますが、これはOOPに関連したトリックです(実装を考えずに様々なプロジェクトでコードを使用することが主な作業になります)。
例
スクリーンショットから察するに、情報パネルのようなものがあるようなので(他の機能もあるかもしれませんが)、このパネルを、関係のない複数のオブジェクト(グラフィック、テキストなど)と考えることもできますし、1つのクラスでつながっているオブジェクトと捉えることもできます。そのため、1つの「入力」パラメータ「コーナー」を変更すると、この変更はパネルに関連するすべてに影響します。
チャートへのバインディングについては、私も同じ問題を抱えています。 チャートをクラスに示すと、このチャートとこのクラスが制御するすべてのオブジェクトを示すことになります。
あなたは非常に優れた能力を持っています。2、3行でとてもわかりやすく説明してください。ありがとうございます。))
必要な関数に慣れ、それらを使って練習した後、構造、クラス、OOPの勉強を始めます。自然界では、時々寝ざるを得ないのが残念です。パソコンから這い上がるしかない。))
このスクリプトは私が書きました。
タスク:チャートからOBJ_LABEL タイプのオブジェクトをすべて削除します。しかし、いくつかはスキップして残っています。ログブックにエラーが書き込まれる。
正しい方法を教えてください。
そんな脚本を書いてみました。
タスク:チャートからOBJ_LABEL タイプのオブジェクトをすべて削除します。しかし、中にはスキップして残っているものもあります。ログにエラーが書き込まれます。
正しい方法をアドバイスしてください。
詳しくは調べていませんが、ループは昇順ではなく降順であるべきだと思われます(ただし、MQL4以降、注文の削除は降順ループで行われるようになりました)。
大きなインデックスから削除を始めると、(リストの末尾から)選択したアイテムを削除する以外は、元のリストが変わらないというトリックがあります。
詳しくは調べていませんが、周期は昇順ではなく降順であるべきだと思われます(MQL4以降、注文は降順の周期で削除されます)。
このトリックは、大きなインデックスから削除を始めると、(リストの末尾から)選択した項目を削除する以外は、元のリストが変更されないということです...
端からサイクルを回すようにしました。
これでログにエラーは出なくなったが、オブジェクトは1つも削除されていない)。
端からサイクルを開始しようとした。
これでログブックにエラーは出なくなったが、オブジェクトも削除されない)
四則演算では、すべてのオブジェクトをグループ化し、名前の部分をグループ内で共通化する、という方法をとっています。
削除
異なるグループに対して
とこちらの 機能IgorM
***
( 念のため )ObjectName でソート する (5 に関係あるかは不明)