Combined panel: group box, two edits, dropdown, checkbox with initial_checked, and a button. All interaction in OnCalculate.
#property strict
#property indicator_chart_window
#include <guipro.mqh>
int gui_id;
int grp_handle, edit_a, edit_b, dd_handle, chk_handle, btn_handle;
string dd_items[] = {"Small", "Medium", "Large"};
//
int OnInit()
{
gui_id = guiInit();
if(gui_id <= 0)
return(INIT_FAILED);
grp_handle = guiAddGroupBox(gui_id, 15, 15, 280, 200, "Settings");
edit_a = guiAddEditbox(gui_id, 30, 45, 120, 24, "Lot");
edit_b = guiAddEditbox(gui_id, 160, 45, 120, 24, "SL pips");
dd_handle = guiAddDropDown(gui_id, 30, 85, 250, 100, dd_items, 1, "Sizeā¦");
chk_handle = guiAddCheckbox(gui_id, 30, 125, 200, 24, "Use trailing stop", clrBlack,
GUI_TEXT_NONE, "Segoe UI", 10, clrWhite,
GUI_BORDER_FLAT, 2, GUI_AUTO, GUI_AUTO, true);
btn_handle = guiAddButton(gui_id, 30, 165, 120, 28, "Apply");
return(INIT_SUCCEEDED);
} // OnInit
//
void OnDeinit(const int reason)
{
guiDeinit(gui_id);
} // OnDeinit
//
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[])
{
if(guiIsClicked(gui_id, btn_handle))
{
if(guiGetLastError(gui_id) != GUI_ERR_NO_ERROR)
return(rates_total);
string lots = guiObjectGetString(gui_id, edit_a, GUI_OBJPROP_TEXT);
string sl = guiObjectGetString(gui_id, edit_b, GUI_OBJPROP_TEXT);
int size_ix = guiObjectGetInteger(gui_id, dd_handle, GUI_OBJPROP_DROPDOWN_SEL);
int trail = guiObjectGetInteger(gui_id, chk_handle, GUI_OBJPROP_CHECKED);
if(guiGetLastError(gui_id) == GUI_ERR_NO_ERROR)
Print("Apply: lots=", lots, " sl=", sl, " size=", size_ix, " trail=", trail);
}
return(rates_total);
} // OnCalculate