Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Nutzung von ActiveX Steuerelementen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg
Autor Thema:  API - Nutzung von ActiveX Steuerelementen (2162 mal gelesen)
mafu
Mitglied
Student


Sehen Sie sich das Profil von mafu an!   Senden Sie eine Private Message an mafu  Schreiben Sie einen Gästebucheintrag für mafu

Beiträge: 18
Registriert: 15.10.2002

erstellt am: 26. Aug. 2005 15:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen!

Ich verzweifle schon seit einiger Zeit an folgendem Problem:

Ich möchte für eine Zusatzanwendung ein Treeview Steuerelement auf einem selbst erstellten Register im Feature Manager nutzen. Beim Testen in einem Solidworks Macro funktioniert die ganze Sache tadellos.

Versuch ich dagegen das Steuerelement aus einer Solidworks -Zusatzanwendungs dll heraus zu erzeugen, funktioniert das nur beim Einsatz der späten Bindung. Dann kann ich allerdings keine Events des Treeviews mehr abfangen.

Ist es überhaupt möglich, ein Activex Steuerelement mit Events aus einer Addin Dll heraus zu nutzen?

Bin für jegliche Hinweise dankbar.
Viele Grüße Mathias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

SLDW-FEM
Mitglied
Simulations-Ingenieur


Sehen Sie sich das Profil von SLDW-FEM an!   Senden Sie eine Private Message an SLDW-FEM  Schreiben Sie einen Gästebucheintrag für SLDW-FEM

Beiträge: 640
Registriert: 21.02.2005

Solidworks 2017+2019+20+22
SpaceClaim
Windows 11 64bit
HP-ZBook 32gbRAM NVIDIA

erstellt am: 26. Aug. 2005 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mafu 10 Unities + Antwort hilfreich

Wie erzeugst DU denn die DLL?
.NET oder VB6 oder anderer Compiler (ggf. Delphi, keine c-Syntax)

=> wenn möglich, Dein Macro mal mitschicken?

Ausserdem mal mit SW2006 testen, es wird ständig was verbessert

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mafu
Mitglied
Student


Sehen Sie sich das Profil von mafu an!   Senden Sie eine Private Message an mafu  Schreiben Sie einen Gästebucheintrag für mafu

Beiträge: 18
Registriert: 15.10.2002

erstellt am: 26. Aug. 2005 15:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


ActiveX_FMTab_TreeView_assy.zip

 
Hallo!

Sorry!
Ich benutze VB 6.0 und Solidworks 2004 SP3.
Ich nutze das Makro von der Solidworks Homepage.
http://www.solidworks.com/downloads/API/Downloads/00000/0300s/0303/ActiveX_FMTab_TreeView_assy.zip

Das Funktioniert auch. Benutze ich den identischen Quelltext aus der dll muss ich den Treeview als Object deklarieren, damit das klappt.

Ich kann hier bei uns an der Uni mal Solidworks 2005 probieren, 2006 haben wir glaube ich noch nicht.

Zur Zeit rufe ich aus der dll einfach eine VB Form auf. Es wäre aber schöner wenn ich den Treeview auch in den Feature Manger bekommen würde.

Viele Grüße Mathias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

PASCAM
Mitglied
Diplom Informatiker


Sehen Sie sich das Profil von PASCAM an!   Senden Sie eine Private Message an PASCAM  Schreiben Sie einen Gästebucheintrag für PASCAM

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 26. Aug. 2005 17:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mafu 10 Unities + Antwort hilfreich

Hallo Matthias,

das koennte auch an der Registry liegen. Welche Version ist dort registriert und welche hat Deine Dll vom Steuerelement.

SWXSolidWorks erzeugt ein Objekt anhand des Namens bzw. der GUID, also rein anhand der Registry. VB6 holt sich die Infos aber aus der TLB, also der Dll. Daher muss das zusammenpassen.

Ansonsten schick mal einen Beispielcode.

Gruss,

Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mafu
Mitglied
Student


Sehen Sie sich das Profil von mafu an!   Senden Sie eine Private Message an mafu  Schreiben Sie einen Gästebucheintrag für mafu

