Extensions
Posted: Thu Jan 30, 2020 10:24 am
In VO habe ich bei den internen Klassen öfter Methoden hinzugefügt, z.B:
In X# geht das ja nicht mehr, daher habe ich es mit Extensions versucht, damit ich die SLEs nicht von einer anderen Klasse ableiten muss:
Allerdings mag der Compiler den Zugriff auf SELF:Handle() und SELF:TextValue nicht. Kann man das lösen, ohne eine eigene Klasse MyEdit darüberzulegen und alle SLEs neu abzuleiten?
Code: Select all
METHOD PostFocus() CLASS Control
PostMessage( GetParent(SELF:Handle()) , WM_NextDlgCtl , DWORD( _CAST , SELF:Handle() ) , 1L )
IF IsInstanceOf(SELF,#SingleLineEdit)
PostMessage(SELF:Handle(), EM_SETSEL, 0, LONG(_CAST,SLen(RTrim(SELF:TextValue))))
PostMessage(SELF:Handle(), EM_SCROLLCARET, 0, 0L )
ELSEIF IsInstanceOf(SELF,#MultiLineEdit)
PostMessage(SELF:Handle(), EM_SETSEL, 0, 0L )
PostMessage(SELF:Handle(), EM_SCROLLCARET, 0, 0L )
ENDIF
RETURN NIL
Code: Select all
CLASS EditExtensions
METHOD PostFocus()
PostMessage( GetParent(SELF:Handle()) , WM_NextDlgCtl , DWORD( _CAST , SELF:Handle() ) , 1L )
IF IsInstanceOf(SELF,#SingleLineEdit)
PostMessage(SELF:Handle(), EM_SETSEL, 0, LONG(_CAST,SLen(RTrim(SELF:TextValue))))
PostMessage(SELF:Handle(), EM_SCROLLCARET, 0, 0L )
ELSEIF IsInstanceOf(SELF,#MultiLineEdit)
PostMessage(SELF:Handle(), EM_SETSEL, 0, 0L )
PostMessage(SELF:Handle(), EM_SCROLLCARET, 0, 0L )
ENDIF
RETURN NIL
END CLASS