<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ENUM_ALIGN_MODE アーカイブ - 自動売買を作ろう！</title>
	<atom:link href="https://mql-programing.com/archives/tag/enum_align_mode/feed/" rel="self" type="application/rss+xml" />
	<link>https://mql-programing.com/archives/tag/enum_align_mode/</link>
	<description>MQLプログラミング学習サイト</description>
	<lastBuildDate>Tue, 31 Mar 2026 12:35:03 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mql-programing.com/main29/wp-content/uploads/2021/02/cropped-ブログアイコン-32x32.jpg</url>
	<title>ENUM_ALIGN_MODE アーカイブ - 自動売買を作ろう！</title>
	<link>https://mql-programing.com/archives/tag/enum_align_mode/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【MQL4定数】テキスト整列の定数（ENUM_ALIGN_MODE）</title>
		<link>https://mql-programing.com/archives/1693/enum_align_mode/</link>
		
		<dc:creator><![CDATA[朝日奈りさ]]></dc:creator>
		<pubDate>Thu, 30 Sep 2021 02:40:40 +0000</pubDate>
				<category><![CDATA[【辞書】MQLリファレンス]]></category>
		<category><![CDATA[定数]]></category>
		<category><![CDATA[MQL]]></category>
		<category><![CDATA[リファレンス]]></category>
		<category><![CDATA[ObjectSetInteger]]></category>
		<category><![CDATA[ENUM_ALIGN_MODE]]></category>
		<guid isPermaLink="false">https://mql-programing.com/?p=1693</guid>

					<description><![CDATA[<p>テキスト整列の定数 テキスト整列の定数は、テキストの整列を設定するときに使われます。 主に、ObjectSetInteger関数です。 簡単に関数の説明です。 ObjectSetInteger関数：オブジェクトの状態を設 [&#8230;]</p>
<p>投稿 <a href="https://mql-programing.com/archives/1693/enum_align_mode/">【MQL4定数】テキスト整列の定数（ENUM_ALIGN_MODE）</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><span id="toc1">テキスト整列の定数</span></h2>



<p>テキスト整列の定数は、テキストの整列を設定するときに使われます。</p>



<p>主に、ObjectSetInteger関数です。</p>



<p>簡単に関数の説明です。</p>



<ul class="wp-block-list"><li><strong>ObjectSetInteger関数：オブジェクトの状態を設定する</strong></li></ul>



<p>　</p>



<p>それぞれ、OBJPROP_ALIGNの設定値として、テキスト整列の定数が使われます。</p>



<p>　</p>



<h3 class="wp-block-heading"><span id="toc2">テキスト整列の定数（ENUM_ALIGN_MODE）</span></h3>



<figure class="wp-block-table alignfull is-style-stripes"><table><tbody><tr><td><strong>定数</strong></td><td><strong>説明</strong></td></tr><tr><td>ALIGN_LEFT</td><td>左揃え</td></tr><tr><td>ALIGN_CENTER</td><td>中央揃え</td></tr><tr><td>ALIGN_RIGHT</td><td>右揃え</td></tr></tbody></table></figure>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc3">テキスト整列の定数の使い方</span></h2>



<p>主に、ObjectSetInteger関数で使用されます。</p>



<p><strong><span class="marker-under-red">それぞれ、OBJPROP_ALIGNの設定値として、テキスト整列の定数が使われます。</span></strong></p>



<p>上記の定数を入力しましょう。</p>



<p>すると、その定数に対応した整列方法になります。</p>



<p>例えば、以下のように使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++"><code>  //ObjectSetInteger関数
  //テキストを左揃えに設定
   bool objectSetInteger = ObjectSetInteger(ChartID(), &quot;自動売買を作ろう！&quot;, OBJPROP_ALIGN, ALIGN_LEFT);</code></pre></div>



<p>　</p>



<p>返り値はbool型です。</p>



<p>成功すればture、失敗すればfalseが返ってきます。</p>



<p>　</p>



<h2 class="wp-block-heading"><span id="toc4">実用的なプログラム例</span></h2>



<p>ここからは、テキスト整列の定数を使った実用的なプログラム例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc5">例1：エディットボックスを作成して整列を設定する</span></h3>



<p>OBJ_EDITオブジェクト（テキスト入力欄）を作成し、テキストの整列方法を中央揃えに設定する例です。チャート上に入力欄を表示する場面で活用できます。</p>


<pre><code class="language-mql4">//+------------------------------------------------------------------+
//| エディットボックスを作成し、中央揃えに設定するサンプル           |
//+------------------------------------------------------------------+
void OnStart()
  {
   // オブジェクト名を定義
   string objName = "MyEditBox";

   // 既に同名オブジェクトがあれば削除
   if(ObjectFind(0, objName) >= 0)
      ObjectDelete(0, objName);

   // OBJ_EDIT（テキスト入力欄）をチャート上に作成
   // 座標はピクセル指定（左上からX:50, Y:50の位置）
   bool created = ObjectCreate(0, objName, OBJ_EDIT, 0, 0, 0);

   if(created)
     {
      // X座標（ピクセル）を設定
      ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, 50);
      // Y座標（ピクセル）を設定
      ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, 50);
      // 幅を200ピクセルに設定
      ObjectSetInteger(0, objName, OBJPROP_XSIZE, 200);
      // 高さを30ピクセルに設定
      ObjectSetInteger(0, objName, OBJPROP_YSIZE, 30);
      // フォントサイズを設定
      ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, 12);

      // ★テキスト整列を中央揃えに設定★
      ObjectSetInteger(0, objName, OBJPROP_ALIGN, ALIGN_CENTER);

      // テキストの初期値を設定
      ObjectSetString(0, objName, OBJPROP_TEXT, "中央揃えテキスト");

      // チャートを再描画して反映
      ChartRedraw(0);

      Print("エディットボックスを中央揃えで作成しました");
     }
   else
     {
      Print("オブジェクトの作成に失敗しました");
     }
  }</code></pre>


