INLINE CLASS METHOD

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

INLINE CLASS METHOD

Beitrag 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 ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: INLINE CLASS METHOD

Beitrag 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 !
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: INLINE CLASS METHOD

Beitrag 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 :?:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: INLINE CLASS METHOD

Beitrag 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.
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: INLINE CLASS METHOD

Beitrag 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.
gruss by OHR
Jimmy
Antworten