Studio Controls for COM via ActivX einbinden?

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Hallo,

ich habe bisher mit ActivX noch nichts gemacht. kann man so etwas in Xbase++ einbinden: "Studio Controls for COM" http://www.dbi-tech.com/StudioControlsC ... reens.aspx

Gibt es ein Xbase - ActivX Tutorial?

Gruß
Markus
Gruß
Markus
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Lewi »

Ein xBase ActiceX-Tutorial?

Da ActiveX-Komponeten externe Tools oder Anwendungen sind, kann es von der Sache her schon kein (allgemeines) xBase-Tutorial geben. Allerdings gibt es bei Komponenten i.d.R. von Seiten der Anbieter eine Dokumentation bei der auch Beispiele für VB oder C++ enthalten sind.
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:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Tom »

Code: Alles auswählen

kann man so etwas in Xbase++ einbinden
Kann man. Eine Alternative ist die "Xtreme Suite" von Codejock:

www.codejock.com

Oder man macht es per Ownerdrawing selbst. Nach Durchquerung der - zugegeben nicht eben flachen - Lernkurve ist das m.E. die feinste Möglichkeit. Was da in den Beispielen gezeigt wird, habe ich. Und sogar noch schöner (und sehr leicht und verlässlich anzusteuern).
Herzlich,
Tom
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Gibt es zum Thema "Ownerdrawing" ein paar Beispiele? Ich habe nur das eine gefunden: OWNERDRW.prg
Gruß
Markus
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: Studio Controls for COM via ActivX einbinden?

Beitrag von Jan »

Da ich weiß das Tom sehr bescheiden und zurückhaltend ist: Es gibt einen Vortrag von ihm, wo er sehr schön schrittweise verschiedene Stufen des Ownerdrawings an einem Browse gezeigt hat. Das war vor 2 Jahren auf der Mitgliederversammlung in Isernhagen. Ich glaube da gibt es ein Video von, auf jeden Fall aber den Code.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied 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: Studio Controls for COM via ActivX einbinden?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Gibt es zum Thema "Ownerdrawing" ein paar Beispiele? Ich habe nur das eine gefunden: OWNERDRW.prg
suche mal bei den "native" Tools. Alle (!) Windows Controls können Ownerdraw bzw. Customdraw.

bei Ownerdraw geht es darum die beiden Windows Methoden o:measureItem und o:drawItem durch eigenen Xbase++ Code zu überschreiben.
siehe c:\ALASKA\XPPW32\Source\samples\basics\OWNERDRW\
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: Studio Controls for COM via ActivX einbinden?

Beitrag von AUGE_OHR »

satmax hat geschrieben:ich habe bisher mit ActivX noch nichts gemacht. kann man so etwas in Xbase++ einbinden: "Studio Controls for COM" http://www.dbi-tech.com/StudioControlsC ... reens.aspx
wie Tom schon sagte gibt es den Codejock Calender. Ich habe hier im Forum mal einen Thread drüber gemacht.
http://www.xbaseforum.de/viewtopic.php?f=41&t=5128
satmax hat geschrieben:Gibt es ein Xbase - ActivX Tutorial?
im Prinzip kann man solche Controls wie eine Xbase++ Class verwenden.
Das Problem ist meisten die Dokumentation der Methoden, Propertys und Events die nicht vorliegt.

Ich habe, per Ownerdraw, mir einen Outlook Xbase++ Clone gebaut. wenn man Listview (native) verwendet kann man auch ein Image als Hintergrund in einem Browse haben.
Ownerdraw_Calender.JPG
Ownerdraw_Calender.JPG (73.84 KiB) 16129 mal betrachtet
http://www.xbaseforum.de/viewtopic.php?f=62&t=5186
weitere Beispiele http://www.xbaseforum.de/viewtopic.php?f=23&t=5832
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: Studio Controls for COM via ActivX einbinden?

Beitrag von Jan »

AUGE_OHR hat geschrieben:Ich habe, per Ownerdraw, mir einen Outlook Xbase++ Clone gebaut. wenn man Listview (native) verwendet kann man auch ein Image als Hintergrund in einem Browse haben.
Jimmy,

kann es sein, das Du ein wenig zu viel Zeit hast und nicht ausgelastet bist? :D

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Studio Controls for COM via ActivX einbinden?

Beitrag von Jan »

Tom hat geschrieben:[Kann man. Eine Alternative ist die "Xtreme Suite" von Codejock:
Tom,

Welche Version benutzt Du? Die ActiveX?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied 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: Studio Controls for COM via ActivX einbinden?

Beitrag von AUGE_OHR »

Jan hat geschrieben:kann es sein, das Du ein wenig zu viel Zeit hast und nicht ausgelastet bist? :D
Das Demo hatte ich für die Devcon 2012 gebaut ... aber es wurde ja nicht mehr angenommen ( weil angeblich zu spät abgegeben )
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Wolfgang Ciriack »

Hallo Jan,
wenn dann die ActiveX Version. Ich benutze diese auch, aber nur noch einen kleinen Teil (Ribbonbar).
Ist jedoch nicht ganz trivial, durch die vielen verschachtelten Objecte durchzublicken, man muss sich einarbeiten.
Kalender habe ich mittlerweile (einfache Form) mit Ownerdrawing und Browses realisiert.
Viele Grüße
Wolfgang
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Jan hat geschrieben:Da ich weiß das Tom sehr bescheiden und zurückhaltend ist: Es gibt einen Vortrag von ihm, wo er sehr schön schrittweise verschiedene Stufen des Ownerdrawings an einem Browse gezeigt hat. Das war vor 2 Jahren auf der Mitgliederversammlung in Isernhagen. Ich glaube da gibt es ein Video von, auf jeden Fall aber den Code.

Jan
Das wäre für mich natürlich mal hochinteressant, TOM, kann man (ich) da irgendwie rankommen, Video und /oder Code?
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Tom hat geschrieben:

Code: Alles auswählen

kann man so etwas in Xbase++ einbinden
Kann man. Eine Alternative ist die "Xtreme Suite" von Codejock:

http://www.codejock.com

Oder man macht es per Ownerdrawing selbst. Nach Durchquerung der - zugegeben nicht eben flachen - Lernkurve ist das m.E. die feinste Möglichkeit. Was da in den Beispielen gezeigt wird, habe ich. Und sogar noch schöner (und sehr leicht und verlässlich anzusteuern).
Für mich würden die Studio Controls wesentlich besser passen, Stichwort Ressourcenplanung. Das Demo verspricht genau das was ich suche...
Gruß
Markus
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: Studio Controls for COM via ActivX einbinden?

Beitrag von Jan »

satmax hat geschrieben:Für mich würden die Studio Controls wesentlich besser passen, Stichwort Ressourcenplanung. Das Demo verspricht genau das was ich suche...
... aber der Preis. Das ist doch eine ganz andere Liga als Codejock.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Jan hat geschrieben:aber der Preis. Das ist doch eine ganz andere Liga als Codejock.
Jan
Ich finde der Preis ist meist sekundär, die (fast perfekte) Lösung ist wichtig. :)
Gruß
Markus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Wolfgang Ciriack »

Stichwort Ressourcenplanung
Ich weiss, dass Tom dieses in seiner Anwendung per Browse und Ownerdrawing realisiert hat.
Wenn man erst einmal einigermaßen verstanden hat, wie das Ownerdrawing funktioniert, kann man solche Sachen damit realisieren. Beim Ownerdrawing bist du bzw. deine eigene Funktion dafür verantwortlich, was im Moment, wenn eine Zelle gezeichnet werden muss, passiert. Du musst eben nur die Daten bereitstellen, dann kannst du Icons, grafische Elemente, Textzeilen etc. in dieser Zelle frei anordnen.
Ich setze mal Toms Einverständis vorraus und hänge hier die Beispiele seines Vortrages von vor einigen Jahren ran.
Dateianhänge
Beispiel.zip
(62.71 KiB) 408-mal heruntergeladen
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Wolfgang Ciriack »

Noch ein schönes Beispiel für ein Browse mit Ownerdrawing, in dem der eingegebene Suchtext hervorgeboben wird:
Dateianhänge
Highlight.zip
(12.08 KiB) 388-mal heruntergeladen
Viele Grüße
Wolfgang
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Danke, werde ich mir ich mal ansehen.
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Ich bin gerade dabei die ersten Schritte mit ActiveX zu unternehmen.

Ich habe das ctSchedule.ocx registriert und ein minimales Beispielprogramm erstellt:

Code: Alles auswählen

