Codejock Calender Dialogs

Nutzung, Komponenten, .NET

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

Codejock Calender Dialogs

Beitrag von AUGE_OHR »

hi,

Code: Alles auswählen

::oCalCon   := CreateObject("Codejock.CalendarControl"+HX_VERSION(),,cLicense )
::oDialogs  := CreateObject("Codejock.CalendarDialogs"+HX_VERSION() )

::oDialogs:Calendar := ::oCalCon
::oDialogs:ShowNewEvent()
so würde es funktionieren und ich "sehe" damit den internen Dialog !!! \:D/
aber dann ... :banghead:

Code: Alles auswählen

::oOptions  := ::oCalCon:callMethod("Options") -> crash

dito.

::oCalCon   := ::oCalCon:dynamicCast( ActiveXObject() )
::oOptions  := ::oCalCon:callMethod("Options")  -> crash
hm ... :-k

Code: Alles auswählen

::oCalCon   := XbpActiveXControl() :new( ::drawingArea,, { 0, 30 }, { 652, 400 + 50 } )
::oCalCon:CLSID   := "Codejock.CalendarControl" + HX_VERSION()
::oCalCon:License := cLicense
::oCalCon:TabStop := .T.
::oCalCon:create()

::oOptions  := ::oCalCon:callMethod("Options") -> funktioniert
::oDialogs:Calendar := ::oCalCon ->crash
:angry4: ... irgendwas funktioniert da nicht ...

ich "denke" bei CreateObject() wird :SubClass im Gegensatz zu XbpActiveXControl() nicht verwendet ?
wie bekomme ich CreateObject() dazu bei der Method(e) "Options", welche mir ein Object zurück gibt, zu funktionieren ?

überlegung ...

Code: Alles auswählen

Super Class
         AutomationObject()
         // mittels
         oObj := oObj:dynamicCast( ActiveXObject() ) 
         // wird daraus 
         Sub Class
               ActiveXObject()
               // mittels
               oObj := oObj:???  // tja was ... ???
               // wird daraus 
               Sub Class
                      XbpActiveXControl() 
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: Codejock Calender Dialogs

Beitrag von AUGE_OHR »

hi,

ich habe es weiter probiert, aber mit Xbase++ geht es nicht :(

mir ist aber nun "klar" :idea: wieso es mit WinDev oder h... funktioniert : Es gibt eben nur

Code: Alles auswählen

CreateObject()
in der Win API

Das Xbase++ XbpActiveXControl() ist ja von Alaska "aufgebohrt" damit man Event "abfangen" kann,
aber nun ist es ist es nicht mehr "abwärts kompatible" d.h. ich kann kein " := " ( :setProperty() ) verwenden.

CreateObject() erzeugt ein AutomationObject() welches die SuperClass ist.
per :dynamicCast() kann ich nun die SubClass ActiveXObject() "hinzufügen"

XbpActiveXControl() ist nun wiederum eine SubClass von ActiveXObject()
und hat ja auch AutomationObject() als SuperClass.

btw. XbpActiveXControl() hat ja auch XbpWindow() als SuperClass. Vermutlich wegen der Presentation Parameter ... aber "braucht" man das ?

nun hat :dynamicCast() aber einen entscheidenden Nachteil
Hinweis: Nachdem ein AutomationObjekt in eine andere Klasse überführt wurde ist diese nicht länger mit dem COM/ActiveX Objekt verbunden
d.h. man darf erst "am Ende", nachdem man die Property und Methoden benutzt hat, die Events "abonnieren" mit :subscribeEvent()

Das geht mit dem NeroCOM Projekt durchaus, aber "blöde" ist es schon wenn man "keinen Zugriff" mehr auf die Property und Methode(n) hat.





Ich "denke" wie müssten "zurück" auf das ursprüngliche CreateObject() und der ganze Event Kram ( EVM Thread ? ) müsste "intern" geregelt werden.

Ein CreateObject() müsste wie in "anderen" Sprachen auch arbeiten und auch dann Property und Methode(n) zurück geben als wenn man ein Xbase++ XbpActiveXControl() benutzt. Beide Objecte müsste "gleichwertig" vom Type sein damit ein " := " funktioniert.

Ich könnte mir auch vorstellen das eine "schlanke" activeX Version "schneller" wäre als eine SubClass->SubClass als "Wrapper"

@Andreas : ich hätte das ganze Thema gerne noch auf die "Wunschliste"
gruss by OHR
Jimmy
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:

Re: Codejock Calender Dialogs

Beitrag von Jan »

Jimmy,

dann setze das bitte auf die Wunschliste. Andreas liest ja nicht jeden Thread hier, und erst recht kontrolliert wer nicht, ob da ein Wunsch für die Liste drin steht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Codejock Calender Dialogs

Beitrag von Martin Altmann »

Ganz abgesehen davon, dass dies aber auch gar nichts mit fehlenden Controls zu tun und somit auch nichts auf der Wunschliste zu suchen hat!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: Codejock Calender Dialogs

Beitrag von AUGE_OHR »

Martin Altmann hat geschrieben:Ganz abgesehen davon, dass dies aber auch gar nichts mit fehlenden Controls zu tun und somit auch nichts auf der Wunschliste zu suchen hat!
Naja ... solange solche "BUGs" (???) eine vernünftige Arbeit verhindern ...

es ist ja durchaus bekannt das man "nicht alle" OCX mit Xbase++ benutzen kann weil es ja immer noch "Beschränkungen" hat.
beim testen von etlichen OCX kann man dann die Property und Methode(n) nicht erreichen und bekommt nur lapidar "falscher Parameter" oder so ...

dabei "müsste" es laut VB Sample funktionieren und auch mit WinDev und h... hatte ich ja Erfolg.

Nun langsam "denke" ich zu begreifen "warum" sich der Unterschied zu anderen Sprachen ergibt.
Ich "denke" ein "funktionsfähiges" CreateObject() und ein "kompatibles" XbpActiveXControl()
würden die "Probleme" lösen und viele von den getesteten OCX würden dann auch funktionieren.

Dieser Thread hat mich nur an ein "offenes" Problem "erinnert" zu zeigt das wir (geschätzt) 50%
der OCX mit Xbase++ benutzen "könnten" und die restlichen 49,99% (noch) nicht.

Ich habe deshalb den Wunsch nach einem 99,9% Xbase++ activeX Schnittstelle in die Wunschliste gestellt.

p.s. Olaf870 benutzt für sein DotNetSample ja ebenfalls den XbpActiveXControl() Container ... vielleicht könnte man auch "dort" ein wenig "bohren" ?
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Codejock Calender Dialogs

Beitrag von Martin Altmann »

Jimmy,
ich habe ja nichts gegen Deinen Wunsch an sich!
Er hat nur in dem aktuellen Aufruf nichts zu suchen - das wäre ein grundlegender Eingriff (oder ggf. kompletter Redesign) der OCX-Anbindung und damit definitiv zu viel für das, was Steffen angeboten/abgefragt hat.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten