How to change CAppDialog background color?

To add comments, please log in or register
Mohammad Mohi
314
Mohammad Mohi  
I need to change background color of my Panel derived from CAppDialog, but since m_background is a private member of CDialog, I can't access it and change the color with the function ColorBackground(). I appritiate any help.
Vladimir Karputov
Moderator
121959
Vladimir Karputov  
Mohammad Mohi:
I need to change background color of my Panel derived from CAppDialog, but since m_background is a private member of CDialog, I can't access it and change the color with the function ColorBackground(). I appritiate any help.

Just create your own panel "CPanel" ...

This example is based on a standard of Example ...\MQL5\Experts\Examples\Controls\

Files:
Mohammad Mohi
314
Mohammad Mohi  
Karputov Vladimir:

Just create your own panel "CPanel" ...

This example is based on a standard of Example ...\MQL5\Experts\Examples\Controls\

Thanks for reply, But I want to change the main CAppDialog background color or caption bar, not the controls on it.
Vladimir Karputov
Moderator
121959
Vladimir Karputov  
Mohammad Mohi:
Thanks for reply, But I want to change the main CAppDialog background color or caption bar, not the controls on it.
Extend my plate - and you can change the background color :). By CAppDialog not have access.
Mohammad Mohi
314
Mohammad Mohi  
Karputov Vladimir:
Extend my plate - and you can change the background color :). By CAppDialog not have access.
That's fine, I know that way but I need to code as less as possible, and want to benefit from further developments made to the Standard Library, that's why I want to try a native way rather than extending, I believe one should be able to change the Panel colors within the inherited class itself.
Ernst Van Der Merwe
5759
Ernst Van Der Merwe  
The simplest way would be to move m_background to protected: but then the code would have to be changed when the class is updated.
aries
67
aries  

Mohammad, how did you solve this?

I have same problem and any way I look at it, it's a lot of hassle. Either I have to change core lib and then keep changing it after every update, or I have to write a sh11ton of code, classes that inherit the core lib but afterward serves basically nothing else.

Mauricio Costa
48
Mauricio Costa  

I created a new public method on CDialog class to change background color:

bool CDialog::setBackColor(color uColor)
{
   if(!m_white_border.ColorBackground(uColor))
      return(false);
   if(!m_background.ColorBackground(uColor))
      return(false);
   if(!m_client_area.ColorBackground(uColor))
      return(false);
   
   return true;
}


...then, I can change background color after do the Create method of Dialog object.

I hope it help you...

Aleksei Beliakov
40805
Aleksei Beliakov  
Mauricio Costa:

I created a new public method on CDialog class to change background color:


...then, I can change background color after do the Create method of Dialog object.

I hope it help you...


thank bro

whroeder1
17939
whroeder1  
Mauricio Costa: I created a new public method on CDialog class to change background color:
bool CDialog::setBackColor(color uColor)
{
   if(!m_white_border.ColorBackground(uColor))
      return(false);
   if(!m_background.ColorBackground(uColor))
      return(false);
   if(!m_client_area.ColorBackground(uColor))
      return(false);
   
   return true;
}
Simplify your code. Increase Order after stoploss - MQL4 and MetaTrader 4 - MQL4 programming forum
Mohammad Mohi
314
Mohammad Mohi  
aries:

Mohammad, how did you solve this?

I have same problem and any way I look at it, it's a lot of hassle. Either I have to change core lib and then keep changing it after every update, or I have to write a sh11ton of code, classes that inherit the core lib but afterward serves basically nothing else.


https://www.mql5.com/en/articles/4575#para4
Improving Panels: Adding transparency, changing background color and inheriting from CAppDialog/CWndClient
Improving Panels: Adding transparency, changing background color and inheriting from CAppDialog/CWndClient
  • www.mql5.com
CAppDialog class based panels lack methods for direct access to the properties of controls which the panel is made of, such as the Background color and the Frame color. Therefore, all created panels are gray.  It is not possible to implement design ideas without the ability to change the color of controls. This problem could be solved by...
To add comments, please log in or register