Code: Alles auswählen
CLASS MapBig FROM XbpDialog
EXPORTED:
* Enthaltene Kontrollelemente
VAR oAXControl
VAR nToolbarHigh
VAR oAnzeig
METHOD init
METHOD create
ENDCLASS
******************************************************************************
* Formular initialisieren
******************************************************************************
METHOD MapBig:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
LOCAL aPP1 := { { XBP_PP_FGCLR , GRA_CLR_BLUE }, ;
{ XBP_PP_COMPOUNDNAME, FONT_DEFFIXED_MEDIUM+FONT_STYLE_BOLD } }
DEFAULT oParent TO AppDesktop(), ;
aPos TO { 0, 0}, ;
aSize TO {1024,786}, ;
lVisible TO .F.
DEFAULT aPP TO {}
AAdd ( aPP, { XBP_PP_COMPOUNDNAME, "8.Arial" } )
::XbpDialog:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpDialog:taskList := .T.
::XbpDialog:title := "Xbase++ activex MapPoint"
* ::XbpDialog:resize := {| aOldSize, aNewSize, oSelf | MapResize(aOldSize, aNewSize, oSelf) }
::nToolbarHigh := 30
::oAXControl := XbpActiveXControl():new( ::drawingArea, , {4,4},;
{aSize[1]-108,aSize[2]-::nToolbarHigh-8} )
::oAXControl:CLSID := "{8F78D7FC-BAE4-46A4-A79A-052356AB3DD4}"
::oAXControl:License := "Mappoint Control 9.0 Runtime License"
::oAXControl:TabStop := .T.
::oAnzeig := XbpStatic():new( ::drawingArea, , {aSize[1]-100,4}, {150,128}, aPP1 )
::oAnzeig:caption := "%"
::oAnzeig:clipSiblings := .T.
::oAnzeig:options := XBPSTATIC_TEXT_CENTER + ;
XBPSTATIC_TEXT_WORDBREAK
RETURN self
METHOD MapBig:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
::XbpDialog:create( oParent, oOwner, aPos, aSize, aPP, lVisible )
bOldError := ERRORBLOCK({| e | BREAK(e)})
BEGIN SEQUENCE
::oAXControl:create()
RECOVER USING oError
IF oError:subCode == 6500
MsgBox("Error creating ActiveX Control."+CRLF+;
"Please make sure M$ Mappoint Control Componends"+CRLF+;
"MappointControl.OCX and Runtime are installed on your computer.",;
"MAP Control")
::oAXControl := NIL
ENDIF
END SEQUENCE
ERRORBLOCK(bOldError)
::oAnzeig:create()
RETURN self
PROCEDURE MapResize(aOldSize, aNewSize, oSelf)
LOCAL aSize
IF aOldSize[1] == 0 .AND. aOldSize[2] == 0 // is miminzed
aOldSize := aNewSize //
RETURN //
ELSEIF aNewSize[1] == 0 .OR. aNewSize[2] == 0 // now mnimize it
RETURN //
ELSEIF aNewSize[1] == aOldSize[1] .AND. ; // same Size
aNewSize[2] == aOldSize[2] // do nothing
RETURN
ENDIF
aSize := aNewSize
oSelf:hide()
oSelf:setSize(aSize)
oSelf:oAXControl:setPosAndSize({4,4},{aSize[1]-8,aSize[2]-::nToolbarHigh-8})
oSelf:Show()
RETURN
Das activeX ist für "Vollbild" gedacht :setFrameState( XBPDLG_FRAMESTAT_MAXIMIZED )
und sollte als seperater Fenster laufen welches aus der eigentlichen Xbase++ Application
aus gestartet wird.
Die Methoden dazu sollen nun in den einzelnen Threads erläutert werden