Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Place of DODEFAULT()
Message
De
05/08/2014 21:27:29
 
 
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:
01605192
Message ID:
01605219
Vues:
41
>>>>>>>I have a control class bases on the container. The hierarchy of the classes is as following:
>>>>>>>Container - VFP class
>>>>>>>MyBaseClass - based on VFP Container
>>>>>>>MySpecificClass - based on MyBaseClass
>>>>>>>
>>>>>>>Now I need to change the size of the MySpecificClass (bases on some semaphore flag) so that this MySpecificClass is wider and the textbox inside of this class is wider. So I need to add the code to the INIT method of MySpecificClass, something like the following:
>>>>>>>
>>>>>>>
>>>>>>>if file("my_semaphore")
>>>>>>>   this.width = this.width + 50
>>>>>>>   this.txt_box.width = this.txt_box.width + 50
>>>>>>>endif
>>>>>>>
>>>>>>>
>>>>>>>But of course I want the code in the MyBaseClass INIT to be fired. For example, would it correct the following?
>>>>>>>
>>>>>>>
>>>>>>>dodefault()
>>>>>>>if file("my_semaphore")
>>>>>>>   this.width = this.width + 50
>>>>>>>   this.txt_box.width = this.txt_box.width + 50
>>>>>>>endif
>>>>>>>
>>>>>>>
>>>>>>>And should dodefault() be before or after my "specific" code? Or it does not matter at all?
>>>>>>>
>>>>>>>TIA
>>>>>>
>>>>>>It depends what you want :-)
>>>>>>Most of the cases it didn't matter where it is placed,
>>>>>>but IF you want to cancel the INIT and have logic for this in your base class method you should carefully decide where to place this method:
>>>>>>Sometimes you need this:
>>>>>>
>>>>>>lbReturn = DODEFAULT()
>>>>>>** "specific" code and maybe change lbReturn
>>>>>>RETURN lbReturn
>>>>>>
>>>>>>
>>>>>>
>>>>>>other time you can do this:
>>>>>>
>>>>>>** "specific" code
>>>>>>RETURN DODEFAULT()
>>>>>>
>>>>>
>>>>>Interesting. I have never seen the code "RETURN DODEFAULT()" but it makes sense. My base class has RETURN .F. in its INIT (in case of cancel).
>>>>>
>>>>>So now I am wondering, if I were to have the code as I put in my initial example (DODEFAULT() first, and then the custom code) and the code in the DODEFAULT() return .F., would the control still initialize?
>>>>
>>>>That's why I usually
>>>>
>>>>IF NOT DODEFAULT()
>>>> RETURN .F.
>>>>ENDIF
>>>>
>>>>before I add custom code.
>>>
>>>Makes sense. Thank you.
>>
>>Sometimes you want default code to be executed after the custom code.
>
>You know; after further testing I found that my custom code should go before the DODEFAULT(). Good thing I tested it before shipping update to the customer :)

http://www.troll.me/2011/05/15/the-most-interesting-man-in-the-world/i-dont-always-test-my-code-but-when-i-do-i-do-it-in-production/
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform