MT5- My Panel Side Window does appear after minimize/maximize

 

I have a panel made by standard Panel Class.

Panel has a button that show/hide a window which is created when program starts but it is hide from beginning unless user click on special Button. 

Problem: when I minimize then maximize Panel, that side window appears beside of Panel before any click on that special Button! 

I do coded rehide of that window inside of minimize/maximize function but it looks like it is not working and does not executing that line of code!!! 

I attached Panel mqh file and highlighted minimized/maximize function by Green. (OnResize(void))

Also highlighted Button ONCLICK function by Red! (OnClickSSList(void))

and finally the Window creation function is "CreatSymbolsWindow".


How can I solve this problem?!

//+------------------------------------------------------------------+
//| Class Binance_Panel                                              |
//| Usage: main dialog of the Controls application                   |
//+------------------------------------------------------------------+
class CBinancePanel : public CAppDialog
  {
   private:
      CComboBox         m_providers, m_symbols;                            // Data Providers (Websites) Combo Box
      CButton           m_Download, m_Connect, m_SSList, m_OpenChart;                       // the button object
      CEdit             m_LoginE, m_PassE;
      CBmpButton        m_DataEstimateB, m_LoginB;             //
      CLabel            m_DataEstimation, m_Login, m_Pass, m_StartDate, m_EndDate, m_Provider_Label, m_SelectS;                //
      CDatePicker       m_StartDateP, m_EndDateP;                                      //
      CCheckBox         m_AllHCheck;                          // the time scale management object
      CListView         m_SSWindow;
      CCheckGroup       m_check_group;                   // the check box group object

   public:
                     CBinancePanel(void);
                    ~CBinancePanel(void);
                    
   //--- create
   virtual bool      Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2);
   //--- chart event handler
   virtual bool      OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);

protected:
   //--- create dependent controls
   bool              CreateProviders(void);
   bool              CreateSymbols(void);
   bool              CreatLogin(void);
   bool              CreatLoginE(void);
   bool              CreatPass(void);
   bool              CreatPassE(void);
   bool              CreatDownload(void);
   bool              CreatConnect(void);
   bool              CreatSSList(void);
   bool              CreatSelectS(void);
   bool              CreatOpenChart(void);
   bool              CreatStartDate(void);
   bool              CreatEndDate(void);
   bool              CreatStartDateP(void);
   bool              CreatEndDateP(void);
   bool              CreatAllHCheck(void);
   bool              CreatSymbolsWindow(int x, int y);
   bool              CreatProvidersLabel(void);   
   bool              CreateCheckGroup(int x1, int y1, int x2, int y2, int count);
   //--- fill dependent controls
   bool              FillSymbols(int z);
   bool              FillProviders(void);
   bool              FillSymbolsWindow(string &SelectedSSymbols);
   
   //--- internal event handlers
   virtual bool      OnResize(void);
   //--- handlers of the dependent controls events
   void              OnChangeSymbols(void);
   void              OnChangeProviders(void);

   void              OnChangeLoginE(void);
   void              OnChangePassE(void);
   void              OnClickDownload(void);
   void              OnClickConnect(void);
   void              OnClickSSList(void);
   void              OnClickOpenChart(void);
   void              OnChangeStartDateP(void);
   void              OnChangeEndDateP(void);
   void              OnChangeAllHCheck(void);
   void              OnChangeCheckGroup(void);
   //--- change dialog title
   void              SetCaption(void);
  };
//+------------------------------------------------------------------+
//| Event Handling                                                   |
//+------------------------------------------------------------------+
   EVENT_MAP_BEGIN(CBinancePanel)
   ON_EVENT(ON_CHANGE,m_symbols,OnChangeSymbols)
   ON_EVENT(ON_CHANGE,m_providers,OnChangeProviders)
   ON_EVENT(ON_END_EDIT,m_LoginE,OnChangeLoginE)
   ON_EVENT(ON_END_EDIT,m_PassE,OnChangePassE)
   ON_EVENT(ON_CLICK,m_Download,OnClickDownload)
   ON_EVENT(ON_CLICK,m_Connect,OnClickConnect)
   ON_EVENT(ON_CLICK,m_SSList,OnClickSSList)
   ON_EVENT(ON_CLICK,m_OpenChart,OnClickOpenChart)
   ON_EVENT(ON_CHANGE,m_StartDateP,OnChangeStartDateP)
   ON_EVENT(ON_CHANGE,m_EndDateP,OnChangeEndDateP)
   ON_EVENT(ON_CHANGE,m_AllHCheck,OnChangeAllHCheck)
   ON_EVENT(ON_CHANGE,m_check_group,OnChangeCheckGroup)
   //ON_EVENT(ON_CHANGE,m_LoginB,OnChangeLoginB)
   //ON_EVENT(ON_CHANGE,m_Download,OnChangeDownload)
   //ON_EVENT(ON_CHANGE,m_DataEstimateB,OnChangeDataEstimateB)
   //ON_EVENT(ON_CHANGE,m_DataEstimation,OnChangeDataEstimation)
   //ON_EVENT(ON_CHANGE,m_DateDropListStart,OnChangeDateDropListStart)
   //ON_EVENT(ON_CHANGE,m_DateDropListEnd,OnChangeDateDropListEnd)
   //ON_EVENT(ON_CHANGE,m_DatePicker,OnChangeDatePicker)
   EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+
//| Constructor                                                      |
//+------------------------------------------------------------------+
CBinancePanel::CBinancePanel(void)
  {
  }
//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CBinancePanel::~CBinancePanel(void)
  {
  
  }
//+------------------------------------------------------------------+
//| Create                                                           |
//+------------------------------------------------------------------+
bool CBinancePanel::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false);
//--- create dependent controls
   if(!CreatProvidersLabel()) return(false);
   if(!CreateSymbols()) return(false);
   if(!CreateProviders()) return(false);
   if(!CreatLogin()) return(false);
   if(!CreatPass()) return(false);
   if(!CreatLoginE()) return(false);
   if(!CreatPassE()) return(false);
   if(!CreatDownload()) return(false);
   if(!CreatConnect()) return(false);
   if(!CreatSSList()) return(false);
   if(!CreatSelectS()) return(false);
   if(!CreatOpenChart()) return(false);
   if(!CreatStartDate()) return(false);
   if(!CreatEndDate()) return(false);
   if(!CreatStartDateP()) return(false);
   if(!CreatEndDateP()) return(false);
   if(!CreatAllHCheck()) return(false);
   if(!CreatSymbolsWindow(x1+ClientAreaWidth(), y1-ClientAreaTop())) return(false);
   
   //if(!CreatDateDropListStart()) return(false);
   //if(!CreatDateDropListEnd()) return(false);
   //if(!CreatDatePicker()) return(false);
   //if(!CreatProvidersLabel()) return(false);

//--- change dialog title
   SetCaption();
   
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create the "Select Symbol List" button                           |
//+------------------------------------------------------------------+
bool CBinancePanel::CreatSSList(void)
  {
//--- coordinates
   int x1=ClientAreaWidth() - INDENT_RIGHT - (int) ((ClientAreaWidth() - INDENT_RIGHT - INDENT_LEFT)/2.0) + CONTROLS_GAP_X2;
   int y1=INDENT_TOP +CONTROLS_GAP_Y+COMBOBOX_HEIGHT*3+2*CONTROLS_GAP_Y2;
   int x2=ClientAreaWidth() - INDENT_RIGHT ;
   int y2=y1+BUTTON_HEIGHT;
   
//--- create
   if(!m_SSList.Create(m_chart_id,m_name+"SSList",m_subwin,x1,y1,x2,y2)) return(false);
   if(!m_SSList.Text("Select Symbol List")) return(false);
   if(!Add(m_SSList)) return(false);
   m_SSList.Locking(true);
   m_SSList.Alignment(WND_ALIGN_RIGHT,0,0, INDENT_RIGHT,0);
   
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create label for the "Select Symbol" Label                       |
//+------------------------------------------------------------------+
bool CBinancePanel::CreatSelectS(void)
  {
//--- coordinates
   int x1=INDENT_LEFT;
   int y1=INDENT_TOP +CONTROLS_GAP_Y+COMBOBOX_HEIGHT*4+4*CONTROLS_GAP_Y2 + BUTTON_HEIGHT;
   int x2=x1+COMBOBOX_WIDTH;
   int y2=y1+COMBOBOX_HEIGHT;

//--- create
   if(!m_SelectS.Create(m_chart_id,m_name+"SelectS",m_subwin,x1,y1,x2,y2)) return(false);
   if(!m_SelectS.Text("Select Symbol")) return(false);
   if(!Add(m_SelectS)) return(false);
   
   m_SelectS.Alignment(WND_ALIGN_LEFT,0,0,INDENT_LEFT,0);
   
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Create Symbols Selection Window                                  |
//+------------------------------------------------------------------+
bool CBinancePanel::CreatSymbolsWindow(int x1, int y1)
  {
//--- coordinates
   int x2=x1+INDENT_RIGHT + COMBOBOX_WIDTH;
   int y2=y1+COMBOBOX_HEIGHT * 12;

//--- create
   if(!m_SSWindow.Create(m_chart_id,m_name+"SymbolSelectWindow",m_subwin,x1,y1,x2,y2)) return(false);
   //if(!m_SSWindow.Caption("Symbol Select")) return(false);
   if(!Add(m_SSWindow)) return(false);

   m_SSWindow.Alignment(WND_ALIGN_LEFT,0,0,INDENT_LEFT,0);
   m_SSWindow.Hide();
   //m_check_group.Destroy();
   //if(!CreateCheckGroup(x1, y1, x2, y2, ArraySize(SSymbolList))) {Print("Check group DID NOT created!");return(false);}
   /*
   if (ArraySize(SSymbolList)>0)
   for(int i=0;i<ArraySize(SSymbolList);i++)
   if(!m_SSWindow.AddItem(SSymbolList[i]))
      return(false);
*/
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CBinancePanel::OnClickSSList(void)
  {
  //ArrayResize(SSymbolList, ArraySize(SymbolList), 0);
  //for ( int i=0; i<=ArraySize(SymbolList)-1; i++) SSymbolList[i] = SymbolList[i];
  //Print("Selected Symbol List: ", ArraySize(SSymbolList));
  //Print("::  ",m_SSWindow.IsVisible());
  
  //Print("BG Color: ", m_SSList.Pressed(), m_SSWindow.IsVisible());

  if (m_SSList.Pressed())
   {
   //m_SSList.StateFlags(7);
   m_SSWindow.Show();
   }
   else if (!m_SSList.Pressed())
   {
   //m_SSList.StateFlags(3);
   m_SSWindow.Hide();
   }   
  //Print("Stateflag 2:",m_SSList.StateFlags());
  //if (m_SSWindow.IsVisible()) m_SSWindow.Hide();
  //else m_SSWindow.Show();
  }
//+------------------------------------------------------------------+
//| Fill the "Symbols" combo box                                     |
//+------------------------------------------------------------------+
bool CBinancePanel::FillSymbols(int z)
  {
  if (z == 0)
     {
     return(true);
      int total=SymbolsTotal(true);
      for(int i=0;i<total;i++)
         if(!m_symbols.ItemAdd(SymbolName(i,true)))
            return(false);
      }
   
   if (z == 1)
      {
      for(int i=0;i<10000-1;i++) if(!m_symbols.ItemDelete(i)) break;

      int Scount = ArraySize(SymbolList);
      for(int i=0;i<Scount-1;i++) m_symbols.ItemAdd(SymbolList[i]);
      }      
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Handler of resizing                                              |
//+------------------------------------------------------------------+
bool CBinancePanel::OnResize(void)
  {
   //Print("OnResize");
//--- call method of parent class
   if(!CAppDialog::OnResize()) return(false);
   //Print("Onresize Done");
   
   //Print("Onresize: ",m_SSWindow.IsVisible() && m_SSList.Pressed());
   //Print("Onresize: ",!m_SSWindow.IsVisible() && !m_SSList.Pressed());
   
  if (m_SSList.Pressed())
   m_SSWindow.Show();
   else if (!m_SSList.Pressed())
   m_SSWindow.Hide();

   //Print("SSWindow Check Done");
   //Print("Onresize: ",m_SSWindow.IsVisible() && m_SSList.Pressed());
   //Print("Onresize: ",!m_SSWindow.IsVisible() && !m_SSList.Pressed());
   
   //Print(m_SSWindow.Hide(), m_SSWindow.IsVisible());
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+
//| Event handler                                                    |
//+------------------------------------------------------------------+
void CBinancePanel::OnChangeCheckGroup(void)
  {
   //m_edit.Text(__FUNCTION__+" : Value="+IntegerToString(m_check_group.Value()));
  }
//+------------------------------------------------------------------+
//| Change dialog title                                              |
//+------------------------------------------------------------------+
void CBinancePanel::SetCaption(void)
  {
   Caption(ProgramName()+"("+m_providers.Select()+")");
   m_Connect.Text("Connect " + m_providers.Select());
  }

Files:
new1.jpg  55 kb