Seite 1 von 1
INLINE CLASS METHOD
Verfasst: Do, 30. Mär 2017 4:44
von AUGE_OHR
hi,
ich sehe mir gerade einen Source von Pablo an und bin am überlegen "warum" er es "so" schreibt
Code: Alles auswählen
INLINE METHOD SetWordWrap(lOnOff,hDC)
return ::mc__SetWordWrap(::hRtf,lOnOff,hDC)
// ---------------------------------------------------------------------------------
INLINE CLASS METHOD mc__SetWordWrap(hRtf,lOnOff,hDC)
local hDCScreen := NIL
if Empty(hRtf) ; return NIL ; end
if Empty(hDC)
hDCScreen := @user32:GetDC(0)
end
@user32:SendMessageA(hRtf,EM_SETTARGETDEVICE,__vdef( hDC, hDCScreen ),iif( Empty(lOnOff),0x7FFFFFFF,0) )
if hDCScreen != NIL
@user32:ReleaseDC( 0 , hDCScreen )
end
return NIL
was hat eine "INLINE CLASS METHOD" für ein Vorteil ?
Re: INLINE CLASS METHOD
Verfasst: Do, 30. Mär 2017 6:57
von brandelh
KURZE Methoden können so direkt in der CLAS Definition stehen, ob das wirklich übersichtlicher ist muss jeder selbst entscheiden.
Ich z.B. markiere die Methoden im CLAS Bereich gerne und sortiere nach Namen, das ginge dann nicht mehr !
Re: INLINE CLASS METHOD
Verfasst: Di, 04. Apr 2017 3:33
von AUGE_OHR
habe von Pablo eine Antwort bekommen
I think I used those methods also without an xbp in one or more projects so put inside class methods to put all together inside something like a namespace
hm ... wie ist das jetzt zu verstehen
Re: INLINE CLASS METHOD
Verfasst: Di, 04. Apr 2017 8:45
von brandelh
geht deine Frage nun auf Bezug zu "INLINE" (das hatte ich angenommen, bei meiner Antwort) oder zu "CLASS METHOD" ?
Eine
CLASS METHOD ist einmalig für alle abgeleiteten Klassen, also alle nutzen die
Gleiche nicht eine Ableitung davon wie bei einer normalen Methode.
Wenn z.b. Eine STATIC immer genau einmal in allen verwendeten Objekten sein soll, dann legt man diese in einer CLASS METHOD oder als CLASS VAR an.
Re: INLINE CLASS METHOD
Verfasst: Mi, 05. Apr 2017 3:23
von AUGE_OHR
brandelh hat geschrieben:geht deine Frage nun auf Bezug zu "INLINE" (das hatte ich angenommen, bei meiner Antwort) oder zu "CLASS METHOD" ?
im Grunde die gesamte Syntax wie Pablo verwendet hat
Code: Alles auswählen
INLINE METHOD SetWordWrap(lOnOff,hDC)
return ::mc__SetWordWrap(::hRtf,lOnOff,hDC)
// ---------------------------------------------------------------------------------
INLINE CLASS METHOD mc__SetWordWrap(hRtf,lOnOff,hDC)
es wird von der (Inline) Method direkt auch die (Inline) CLASS Method "umgeleitet" ...
brandelh hat geschrieben:Eine
CLASS METHOD ist einmalig für alle abgeleiteten Klassen, also alle nutzen die
Gleiche nicht eine Ableitung davon wie bei einer normalen Methode.
Wenn z.b. Eine STATIC immer genau einmal in allen verwendeten Objekten sein soll, dann legt man diese in einer CLASS METHOD oder als CLASS VAR an.
hm ... Ja ...
ich kannte es bislang nur als
Code: Alles auswählen
INLINE CLASS METHOD initclass()
local e,hDC
if ot4xb() < OT4XB_MIN_VER
e := Error():New()
e:severity := 2
e:description := cPrintf(,"xbp_rtf require ot4xb [%s] or higher.\r\n Current is %s", OT4XB_MIN_VER, ot4xb())
Eval(ErrorBlock(),e)
end
@comctl32:InitCommonControlsEx({8,ICC_STANDARD_CLASSES})
_fp_SendMessageA_ := nGetProcAddress("user32","SendMessageA")
return Self
was am Anfang meiner native Controls steht.