<p>　</p>



<h3 class="wp-block-heading"><span id="toc6">例2：3種類の整列方法を比較表示するスクリプト</span></h3>



<p>左揃え・中央揃え・右揃えの3つのエディットボックスを並べて作成し、整列の違いを視覚的に確認できるスクリプトです。</p>


<pre><code class="language-mql4">//+------------------------------------------------------------------+
//| 3種類のテキスト整列を比較表示するスクリプト                      |
//+------------------------------------------------------------------+
void OnStart()
  {
   // オブジェクト名の配列
   string objNames[]  = {"Edit_Left", "Edit_Center", "Edit_Right"};
   // 対応する整列定数の配列
   ENUM_ALIGN_MODE alignModes[] = {ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT};
   // 表示テキストの配列
   string texts[]     = {"左揃え（ALIGN_LEFT）", "中央揃え（ALIGN_CENTER）", "右揃え（ALIGN_RIGHT）"};

   // 3つのエディットボックスを縦に並べて作成
   for(int i = 0; i < 3; i++)
     {
      // 既存のオブジェクトがあれば削除
      if(ObjectFind(0, objNames[i]) >= 0)
         ObjectDelete(0, objNames[i]);

      // OBJ_EDITオブジェクトを作成
      bool created = ObjectCreate(0, objNames[i], OBJ_EDIT, 0, 0, 0);

      if(created)
        {
         // X座標を設定
         ObjectSetInteger(0, objNames[i], OBJPROP_XDISTANCE, 30);
         // Y座標を設定（40ピクセルずつ下にずらす）
         ObjectSetInteger(0, objNames[i], OBJPROP_YDISTANCE, 30 + i * 40);
         // 幅を300ピクセルに設定
         ObjectSetInteger(0, objNames[i], OBJPROP_XSIZE, 300);
         // 高さを30ピクセルに設定
         ObjectSetInteger(0, objNames[i], OBJPROP_YSIZE, 30);
         // フォントサイズを設定
         ObjectSetInteger(0, objNames[i], OBJPROP_FONTSIZE, 10);
         // 背景色を設定（見やすくするため）
         ObjectSetInteger(0, objNames[i], OBJPROP_BGCOLOR, clrWhite);

         // ★テキスト整列の定数を使って整列方法を設定★
         ObjectSetInteger(0, objNames[i], OBJPROP_ALIGN, alignModes[i]);

         // テキストを設定
         ObjectSetString(0, objNames[i], OBJPROP_TEXT, texts[i]);
        }
     }

   // チャートを再描画
   ChartRedraw(0);
   Print("3つの整列方法を比較表示しました");
  }</code></pre>


<p>　</p>



