Kalenderfunktion

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Kalenderfunktion

Beitrag von Muecke »

Hallo,

ich wollte den Kalender in mein Fenster einbauen

Code: Alles auswählen

   ::oActKalend      := XbpActiveXControl():new( ::drawingArea, , {976,708}, {156,24}, { { XBP_PP_COMPOUNDNAME, "10.System Fett" } } )
   ::oActKalend:CLSID := "{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1}"
   ::oActKalend:TabStop := .T.

bekomme aber auf Fremdpc diese Meldung.

Code: Alles auswählen

Fehler Automation/6500
Beschreibung : Could not create ActiveX control
Operation : XBPACTIVEXCONTROL:CREATE
Thread ID : 1
Called from _KUNDPLAN:CREATE(590)
Called from KUPLAN:CREATE(204)
Auf meinem PC funkt dies.

Muss ich zusätzlich etwas installieren?

Gruss Thomas
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Thomas,

ich glaube das Teil heißt DTPicker.ocx, kommt mit aus VB. Das muß natürlich installiert sein, damit darauf von Deinem Programm aus zugegriffen werden kann.

Jan
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Jan,

danke für deine Antwort.

Das ist es, aber weisst Du auch wie ich dies auf Fremdpc installiere?

Gibt es da ein Programm?

Gruss Thomas
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Thomas.

Wenn Du AX-Controls benutzt, von denen Du nicht sicher weißt, ob sie auf dem Kundenrechner auch installiert sind, hilft ein Registry-Scan nach der CLSID aus dem Programm heraus, damit verhindert man den genannten Laufzeitfehler. Wenn die ID nicht gefunden wird, startet man im einfachsten Fall "REGSVR32" (\Windows\System32) mit dem Namen des OCX als Parameter per RunShell. Es geht auch komplizierter (und eleganter), aber in den meisten Fällen genügt das.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Ergänzung:

Wie man die Registry nach der Existenz eines Schlüsselwertes scannt, zeigt das "NETNAME"-Sample aus der X++-Installation. Die Class-IDs stehen in HKEY_CLASSES_ROOT.
Herzlich,
Tom
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Danke Tom,

Danach mit Runshell: :!:

RunShell( "DTPicker.ocx", "REGSVR32.exe" )

Gruss Thomas
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: Kalenderfunktion

Beitrag von AUGE_OHR »

hi,
Muecke hat geschrieben: ich wollte den Kalender in mein Fenster einbauen

Code: Alles auswählen

   ::oActKalend      := XbpActiveXControl():new( ::drawingArea, , {976,708}, {156,24}, { { XBP_PP_COMPOUNDNAME, "10.System Fett" } } )
   ::oActKalend:CLSID := "{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1}"
   ::oActKalend:TabStop := .T.
bekomme aber auf Fremdpc diese Meldung.
Man sollte einen Errorblock mit einbauen und sowas abfangen :

Code: Alles auswählen

   bOldError := ErrorBlock( {|e| BREAK(e)} )
   BEGIN SEQUENCE
   ...
       ::oActKalend      := XbpActiveXControl():new() ....
   ...
       ::oActKalend:create()
   ...
      RECOVER USING oError
      IF oError:subCode == 6500
         MsgBox( "Error creating ActiveX Control." + CRLF +;
                 "Please make sure activeX Componends" + CRLF +;
                 "are installed on your computer.",         ;
                 "Calendar Sample" )
         QUIT
      ENDIF
   END SEQUENCE
   ErrorBlock( bOldError )
gruss by OHR
Jimmy
p.s. bist du sicher das die CLSID stimmt (hab die nicht in meiner Registry)
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Jimmy,

ich finde dies bei mir so:


HKEY_CLASSES_ROOT\MSComCtl2.DTPicker\CLSID

unter diesem CLSID ist dan die Nummer:
{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1}

Wie soll ich jetzt den installieren?

regsvr32 dtpicker.ocx, so funkt es nicht.



Gruss Thomas
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Thomas.

Und wenn die Pfadangabe für die OCX-Datei eingebunden wird? Ich suche REGSVR32.EXE und mache dann im einfachsten Fall sowas:

Code: Alles auswählen

cRunPara := MyAppPath+"flpgrf.ocx" // Flipper Graphics
cRunReg := findfile("REGSVR32.EXE") // findfile ist selbstgeschrieben

runshell(cRunPara,cRunReg,.T.)
Herzlich,
Tom
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Tom,

das Funkt, Danke.

Jimmy, danke für Errorblock, hab ich natürlich bereits eingebaut. So ist es sauber und der Anwender kann selber entscheiden ob er will oder nicht.


Gruss Thomas :)
Antworten