Page 1 of 1

Class method

Posted: Thu Nov 02, 2006 4:50 pm
by pawelu
Antonio,

Is this possible to create class like this where ::ShowTest() method is call for get object ?

Thanks for help
Pawel

Code: Select all | Expand

Function ClassTest ()

   Local oTest := Nil

   oTest := Test () : New ()

Return .T.

Class Test

   Data oWnd
   Data oGet1
   Data cGet1 Init Space (10)

   Method New ()
   Method ReadTest ()
   Method ShowTest ()

EndClass

Method New () Class Test

   Define Window ::oWnd Title 'Class Test'
   @ 10, 10 Button 'Ok' Size 60, 20 Pixel Action ::ReadTest ()
   Activate Window ::oWnd

Return Self

Method ReadTest () Class Test

   @ 40, 10 Get ::oGet1 Var ::cGet1 Size 100, 20 Pixel On Change ::ShowTest () Of ::oWnd // this generate error message not found TGET:SHOWTEST
   @ 70, 10 Button 'Ok' Size 60, 20 Pixel Action MsgInfo (Str (::oGet1 : nPos))

Return .T.

Method ShowTest () Class Test

   MsgInfo (Str (::oGet1 : nPos))

Return .T.

Posted: Mon Nov 06, 2006 7:41 am
by Carles
Hello,

Can you try

Code: Select all | Expand

...
::oGet1:bChange := {|| ::ShowTest() }
...


Regards.

Posted: Mon Nov 06, 2006 10:42 am
by Antonio Linares
Pawel,

Besides Carles solution, you may do:

Code: Select all | Expand

Method ReadTest () Class Test 
   
   local oThis := Self

   @ 40, 10 Get ::oGet1 Var ::cGet1 Size 100, 20 Pixel On Change oThis:ShowTest () Of ::oWnd
   @ 70, 10 Button 'Ok' Size 60, 20 Pixel Action MsgInfo (Str (::oGet1 : nPos))

Return .T.