Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
I'm trying to get the size of each visualization client and store it in an array. There appears to be two approaches to getting information from the visu clients:
However, pClientData^.GlobalData.GlobalClientID always reads -1.
I think I would prefer to use the responsive design method. But is it possible to get the current client ID in the ClientSizeChanged method of a function block that implements VisuElems.IClientManagerListener3?
Last edit: tvm 2022-06-28
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If I set a breakpoint in the HandleClient method of the VU.IVisualizationClientIteration interface, I get the attached screenshot, which seems to show that pClient is part of itfClient (VU.IVisualizationClient).
However, I can't access that pClient data in the program. I tried to use QUERYPOINTER(itfClient, pClientData), but it returns an invalid pointer
There is still one thing I don't understand, however. If I use the responsive design, with a Client Manager Listener implementing VisuElems.IClientManagerListener3, why does the GlobalClientID variable always return -1?
I'm trying to get the size of each visualization client and store it in an array. There appears to be two approaches to getting information from the visu clients:
Use the Visu Utils client iteration. Something like this thread: https://forge-codesys-com.translate.goog/forge/talk/Deutsch/thread/f14041c158/?xtrsl=auto&xtrtl=en&xtrhl=en-US&xtrpto=wapp#8477
The problem, this works with an interface itfClinet of type VU.IVisualizationClient. This interface appears to include the information I need. When I go online and set a breakpoint, I can see variables like this, for example:
itfClient._pClient^.rClientRect.pTopLeft
However, I can't access this variable in my code. I'm not exactly sure why not, but pClient can't be accessed.
I could use something like the example here: https://forge.codesys.com/prj/codesys-example/responsive-desi/home/Home/. This will give me the client size variables I want, for example:
pClientData^.rClientRect.ptTopLeft
However, pClientData^.GlobalData.GlobalClientID always reads -1.
I think I would prefer to use the responsive design method. But is it possible to get the current client ID in the ClientSizeChanged method of a function block that implements VisuElems.IClientManagerListener3?
Last edit: tvm 2022-06-28
The part I really don't understand is this:
If I set a breakpoint in the HandleClient method of the VU.IVisualizationClientIteration interface, I get the attached screenshot, which seems to show that pClient is part of itfClient (VU.IVisualizationClient).
However, I can't access that pClient data in the program. I tried to use QUERYPOINTER(itfClient, pClientData), but it returns an invalid pointer
For anyone else trying to figure this out, here's what finally worked:
then pClientData points to the correct place, for example pClientData^.rClientRect.ptBottomRight.iX
This was all by trial and error, so I really don't know if this is the right way to do it. I wish Codesys would create better documentation.
There is still one thing I don't understand, however. If I use the responsive design, with a Client Manager Listener implementing VisuElems.IClientManagerListener3, why does the GlobalClientID variable always return -1?