per Macro Class mit eigener LIB

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

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

per Macro Class mit eigener LIB

Beitrag von AUGE_OHR »

hi,

ich möchte meine eigenen DXE Function mit o:classDescribe() untersuchen.

wenn ich die Class "hard-codiere", also DXE_Listview(), dann funktioniert es.
wenn ich es über ein Macro mache findet er die Class nicht ... wieso ?

Code: Alles auswählen

#PRAGMA LIBRARY( "DXE.LIB")
// need for XbpNoteBook() / XbpWizard()
//
#PRAGMA LIBRARY( "XppUi3.LIB")

PROCEDURE MAIN(cXbPart)
LOCAL oError, bSaveError,oXbPart
DEFAULT cXbPart TO "DXE_ListView"

   bSaveError := ErrorBlock()
   ErrorBlock( {|e| Break(e)} )
   BEGIN SEQUENCE
// das funktioniert
//    oXbPart := DXE_Listview():new( AppDesktop() ,, {0,0}, {640,480})

// das geht mit allen XbParts ( die nicht MsComCtl.OCX benötigen ? )
*    oXbPart := &cXbPart():new( AppDesktop() )
     oXbPart := &cXbPart():new( AppDesktop(),, {0,0}, {640,480} )

// undokumentierte Class in XppUi3.LIB funktioniert auch aber nicht als Macro
//    oXbPart := XbpNoteBook():New( AppDesktop(),, {0,0}, {640,480})
//    oXbPart := XbpWizard():new( AppDesktop(),, {0,0}, {640,480} )
//    oXbPart := XbpWizardPage():new( AppDesktop() ,, {0,0}, {640,480} )

// not need to use o:classDescribe()
*     oXbPart:create()

      InspectMember( oXbPart )
      InspectMethod( oXbPart )

   RECOVER USING oError
      ErrorBlock( bSaveError )
      Msgbox("Class "+cXbPart+" not found","Error")
   END SEQUENCE
   ErrorBlock( bSaveError )
was kann man da noch machen ?
Dateianhänge
WHAT_XB.ZIP
Syntax : What_XB.EXE <XbPart>
Sample : What_XB.EXE XbpTreeview
(22.21 KiB) 138-mal heruntergeladen
gruss by OHR
Jimmy
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: per Macro Class mit eigener LIB

Beitrag von AUGE_OHR »

so für die DXE.LIB habe ich das Problem gelöst : eine neues Modul DXE_INIT.PRG

Code: Alles auswählen

FUNCTION DXEINIT()
RETURN .T.
das neue Modul hab ich in die LIB gelinkt und muss in meinem Test.PRG nur noch

Code: Alles auswählen

PROCEDURE MAIN(cXbPart)
   // das lädt die DXE.DLL
   DXE_INIT()
   // jetzt kann ich auch auf die DXE Classen zugreifen
   oXbPart := &cXbPart():new()
... aber auf die undokumentierten Classen, wie XbpNoteBook(), kann ich immer noch nicht per Makro zugreifen.

Frage : wie bekomme ich die XppUi3.DLL "geladen" ?
gruss by OHR
Jimmy
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: per Macro Class mit eigener LIB

Beitrag von AUGE_OHR »

hm ... ich habe das bei Roger gefunden

Code: Alles auswählen

IF !IsFunction("XbpProgressBar")
  DllLoad('xbppack2.dll')
ENDIF
::progressObject := &('XbpProgressBar()')
::progressObject := ::progressObject:New( ::progressStaticObject,, {0,0}, ::progressStaticObject:currentSize() )
::progressObject:UseVisualStyle := .t.
::progressObject:Create()
...
gruss by OHR
Jimmy
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: per Macro Class mit eigener LIB

Beitrag von AUGE_OHR »

YUP =D>
wenn ich mit

Code: Alles auswählen

DllLoad('XppUi3.dll')
die DLL lade hab ich auch auf die undokumentierten Classen Zugriff :D

mehr dazu in der Wissensbasis http://www.xbaseforum.de/viewtopic.php?f=16&t=8790
gruss by OHR
Jimmy
Antworten