1st Step

Rund um MS-MapPoint

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

1st Step

Beitrag von AUGE_OHR »

Hier zunächst die Form vom XppFD.EXE

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
wie man sieht gibt es hier nur das activeX und ein XbpStatic wo ich was anzeige.

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