New article Graphical Interfaces III: Groups of Simple and Multi-Functional Buttons (Chapter 2) has been published:
The first chapter of the series was about simple and multi-functional buttons. The second article will be dedicated to groups of interconnected buttons that will allow the creation of elements in an application when a user can select one of the option out of a set (group).
A group of simple buttons is essentially an array of graphical objects of the OBJ_BUTTON
type. The differential characteristic of such controls is that only one
button of the group can be pressed at a time. At this stage, a class of
this control can be created in two ways:
The second option is simpler as it does not require the creation of an additional method for each control of the CSimpleButton type to get to the base of pointers. We are going to use this one.
Create the RadioButtons.mqh file with the CRadioButtons
class which must contain standard virtual methods and class members for
storing and getting the form pointer. You can see examples in the
classes of other controls above. Include the RadioButtons.mqh file in the library (WndContainer.mqh).
Each radio item will be composed of thee primitive objects:
Fig. 3. Compound parts of radio buttons.
Author: Anatoli Kazharski
Great work !
But: when trying to use the Panel as Indicator on MT4 (!) , every click on a "Icon Button" results a twice printed your ::Print(__FUNCTION__," > id: ",id,"; lparam: ",lparam,"; dparam: ",dparam,"; sparam: ",sparam);
So every click action like an increment or something else will be done twice :(Is there any way to fix it ?P.S. the curious thing is, that all works fine on MT5. Just MT4 has this Issue when using as Indicator. As Expert it works also fine.
Is there any way to fix it ?P.S. the curious thing is, that all works fine on MT5. Just MT4 has this Issue when using as Indicator. As Expert it works also fine.
I have done a quick´n´dirty solution which works for me very well. My way was to check the left button pressed bit separate at first in OnEvent and if is set to write a bool true in a helper. After that the regular if statemenet extended with helper == true , and setting inside the if just resetting the helper. Works nearly perfect. In some cases to fast clicks are not mentioned, but better slower clicking except having double results :)BTW: would be nice, if someone could update all your current Libraries to english. Your newest one f.e. article 05 and so on are only in russian.
I have a question,
how do you make the black part around your icons transparent?