:actitivate := { || ::terminate() } [erledigt]

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

:actitivate := { || ::terminate() } [erledigt]

Beitrag von AUGE_OHR »

hi,

ich habe das "Problem" mit :: (self) das ich die "Class" meine und nicht das XbPart

Code: Alles auswählen

CLASS MyClass FROM Thread
PROTECTED:
   VAR terminated

EXPORTED:
   METHOD CREATE()
   METHOD terminate
ENDCLASS

METHOD MyClass:CREATE(oParent, oOwner, aPos, aSize, aPP, lVisible)
...
   ::oPbStop:actitivate := { |uNIL1, uNIL2, oSelf| ::terminate() }
...
RETURN self

METHOD MyClass:terminate()
RETURN ( ::terminated := .T. )
er meint nun ( zu Recht) das ::terminate() eine Methode von XbpPushbutton seit die es nicht gibt ...

wie also "sage" ich ihm das ich die Methode von MyClass "meine" den "MyClass:terminate()" kennt er auch nicht.
Zuletzt geändert von AUGE_OHR am Mo, 07. Jun 2010 12:31, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: :actitivate := { || ::terminate() }

Beitrag von brandelh »

Hi,

erstelle eine iVar oder local der du SELF zuweist.
Diese verwendest du im Codeblock
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: :actitivate := { || ::terminate() }

Beitrag von Herbert »

Nenn das Ding CLASS VAR, so definierst du zwingend eine Klassenvariable. VAR alleine ist per Definition eine Instanzvariable.

Hmm, oder hats mit der Ähnlichkeit der Namen zu tun?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: :actitivate := { || ::terminate() }

Beitrag von brandelh »

Code: Alles auswählen

 ::oPbStop:actitivate := { |uNIL1, uNIL2, oSelf| ::terminate() }
wobei meiner Meinung nach hier :: eindeutig auf die Methode verweisen müsste in der dieser codeblock erzeugt wird, denn
oSelf ist ja das Objekt das den Codeblock aufruft und oSelf # :: (self) ... so rufe ich auch meine Fenstermethoden auf.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: :actitivate := { || ::terminate() }

Beitrag von AUGE_OHR »

brandelh hat geschrieben:

Code: Alles auswählen

 ::oPbStop:actitivate := { |uNIL1, uNIL2, oSelf| ::terminate() }
wobei meiner Meinung nach hier :: eindeutig auf die Methode verweisen müsste in der dieser codeblock erzeugt wird...
Mist angry9: ... ich habe die Lösung VOR [-X dem original Problem gepostet ...

Code: Alles auswählen

 ::oPbStop:actitivate := { |uNIL1, uNIL2, self| ::terminate() }
FEHLERPROTOKOLL von "D:\ALASKA\SLOT\SLOT.EXE" Datum: 07.06.10 11:45:49

Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 3
-----------------------------------------------------------------------
oError:args :
-> VALTYPE: O CLASS: XbpPushButton
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Methode ist für dieses Objekt unbekannt
oError:filename :
oError:genCode : 23
oError:operation : terminate
oError:osCode : 0
oError:severity : 2
oError:subCode : 2220
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
-----------------------------------------------------------------------
CALLSTACK:
-----------------------------------------------------------------------
Aufgerufen von (B)CLASSBROWSE:CREATE(376)
Aufgerufen von XBPPUSHBUTTON:HANDLEEVENT(968)
Aufgerufen von MAIN(395)
dieser Fehler entsteht wenn man aus der Hilfe die Parameter |uNIL1, uNIL2, self| per copy/paste übernommen hat.
Damit wird das ::terminate() auf das self bezogen.

wenn ich es aber in |uNIL1, uNIL2, oSelf| ändere ist oSelf der XbpPushbutton und self ist meine Class.

Das war Hubert sagt ist also völlig richtig und ich hätte, statt der Lösung, das Probem posten sollen...
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: :actitivate := { || ::terminate() } [erledigt]

Beitrag von brandelh »

Hi,

so etwas ähnliches habe ich auch schon mal geschrieben, ich nutze übrigens immer oXbp als 3. Parameter. Dass es Beispiele gibt in denen Alaska self als Variablennamen verwendet, ist allerdings schon sehr unglücklich (freundlich ausgedrückt) ;-)
Gruß
Hubert
Antworten