Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Update control position when form is centered
Message
De
10/06/2015 06:08:42
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows Server 2012
Network:
Windows 2008 Server
Database:
MS SQL Server
Application:
Web
Divers
Thread ID:
01620818
Message ID:
01620827
Vues:
44
>>>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 ;-)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform