When using text graphics in the indicators it is often necessary to implement the possibility to change their font type in the indicator input parameters.
The most obvious solution in such a case is to enter a font name manually as a line in the input parameters but it is not very convenient and is prone to errors. More efficient method is to use the custom variables based on enumerations and drop-down menu lists. Presented function module is designed to solve this task.
One example is enough to be able to work with the library. Suppose we have the indicator (ChartInfo_Old.mq5) that displays a text label in one corner of the chart. Here are its input parameters:
//+----------------------------------------------+ //| Indicator input parameters                 | //+----------------------------------------------+ input string Text="Real";                          // Text label contents input color  TextColor=Red;                       // Text label color input int    FontSize=24;                         // Font size input type_font FontType=Font7;                  // Font type input ENUM_BASE_CORNER  WhatCorner=CORNER_LEFT_LOWER; // Location corner input uint Y_=1;                                 // Vertical location
With such a code the indicator input parameters window will have the following look:
To free the indicator user from the necessity to manually enter a font name we should insert some changes to the code:
1. Add the contents of the GetFontName.mqh file before the declaration of the indicator input parameters with the help of the #include directive:
//+----------------------------------------------+ // type_font enumeration description            | // CFontName class description                  | //+----------------------------------------------+ #include <GetFontName.mqh>
2. Replace the line of the FontType input parameter:
input string FontType="Courier New"; // Font type
with the line
input type_font FontType=Font7; // Font type
Thus, we have changed a bit the meaning of the variable usage. The meaning of the previous variable must be realized in the new string variable that is to be declared at the global level
string sFontType;
Then the FontType variable in the indicator code must be replaced with sFontType. This must be done only in one place:
  SetTLabel(0,"Info_Label",0,WhatCorner,ENUM_ANCHOR_POINT(2*WhatCorner),5,Y_,Text,TextColor,sFontType,FontSize);
Now, sFontType variable must be initialized in the OnInit() block. That can be done with only a couple of code lines:
  CFontName FONT;   sFontType=FONT.GetFontName(FontType);
Revised ChartInfo.mq5 indicator can be compiled after that.
Now you can see the changes in the indicator input parameters window:
Working with fonts in the indicator input parameters has become much more convenient.