Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Update control position when form is centered
Message
 
 
To
10/06/2015 06:08:42
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Miscellaneous
Thread ID:
01620818
Message ID:
01620842
Views:
42
>>>>I have a Date Control that I use everywhere in the application. The control is a container with a textbox and a button. When user clicks on the button the Calendar pops up for user to select a date (I am sure everybody has these controls). The Calendar shows right below the container, based on the container (Date Control) position. This works everywhere but on the form that has Auto Centered set to .T. In this case the Calendar pops up in the position where the form would be opened if not for the Auto Centered.
>>>>
>>>>How do I update the position of all controls on the form set to Auto Center?
>>>
>>>One thing I've done in the past when I want something to pop up at a fixed position relative to something else, is to pass the desired coordinates to the invoking call. Suppose you want the top left of the calendar to always appear at the bottom left corner of the container (i.e. the Parent of the button):
>>>
>>>* Button.Click()
>>>ShowCalendar( This.Parent.Left+thisform.Left, This.Parent.Top + This.Parent.Height +  thisform.top )
>>>
>>>* ShowCalendar()
>>>* Create the object
>>>* Set its .Left and .Top properties to the passed values
>>>* Show it
>>>
Similarly, you could just pass in a reference to This.Parent, and let ShowCalendar() do all the arithmetic.
>>
>>This is essence what my is doing; passing the Parent.left and .top to the ShowCalendar. But for some reasons these values are "wrong". I looked in the debugger and these values (Parent.left and Parent.right) are what they would be if the entire form was opened in the upper left corner. But I am opening it Centered. This is what I asked the question (this thread) to see what I need to do after the form is centered.
>>Thank you.
>
>if that analysis is correct for all cases, adding thisform.Left, thisform.top to the values of the parameters should fix it ;-)

Amazing that I have this calendar in my app since the late 90s and never had a problem. By some luck my forms were always positioned in the upper left corner so adding thisform.left and .top was not necessary. Only now when I created this form that has to be centered I realized - with your help - what I was missing.
I wanted to thank you again!
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham
Previous
Reply
Map
View

Click here to load this message in the networking platform