<h3 class="wp-block-heading"><span id="toc7">例3：口座情報パネルをインジケーターで表示する</span></h3>



<p>チャート上に口座残高・有効証拠金・スプレッドなどの情報を右揃えで見やすく表示するインジケーターの例です。数値を右揃えにすることで、桁を揃えた見やすい表示になります。</p>


<pre><code class="language-mql4">//+------------------------------------------------------------------+
//| 口座情報パネルを表示するインジケーター                           |
//+------------------------------------------------------------------+
#property indicator_chart_window

// パネルに表示する項目数
#define PANEL_ROWS 4

// オブジェクト名のプレフィックス
string prefix = "InfoPanel_";

//+------------------------------------------------------------------+
//| 初期化関数                                                        |
//+------------------------------------------------------------------+
int OnInit()
  {
   // ラベル（項目名）とエディットボックス（値）を作成
   string labels[]  = {"残高：", "有効証拠金：", "スプレッド：", "現在時刻："};

   for(int i = 0; i < PANEL_ROWS; i++)
     {
      // --- 項目名用のラベル（左揃え）を作成 ---
      string labelName = prefix + "Label_" + IntegerToString(i);
      if(ObjectFind(0, labelName) >= 0) ObjectDelete(0, labelName);
      ObjectCreate(0, labelName, OBJ_EDIT, 0, 0, 0);
      ObjectSetInteger(0, labelName, OBJPROP_XDISTANCE, 10);
      ObjectSetInteger(0, labelName, OBJPROP_YDISTANCE, 20 + i * 28);
      ObjectSetInteger(0, labelName, OBJPROP_XSIZE, 120);
      ObjectSetInteger(0, labelName, OBJPROP_YSIZE, 24);
      ObjectSetInteger(0, labelName, OBJPROP_FONTSIZE, 10);
      ObjectSetInteger(0, labelName, OBJPROP_BGCOLOR, clrDarkSlateGray);
      ObjectSetInteger(0, labelName, OBJPROP_COLOR, clrWhite);
      ObjectSetInteger(0, labelName, OBJPROP_READONLY, true);
      // ★項目名は左揃え★
      ObjectSetInteger(0, labelName, OBJPROP_ALIGN, ALIGN_LEFT);
      ObjectSetString(0, labelName, OBJPROP_TEXT, labels[i]);

      // --- 値用のエディットボックス（右揃え）を作成 ---
      string valueName = prefix + "Value_" + IntegerToString(i);
      if(ObjectFind(0, valueName) >= 0) ObjectDelete(0, valueName);
      ObjectCreate(0, valueName, OBJ_EDIT, 0, 0, 0);
      ObjectSetInteger(0, valueName, OBJPROP_XDISTANCE, 130);
      ObjectSetInteger(0, valueName, OBJPROP_YDISTANCE, 20 + i * 28);
      ObjectSetInteger(0, valueName, OBJPROP_XSIZE, 150);
      ObjectSetInteger(0, valueName, OBJPROP_YSIZE, 24);
      ObjectSetInteger(0, valueName, OBJPROP_FONTSIZE, 10);
      ObjectSetInteger(0, valueName, OBJPROP_BGCOLOR, clrBlack);
      ObjectSetInteger(0, valueName, OBJPROP_COLOR, clrLime);
      ObjectSetInteger(0, valueName, OBJPROP_READONLY, true);
      // ★数値は右揃えで桁を揃える★
      ObjectSetInteger(0, valueName, OBJPROP_ALIGN, ALIGN_RIGHT);
      ObjectSetString(0, valueName, OBJPROP_TEXT, "---");
     }

   // タイマーを1秒間隔で設定（値の更新用）
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| タイマーイベントで値を更新                                        |
//+------------------------------------------------------------------+
void OnTimer()
  {
   // 各項目の値を更新
   ObjectSetString(0, prefix + "Value_0", OBJPROP_TEXT,
                   DoubleToString(AccountBalance(), 2));
   ObjectSetString(0, prefix + "Value_1", OBJPROP_TEXT,
                   DoubleToString(AccountEquity(), 2));
   ObjectSetString(0, prefix + "Value_2", OBJPROP_TEXT,
                   IntegerToString(MarketInfo(Symbol(), MODE_SPREAD)));
   ObjectSetString(0, prefix + "Value_3", OBJPROP_TEXT,
                   TimeToString(TimeCurrent(), TIME_SECONDS));

   // チャートを再描画
   ChartRedraw(0);
  }

//+------------------------------------------------------------------+
//| 終了処理                                                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // タイマーを停止
   EventKillTimer();

   // 作成したオブジェクトをすべて削除
   for(int i = 0; i < PANEL_ROWS; i++)
     {
      ObjectDelete(0, prefix + "Label_" + IntegerToString(i));
      ObjectDelete(0, prefix + "Value_" + IntegerToString(i));
     }
  }