Beiträge: 18
Registriert: 15.10.2002

erstellt am: 26. Aug. 2005 18:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!
Ich habe mal unten liegenden Quelltext mitgeschickt. Der Funktioniert aus einem Macro wunderbar. Aus meiner Addin dll jedoch nur wenn ich beim Treeview Control die späte Bindung benutze. Mache ich das nicht, erhalte ich bei .GetControl eine Typenunverträglichkeit.
Der Fehler tritt bei allen Controls auf.

Das Problem ist das ich eigentlich mit Programmierung bisher nicht viel gemacht habe, bisher aber dennoch viel geschafft habe. Das ist die einzige Sache die bisher überhaupt nicht funktionieren will.

Vielen Dank für Eure Mühen.
Mahias

Code:
Public Sub Test()
Const IconSmall                     As String = "D:\Diplomarbeit\ActiveX_test\toolbar_small.bmp"

    Dim tvTreeCtrl As MSComctlLib.TreeView
    Dim swapp As SldWorks.SldWorks
    Dim idoc As SldWorks.ModelDoc2
  
    Dim pModViewMgr                     As SldWorks.ModelViewManager
    Dim swFeatMgrTabTop                 As SldWorks.FeatMgrView
    Dim swFeatMgrTabBtm                 As SldWorks.FeatMgrView
    Dim nActivePane                     As Long
    Dim nViewHwnd                       As Long
   
    Set swapp = GetObject(, "SldWorks.Application")
    Set idoc = swapp.ActiveDoc
   
    Set pModViewMgr = idoc.ModelViewManager
    Set swFeatMgrTabTop = pModViewMgr.CreateFeatureMgrControl2(IconSmall, "MSComctlLib.TreeCtrl", "", "TDE top tooltip", swFeatMgrPaneTop)
    Set tvTreeCtrl = swFeatMgrTabTop.GetControl
   
    tvTreeCtrl.Nodes.Add , , "Test", "Test"
   
    idoc.FeatureManagerSplitterPosition = 0.5
   
    nActivePane = swFeatMgrTabTop.ActivateView
End Sub

[Diese Nachricht wurde von mafu am 26. Aug. 2005 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mafu
Mitglied
Student


Sehen Sie sich das Profil von mafu an!   Senden Sie eine Private Message an mafu  Schreiben Sie einen Gästebucheintrag für mafu

Beiträge: 18
Registriert: 15.10.2002

erstellt am: 29. Aug. 2005 09:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Morgen!

Niemand eine Idee? Wenn jemand so etwas schon mal gemacht hat, wäre ein kurzer Hinweis was zu beachten ist nicht schlecht.

Habe mal parallel dem Solidworks API Support mein Problem geschickt, mal sehen was dabei rauskommt.

Viele Grüße Mathias

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carlhainz
Mitglied
Student


Sehen Sie sich das Profil von Carlhainz an!   Senden Sie eine Private Message an Carlhainz  Schreiben Sie einen Gästebucheintrag für Carlhainz

Beiträge: 12
Registriert: 18.07.2004

erstellt am: 31. Aug. 2005 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mafu 10 Unities + Antwort hilfreich

Morgen,
ich hab genau das gleiche Problem...
Mein Code sieht folgendermaßen aus.
Code:

Private Function SwAddin_ConnectToSW(ByVal ThisSW As Object, ByVal Cookie As Long) As Boolean

    Set swApp = ThisSW
    Set swModel = swApp.ActiveDoc()
    swCookie = Cookie
    swApp.SetAddinCallbackInfo App.hInstance, Me, swCookie
               
         
    If swModel Is Nothing Then
        MsgBox "Noch kein Doc offen"
    Else       
        'ActiveX-Steuerelemente laden
        If swModel.GetType() = swDocASSEMBLY Then   
            Set swFeatMgrView = swModelViewManager.CreateFeatureMgrControl2(iconPath, "TestProjekt.MyTreeView", "", "Testbaum", swFeatMgrPane_e.swFeatMgrPaneBottom)
                 
            'Strukturbaum laden
            If Not swFeatMgrView Is Nothing Then
               
                swFeatMgrView.ActivateView
                Set TreeViewCtrl = swFeatMgrView.GetControl()
                If Not TreeViewCtrl Is Nothing Then
                    swStatusBarPane.Text = "TreeView erfolgreich geladen..."
                    Call TreeViewCtrl.AddItem(, , "Root", "RootNode", NewItem)
                Else
                    MsgBox "TreeView nicht erfolgreich geladen..."
                End If
               
            End If
        Else
            MsgBox "Keine Bauteilezusammenstellung geöffnet"
        End If
    End If
   
    swStatusBarPane.Text = "AddIn successfully loaded..."
   
    SwAddin_ConnectToSW = True
End Function

Dazu sei allerdings zu sagen, dass ich ein eigenes ActiveX-Steuerelement geschrieben habe, das ein TreeView-Control enthält.
Die Varibale TreeViewCtrl ist global als Variant definiert.
Arbeitet man so, so wird das eigene ActiveX-Steuerelement in SolidWorks angezeigt. Das Problem mit den Events ist so aber noch nicht gelöst.

Ich hab mich dazu für einen etwas komplizierten Lösungsweg entschieden:

Ich habe eine zweites Klassenmodul geschrieben, das alle Events des interen TreeView Controls weiterleitet.

Diese Klasse kann man ohne weiteres instanziieren und dann dem eigenen Steuerelement, in dem das TreeView-Steuerelement enthalten ist zuweisen.

In dem eigenen Steuerelement müssen nun nur alle benötigten Events des TreeView-Steuerelements abgefangen und weitergeleitet werden.

Etwas kompliziert, aber es funktioniert.

Für Rückfragen steh ich gern zur Verfügung...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carlhainz
Mitglied
Student


Sehen Sie sich das Profil von Carlhainz an!   Senden Sie eine Private Message an Carlhainz  Schreiben Sie einen Gästebucheintrag für Carlhainz

Beiträge: 12
Registriert: 18.07.2004

erstellt am: 31. Aug. 2005 11:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mafu 10 Unities + Antwort hilfreich

Hi nochmal,
meine Probleme beginnen noch ein wenig später.
Mein TreeView wird ja tadellos angezeigt. Nun habe ich den Typ der TreeViewCtrl-Variable ausgelesen und von VB als Antwort erhalten, dass es sich um mein eigenes Steuerelement handelt... Soweit so gut.
Nun dachte ich mir, dass ich einfach eine weitere globale Variable anlegen, von genau diesem Typ und nachdem die Variable TreeViewCtrl einen Wert zugewiesen bekommen hat ich dann diesen Wert per:
Code:

Set MyTree = TreeViewCtrl


Der globalen Variablen zuweise.
Mache ich das so, so bekomme ich beim laden des AddIns in SolidWorks die Fehlermeldung, dass meine AddIn nicht korrekt geladen werden kann, da evtl. eine Zusatzanwendung oder Komponente fehle.
Ich weiß mir da einfach nicht zu helfen, weil ich nicht herausfinde an welcher Stelle etwas schief gelaufen sein könnte.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

VBSpawn
Mitglied
Programmierer


Sehen Sie sich das Profil von VBSpawn an!   Senden Sie eine Private Message an VBSpawn  Schreiben Sie einen Gästebucheintrag für VBSpawn

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 01. Sep. 2005 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mafu 10 Unities + Antwort hilfreich

Holla zusammen,

Versucht es mal indem Ihr eine Klasse hinzufügt
'Class1
Private WithEvents tvTreeCtrl As MSComctlLib.TreeView
Public Property Let xTree(mytree As MSComctlLib.TreeView)
  Set tvTreeCtrl = mytree
End Property

und anschliessend anstelle von:
Set tvTreeCtrl = swFeatMgrTabTop.GetControl
dies
(Private myClass as new Class1)
Set myClass.xTree = tvTreeCtrl

BTWBy the way (So nebenbei bemerkt): unter vb6 Projekteigenschaften Nicht verwendete ActiveX Steuerelemente entfernen NICHT aktivieren ...

Gruß
Micha

------------------
   

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz