[Gambas-user] gambas and components
Bruce Bruen
bbruen at ...2308...
Mon Mar 19 13:19:52 CET 2012
On Mon, 2012-03-19 at 22:42 +1030, GMail wrote:
> On Mon, 2012-03-19 at 11:43 +0100, Karl Reinl wrote:
> > Salut,
> >
> > my question is for gambas2 and later for gambas3
> >
> > I have an app, which uses gambas (home made) components.
> >
> > What does these components know about the app.
> >
> > What I'm looking for is, how can I call a Function in the app,
> > out from the component, to report what has be done.
> >
> > If I try 'Form.Function()', I get 'unknown Symbol' error
> >
> > I know I can use the disk for passing something backwards, but I would
> > first ask if there is a way.
> Karl,
> I don't know whether this will help in your case but there is a way to
> do this ... for examples where the component class is inherited by an
> application class.
>
> Due to the virtual dispatch used by gambas, the actual method called
> will be the inherited method.
>
> So (for general readers) if you consider a component containing a base
> class "Fred" that is inherited by a class in the main application, say
> "SonOfFred", then when some "local" call in Fred, for example
> Fred.Describe, if this method is also provided in SonOfFred then the
> actual method, SonOfFred.Describe is invoked.
>
> But in this case, there is a trick needed in gambas 3. You need to
> provide a "stub" method in the base class, to stop the IDE/compiler
> complaining. Let me expand. If SonOfFred has a method "Decode" that you
> wish to be able to be called (or in fact, invoked by the base class in
> some way,) then you need to create a stub method in Fred. I see this as
> the base class defining a method that must be overridden, IOW a sort of
> virtual method. Mainly I implement the stub to raise an error if it is
> invoked, i.e. in Fred we have:
>
> Public Sub Decode()
> Error.Raise("Decode not overridden correctly")
> End
>
> In your case though (assuming that by "Form" you mean the native gambas
> "Form" class), this will not work. The only quick answer I can think of
> is to use an event in the component that is going to (hopefully) be
> handled adequately in the application. Bit of a lottery though.
>
> Or perhaps I haven't quite got your central issue here?
>
> Bruce
>
On rereading what I just said, I think I wrote a "when you have a
hammer, everything looks like a nail" answer.
Send more details on what your problem/goal is.
B
More information about the User
mailing list