//+------------------------------------------------------------------+
//| メイン処理（インジケーターとして必要）                            |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &#038;time[],
                const double &#038;open[],
                const double &#038;high[],
                const double &#038;low[],
                const double &#038;close[],
                const long &#038;tick_volume[],
                const long &#038;volume[],
                const int &#038;spread[])
  {
   return(rates_total);
  }</code></pre>


<p>　</p>



<h3 class="wp-block-heading"><span id="toc8">例4：EAのトレード状況ダッシュボードを表示する</span></h3>



<p>EA（エキスパートアドバイザー）内でトレード状況をリアルタイムに表示するダッシュボードの例です。項目名を左揃え、数値を右揃えにすることで、情報を見やすく整理しています。</p>


<pre><code class="language-mql4">//+------------------------------------------------------------------+
//| EAのトレード状況ダッシュボード                                    |
//+------------------------------------------------------------------+

// ダッシュボードのオブジェクト名プレフィックス
string dashPrefix = "Dash_";

//+------------------------------------------------------------------+
//| ダッシュボード用のエディットボックスを1つ作成する関数             |
//| name : オブジェクト名                                             |
//| x, y : 表示位置（ピクセル）                                      |
//| width : 横幅（ピクセル）                                         |
//| text : 表示テキスト                                              |
//| align : テキスト整列方法                                         |
//| bgColor : 背景色                                                 |
//| textColor : 文字色                                               |
//+------------------------------------------------------------------+
void CreateDashEdit(string name, int x, int y, int width,
                    string text, ENUM_ALIGN_MODE align,
                    color bgColor, color textColor)
  {
   // 既存オブジェクトがあれば削除
   if(ObjectFind(0, name) >= 0)
      ObjectDelete(0, name);

   // OBJ_EDIT（テキスト入力欄）を作成
   ObjectCreate(0, name, OBJ_EDIT, 0, 0, 0);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetInteger(0, name, OBJPROP_XSIZE, width);
   ObjectSetInteger(0, name, OBJPROP_YSIZE, 22);
   ObjectSetInteger(0, name, OBJPROP_FONTSIZE, 9);
   ObjectSetInteger(0, name, OBJPROP_BGCOLOR, bgColor);
   ObjectSetInteger(0, name, OBJPROP_COLOR, textColor);
   // 読み取り専用に設定（ユーザーが編集できないようにする）
   ObjectSetInteger(0, name, OBJPROP_READONLY, true);
   ObjectSetInteger(0, name, OBJPROP_BORDER_COLOR, clrGray);

   // ★テキスト整列の定数を適用★
   ObjectSetInteger(0, name, OBJPROP_ALIGN, align);

   // テキストを設定
   ObjectSetString(0, name, OBJPROP_TEXT, text);
  }

//+------------------------------------------------------------------+
//| ダッシュボードを初期化して表示する関数                            |
//+------------------------------------------------------------------+
void InitDashboard()
  {
   int startX = 10;   // ダッシュボード左端のX座標
   int startY = 15;   // ダッシュボード上端のY座標
   int rowH   = 26;   // 行の高さ（ピクセル）

   // タイトル行を中央揃えで作成
   CreateDashEdit(dashPrefix + "Title", startX, startY, 280,
                  "== トレード状況 ==", ALIGN_CENTER,
                  clrNavy, clrWhite);

   // 各行の項目名（左揃え）と値（右揃え）を作成
   string items[] = {"通貨ペア", "現在価格", "保有ポジション数",
                     "合計損益", "スプレッド"};

   for(int i = 0; i < 5; i++)
     {
      int y = startY + (i + 1) * rowH;

      // 項目名：左揃えで表示
      CreateDashEdit(dashPrefix + "L" + IntegerToString(i),
                     startX, y, 140,
                     items[i], ALIGN_LEFT,
                     clrDarkSlateGray, clrWhite);

      // 値：右揃えで表示（初期値は「---」）
      CreateDashEdit(dashPrefix + "V" + IntegerToString(i),
                     startX + 140, y, 140,
                     "---", ALIGN_RIGHT,
                     clrBlack, clrAqua);
     }
  }

//+------------------------------------------------------------------+
//| ダッシュボードの値を最新情報に更新する関数                        |
//+------------------------------------------------------------------+
void UpdateDashboard()
  {
   // 保有ポジション数と合計損益を計算
   int posCount = 0;
   double totalProfit = 0.0;

   for(int i = OrdersTotal() - 1; i >= 0; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
         // 現在の通貨ペアのポジションのみカウント
         if(OrderSymbol() == Symbol())
           {
            posCount++;
            totalProfit += OrderProfit() + OrderSwap() + OrderCommission();
           }
        }
     }

   // 損益に応じて文字色を変更（プラスは緑、マイナスは赤）
   color profitColor = (totalProfit >= 0) ? clrLime : clrRed;

   // 各値を更新
   ObjectSetString(0, dashPrefix + "V0", OBJPROP_TEXT, Symbol());
   ObjectSetString(0, dashPrefix + "V1", OBJPROP_TEXT,
                   DoubleToString(Bid, (int)MarketInfo(Symbol(), MODE_DIGITS)));
   ObjectSetString(0, dashPrefix + "V2", OBJPROP_TEXT,
                   IntegerToString(posCount) + " 件");
   ObjectSetString(0, dashPrefix + "V3", OBJPROP_TEXT,
                   DoubleToString(totalProfit, 2) + " " + AccountCurrency());
   // 損益の文字色を動的に変更
   ObjectSetInteger(0, dashPrefix + "V3", OBJPROP_COLOR, profitColor);
   ObjectSetString(0, dashPrefix + "V4", OBJPROP_TEXT,
                   IntegerToString((int)MarketInfo(Symbol(), MODE_SPREAD)) + " pt");

   // チャートを再描画して反映
   ChartRedraw(0);
  }

//+------------------------------------------------------------------+
//| ダッシュボードのオブジェクトをすべて削除する関数                  |
//+------------------------------------------------------------------+
void RemoveDashboard()
  {
   // プレフィックスが一致するオブジェクトをすべて削除
   int total = ObjectsTotal(0);
   for(int i = total - 1; i >= 0; i--)
     {
      string name = ObjectName(0, i);
      if(StringFind(name, dashPrefix) == 0)
         ObjectDelete(0, name);
     }
  }</code></pre>


<p>　</p>



<h3 class="wp-block-heading"><span id="toc9">例5：ボタンクリックでテキスト整列を切り替えるインジケーター</span></h3>



<p>チャート上にボタンとテキスト表示欄を設置し、ボタンをクリックするたびにテキストの整列方法を左揃え→中央揃え→右揃えの順に切り替えるインジケーターです。OnChartEvent関数を使ったイベント処理の参考にもなります。</p>


<pre><code class="language-mql4">//+------------------------------------------------------------------+
//| ボタンクリックでテキスト整列を切り替えるインジケーター           |
//+------------------------------------------------------------------+
#property indicator_chart_window

// オブジェクト名の定数
#define BTN_NAME   "AlignSwitchBtn"    // ボタンのオブジェクト名
#define EDIT_NAME  "AlignSwitchEdit"   // テキスト表示欄のオブジェクト名
#define INFO_NAME  "AlignSwitchInfo"   // 現在の整列情報を表示するオブジェクト名

// 現在の整列モードを保持する変数（0=左, 1=中央, 2=右）
int currentAlignIndex = 0;

