Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Label.AutoSize
Message
De
16/04/2008 13:39:49
 
 
À
16/04/2008 13:10:56
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Versions des environnements
Visual FoxPro:
VFP 8 SP1
Divers
Thread ID:
01310962
Message ID:
01311226
Vues:
22
Stupid question ... You're sure that This.label1.AutoSize = TRUE ?
_
>A good thought.......Unfortunately, neither DOEVENTS nor INKEY() change the behavior. Setting the caption on the label does not seem to reset the width.
>
>
>>Rich,
>>
>>I think vfp only updates the width when it's not busy
>>
>>
>>>lcOldCaption = This.label1.caption ---> "Action Text"
>>>lnOldWidth = This.label1.Width -------> 57
>>>This.label1.Caption = tcCaption ------> "Update Chassis Information"
>>
>>=INKEY(.0001)  && may help, or a doevents
>>
>>>lnNewWidth = This.label1.Width -------> 57 ??????????
>>>This.Width = This.Width + (lnNewWidth  - lnOldWidth)
>>
>>
>>______________________
>>>I tried this and got the same result, even with the debugger turned on. Maybe my basic understanding is flawed.
>>>
>>>My assumption was that if the textbox AutoSize is set to .T. then the textbox will resize whenever the caption changes. If this is not correct, then is there something else I must do (beside try to calculate the width of the control manually) to reset the width? Right now, when I run through the debugger I see
>>>* Method SetCaption
>>>LPARAMETERS tcCaption
>>>lcOldCaption = This.label1.caption ---> "Action Text"
>>>lnOldWidth = This.label1.Width -------> 57
>>>This.label1.Caption = tcCaption ------> "Update Chassis Information"
>>>lnNewWidth = This.label1.Width -------> 57 ??????????
>>>This.Width = This.Width + (lnNewWidth  - lnOldWidth)
>>>
>>>
>>>Once again, all help greatly appreciated
>>>
>>>>Rich,
>>>>
>>>>Create method SetCaption for container class and use it instead of settting label caption directly
>>>>
>>>>* Method SetCaption
>>>>LPARAMETERS tcCaption
>>>>lnOldWidth = This.label1.Width
>>>>This.label1.Caption = tcCaption
>>>>lnNewWidth = This.label1.Width
>>>>This.Width = This.Width + (lnNewWidth  - lnOldWidth)
>>>>
>>>>
>>>>>I've created a container class. It has a label class inside it. The label class has AutoSize set to TRUE. It also has an Assign method
>>>>>LPARAMETERS vNewVal
>>>>>
>>>>>THIS.CAPTION = m.vNewVal
>>>>>This.Parent.Width = this.Width + this.Parent.image1.Width + 2
>>>>>
>>>>>If I step through this code, the container resizes properly.
>>>>>
>>>>>However, without stepping through the code, the Width of the label does not reset when it is given a new value. It retains the width of the label in the class definition.
>>>>>
>>>>>I've tried putting This.Refresh and This.Parent.Refresh at various points in the method, but to no avail.
>>>>>
Gregory
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform