Home » Community » Newbie corner » Getting the width of a layout?
Getting the width of a layout? [message #47785] |
Sun, 26 March 2017 06:48  |
ptkacz
Messages: 89 Registered: March 2017
|
Member |
|
|
There appears to be some U++ magic going on, in how one goes from creating a layout and accessing it programatically.
If one creates a layout, let's say called, "ButtonLayout", one is able to then reference it as "WithButtonLayout". One can then define an object as follows:
WithButtonLayout<ParentCtrl> buttonPanel;
Button panel now allows us to work with the layout. How does one acquire the width or dimensions of the layout (i.e. buttonPanel)?
My other question, is how does "WithButtonLayout" come to be?
Peter
|
|
|
Re: Getting the width of a layout? [message #47797 is a reply to message #47785] |
Wed, 29 March 2017 09:33   |
cbpporter
Messages: 1427 Registered: September 2007
|
Ultimate Contributor |
|
|
When you see:
WithButtonLayout<ParentCtrl> buttonPanel;
Read instead:
ParentCtrl buttonPanel;
ParentCtrl is still the class of buttonPanel. Adding WithButtonLayout does not change the base class of your item. All it does is add a new set of fields and the CtrlLayout method so that you can apply the layout you designed to it.
So you can use the standard methods to get position and sizes.
The online documentation here is kind of lacking:
http://www.ultimatepp.org/srcdoc$CtrlCore$LogPos$en-us.html
But you can read the documentation for these functions from Ctrl:
Ctrl& LeftPos(int a, int size = STDSIZE);
Ctrl& RightPos(int a, int size = STDSIZE);
Ctrl& TopPos(int a, int size = STDSIZE);
Ctrl& BottomPos(int a, int size = STDSIZE);
Ctrl& HSizePos(int a = 0, int b = 0);
Ctrl& VSizePos(int a = 0, int b = 0);
Ctrl& SizePos();
Ctrl& HCenterPos(int size = STDSIZE, int delta = 0);
Ctrl& VCenterPos(int size = STDSIZE, int delta = 0);
Ctrl& LeftPosZ(int a, int size = STDSIZE);
Ctrl& RightPosZ(int a, int size = STDSIZE);
Ctrl& TopPosZ(int a, int size = STDSIZE);
Ctrl& BottomPosZ(int a, int size = STDSIZE);
Ctrl& HSizePosZ(int a = 0, int b = 0);
Ctrl& VSizePosZ(int a = 0, int b = 0);
Ctrl& HCenterPosZ(int size = STDSIZE, int delta = 0);
Ctrl& VCenterPosZ(int size = STDSIZE, int delta = 0);
Rect GetRect() const;
Rect GetScreenRect() const;
Rect GetView() const;
Rect GetScreenView() const;
Size GetSize() const;
So GetRect should allow you to determine the size of your layout.
|
|
|
Re: Getting the width of a layout? [message #47810 is a reply to message #47785] |
Sun, 02 April 2017 00:32   |
ptkacz
Messages: 89 Registered: March 2017
|
Member |
|
|
Wow, cbpporter, thanks.
I'll look at your list and available documentation.
I did come across in the forums that revealed how to get the width, something like the following:
Size sz = buttonPanel.GetSize();
int width = sz.cx;
Kind of strange that there doesn't appear to be any getWidth(), or width() methods, but one can specify "cx". Kind of reminds me of a complex mathematical variable.
Peter
[Updated on: Sun, 02 April 2017 00:33] Report message to a moderator
|
|
|
Re: Getting the width of a layout? [message #48496 is a reply to message #47810] |
Mon, 10 July 2017 09:57  |
rafiwui
Messages: 105 Registered: June 2017 Location: Stuttgart, Germany
|
Experienced Member |
|
|
I thought this would fit here:
I was wondering what size GetSize() is returning? Is it the zoomed size or do I have to call Zx/Zy in front of GetSize().cx/cy to get a size I can work with?
Greetings
Daniel
|
|
|
Goto Forum:
Current Time: Fri May 09 19:54:59 CEST 2025
Total time taken to generate the page: 0.02257 seconds
|