//+------------------------------------------------------------------+
//| 初期化関数                                                        |
//+------------------------------------------------------------------+
int OnInit()
  {
   // --- 切り替えボタンを作成 ---
   if(ObjectFind(0, BTN_NAME) >= 0)
      ObjectDelete(0, BTN_NAME);
   ObjectCreate(0, BTN_NAME, OBJ_BUTTON, 0, 0, 0);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_XDISTANCE, 30);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_YDISTANCE, 30);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_XSIZE, 140);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_YSIZE, 30);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_FONTSIZE, 10);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_BGCOLOR, clrSteelBlue);
   ObjectSetInteger(0, BTN_NAME, OBJPROP_COLOR, clrWhite);
   ObjectSetString(0, BTN_NAME, OBJPROP_TEXT, "整列を切り替え");

   // --- テキスト表示欄を作成（初期は左揃え） ---
   if(ObjectFind(0, EDIT_NAME) >= 0)
      ObjectDelete(0, EDIT_NAME);
   ObjectCreate(0, EDIT_NAME, OBJ_EDIT, 0, 0, 0);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_XDISTANCE, 30);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_YDISTANCE, 70);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_XSIZE, 300);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_YSIZE, 30);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_FONTSIZE, 11);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_BGCOLOR, clrWhite);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_COLOR, clrBlack);
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_READONLY, true);
   // ★初期値は左揃え★
   ObjectSetInteger(0, EDIT_NAME, OBJPROP_ALIGN, ALIGN_LEFT);
   ObjectSetString(0, EDIT_NAME, OBJPROP_TEXT, "サンプルテキスト ABC123");

   // --- 現在の整列状態を表示するラベルを作成 ---
   if(ObjectFind(0, INFO_NAME) >= 0)
      ObjectDelete(0, INFO_NAME);
   ObjectCreate(0, INFO_NAME, OBJ_EDIT, 0, 0, 0);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_XDISTANCE, 30);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_YDISTANCE, 108);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_XSIZE, 300);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_YSIZE, 24);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_FONTSIZE, 9);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_BGCOLOR, clrDarkSlateGray);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_COLOR, clrYellow);
   ObjectSetInteger(0, INFO_NAME, OBJPROP_READONLY, true);
   // ★情報ラベルは中央揃え★
   ObjectSetInteger(0, INFO_NAME, OBJPROP_ALIGN, ALIGN_CENTER);
   ObjectSetString(0, INFO_NAME, OBJPROP_TEXT,
                   "現在の整列: ALIGN_LEFT（左揃え）");

   ChartRedraw(0);
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| チャートイベント処理（ボタンクリックを検出）                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   // オブジェクトクリックイベントかどうかを判定
   if(id == CHARTEVENT_OBJECT_CLICK)
     {
      // クリックされたのが切り替えボタンかどうかを確認
      if(sparam == BTN_NAME)
        {
         // 整列インデックスを次に進める（0→1→2→0のループ）
         currentAlignIndex = (currentAlignIndex + 1) % 3;

         // インデックスに応じた整列定数と表示名を決定
         ENUM_ALIGN_MODE newAlign;
         string alignText;

         switch(currentAlignIndex)
           {
            case 0:
               newAlign  = ALIGN_LEFT;
               alignText = "ALIGN_LEFT（左揃え）";
               break;
            case 1:
               newAlign  = ALIGN_CENTER;
               alignText = "ALIGN_CENTER（中央揃え）";
               break;
            case 2:
               newAlign  = ALIGN_RIGHT;
               alignText = "ALIGN_RIGHT（右揃え）";
               break;
            default:
               newAlign  = ALIGN_LEFT;
               alignText = "ALIGN_LEFT（左揃え）";
               break;
           }

         // ★テキスト表示欄の整列方法を変更★
         ObjectSetInteger(0, EDIT_NAME, OBJPROP_ALIGN, newAlign);

         // 情報ラベルに現在の整列方法を表示
         ObjectSetString(0, INFO_NAME, OBJPROP_TEXT,
                         "現在の整列: " + alignText);

         // ボタンの押下状態を解除
         ObjectSetInteger(0, BTN_NAME, OBJPROP_STATE, false);

         // チャートを再描画して反映
         ChartRedraw(0);

         Print("テキスト整列を変更しました: ", alignText);
        }
     }
  }

//+------------------------------------------------------------------+
//| 終了処理                                                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // 作成したオブジェクトを削除
   ObjectDelete(0, BTN_NAME);
   ObjectDelete(0, EDIT_NAME);
   ObjectDelete(0, INFO_NAME);
  }

//+------------------------------------------------------------------+
//| メイン処理（インジケーターとして必要）                            |
//+------------------------------------------------------------------+
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(rates_total);
  }</code></pre>


<p>　</p>
<p>投稿 <a href="https://mql-programing.com/archives/1693/enum_align_mode/">【MQL4定数】テキスト整列の定数（ENUM_ALIGN_MODE）</a> は <a href="https://mql-programing.com">自動売買を作ろう！</a> に最初に表示されました。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