#pragma library( "ascom10.lib" )
PROCEDURE MAIN
   LOCAL oScheduler

   oScheduler := GetObject( NIL, "{CE02C22A-8AB8-4F58-9921-C57DE0E67678}" ) 

   IF NIL == oScheduler
      ? "Error"
      ? ComLastError()
      ? ComLastMessage()
   ELSE
     ? "OK"
     ? ComLastError()
     ? ComLastMessage()
   ENDIF

   WAIT

RETURN
Das Programm wird auch ausgeführt und oScheduler als Object of Class AutomationObject angelegt. Im Prinzip kann ich mit diesem Objekt aber nichts machen da es laut Debugger nur 5 Eigenschaften enthält:

Cargo (NIL)
Interface (5927304)
InterfaceName ("_DctSchedule")
License ("")
Server ("")

Wie komme ich da weiter? Muss da noch etwas initialisiert werden? GetObject() wird ja offensichtlich korrekt ausgeführt.
Gruß
Markus
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: Studio Controls for COM via ActivX einbinden?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Ich bin gerade dabei die ersten Schritte mit ActiveX zu unternehmen.
das merkt man ;)

nachdem du das OCX registriert hast solltest du den Formdesigner (XppFD.EXE) verwenden.
Menue / XbParts / ActiveX Control
jetzt bekommst du eine Liste und suchst dein OCX
unter den Eigenschaften mal nachsehen ob eine License ermittelt wurde !
zum Schluss Class Code generieren und damit dann rumspielen.
satmax hat geschrieben:Im Prinzip kann ich mit diesem Objekt aber nichts machen da es laut Debugger nur 5 Eigenschaften enthält:
Cargo (NIL)
Interface (5927304)
InterfaceName ("_DctSchedule")
License ("")
Server ("")
Cargo Xbase++
Interface ist das API Handle.
InterfaceName entspräche grob einem ClassName
License meistens bei kommerziellen Versionen.
Server bei Local leer
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Danke Jimmy, das ist jetzt mal ein Anfang, ich bekomme schon etwas auf dem Bildschirm... :wink:
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Naja, weit bin ich nicht gekommen.

Dank Jimmys Hilfe kann ich zumindest das leere Control anzeigen, kann aber zB. nicht auf die Properties zugreifen, Beispiel:

Auszug aus der Hilfe:

Code: Alles auswählen

ColumnWidth

Description
Returns/sets the width of the column.
Property type
Read-write property
Syntax
Visual Basic 
Public Property ColumnWidth( _
   ByVal nIndex As Integer _
) As Integer
 
Parameters
nIndex 
The 1-based index value of the column. 
Return Type
An Integer value.
Example
[Visual Basic and Access]

Me.ctSchedule.ColumnWidth(1) = 50

[Visual FoxPro]

thisform.ctSchedule.ColumnWidth(1) = 50
Ich dachte nun, ich kann ganz einfach auf so eine Eigenschaft zugreifen:

Code: Alles auswählen

PROCEDURE Main

   LOCAL nEvent, oXbp, mp1, mp2
   LOCAL oTest

   oTest:=NewForm():New():Create()

   oTest:ActiveXControl1:ColumnWidth[1] := 50  // Line 57 -> Fehler

Ich erhalte aber nur die Fehlermeldung XPPERROR.LOG:
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "c:\dev\DevSrc\Test ActiveX\sample.exe" Datum: 10.08.2014 17:23:19

Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows 7 06.02 Build 09200
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: ColumnWidth
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter nicht optional.
Fehlender Parameter in Aufruf
oError:filename : NIL
oError:genCode : NIL
oError:operation : ColumnWidth
oError:osCode : -2147352561
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------

Called from MAIN(57)



Nachtrag: lesend kann ich mit

x:=oTest:ActiveXControl1:ColumnWidth(1)

zugreifen.
Gruß
Markus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Wolfgang Ciriack »

oTest:ActiveXControl1:ColumnWidth[1]
vielleicht
oTest:ActiveXControl1:ColumnWidth(1)
Viele Grüße
Wolfgang
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von satmax »

Lesen schon:

x:=oTest:ActiveXControl1:ColumnWidth(1)

aber nicht zuweisen:

oTest:ActiveXControl1:ColumnWidth(1):=80
Gruß
Markus
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Studio Controls for COM via ActivX einbinden?

Beitrag von Wolfgang Ciriack »

Dann mal vielleicht:
oTest:ActiveXControl1:SetProperty("ColumnWidth",1,50)
Viele Grüße
Wolfgang
Antworten