Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Is my Class going out of scope - How to fix?
Message
From
03/12/2006 02:19:47
 
 
To
02/12/2006 16:36:30
Donald Lowrey
Data Technology Corporation
Las Vegas, Nevada, United States
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Miscellaneous
Thread ID:
01174404
Message ID:
01174448
Views:
7
>Good afternoon
>
>I have two class definintions in the same program file, one of which is a timer. When the timer event fires, it calls a method in the first class, which fails. VFP complains it cannot find the called method of a public class, created from an exe ("Object oObjTestCom Not found").
>
>When oObjTestCom is created from the prg file, everything works perfectly.
>
>oObjTestCom = CREATEOBJECT("MyTestCom")   && Everything is ducky, Life is good.
>
>
>But, when compiled into an exe named "MyComExe" and called like this:
>
>oObjTestCom = CREATEOBJECT("MyComExe.MyTestCom")  && Problem. Get coffee refill.
>
>The Object is created, Proc1, Proc2 and ProcCreateTimer all work.
>BUT, when the oMyTimer event fires, VFP errors, complaining it
>cannot find oObjTestCom.
>
>The code below is abbreviated, and I am hoping that someone will be able to spot the problem straight away. Thanks for taking the time to look.
>
>Thanks !
>Don Lowrey
>

This global programming is not very good.

Put the object reference into the timer object.

>
>File MyTestCom.prg has this (psuedo) code:
>
>Define MyTestCom AS Custom OlePublic
>Procedure Init
>  This.CreateTimer
>EndProc
>Proc1..does stuff..EndProc
>Proc2..does other stuff..EndProc
>Procedure CreateTimer
>  * Tried variations with and without declaring PUBLIC oMyTimer

  oMyTimer = CREATEOBJECT("MyTimer",m.oObjTestCom)

>EndProc
>EndDefine
>
>Define Class MyTimer As Timer  && with and without OlePublic
>  Set Enabled .t. and Interval to an int val, such as 30000

   oCom = .NULL.

   PROCEDURE Init(oCom)
     this.oCom = m.oCom

>  Procedure Timer
    this.oCom.Proc2

>  EndProc
>EndDefine
>
>
>Notes: When running from the executable:
>a. We know the class MyTimer gets created because the Timer event fires.
>b. However, from the VFP Object Browser, only the MyTestCom class is shown.
>c. In the DeBug window, oObjTestCom is shown as an object, but the Methods are not exposed. Also oMyTimer is not shown.
>d. We know the exe is running, because it is shown in the Task Manager, Processes Tab.
>*
Previous
Reply
Map
View

Click here to load this message in the networking platform