Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ActiveX-Blattschuss (https://www.delphipraxis.net/86325-activex-blattschuss.html)

Lenth 12. Feb 2007 18:01


ActiveX-Blattschuss
 
Hallo,

ich hoffe es gibt jetzt kein Doppelposting, weil mein Browser irgenwie spinnt.

Ich glaube ich habe ein wirklich unangenehmes ActiveX-Problem. Nun gut, mit der Installation von ActiveX-Komponenten klappt es eigenlich unter Developer Studio 2006 ganz gut:

Package erzeugen, umbenenen und speichern unter...
den Wizard über Komponenten, Komponenten importieren aufrufen
den Anweisungen folgen...ActiveY als Palettenseite wählen...dem Projekt "Packagename" hinzufügen
Package aktivieren, compilieren und installieren

...und schon finden sich in der Tool-Palette die ersehnten visuellen Komponenten von Acrobat, Windows Media Player, etc.

Nun wurde es ernst und das Treibermodul meines Messinstrumentes kam dran: Die Palettenseite ActiveX bekam keinen Zuwachs. Stattdessen konnte ich 5 Warnungen bewundern:

[Pascal Warnung] PolytecActiveX.dpk(37): W1033 Die Unit 'POLYMIOBSERVERLib_TLB' wurde implizit in Package 'PolytecActiveX' importiert
[Pascal Warnung] PolytecActiveX.dpk(37): W1033 Die Unit 'PSSWRAPPERLib_TLB' wurde implizit in Package 'PolytecActiveX' importiert
[Pascal Warnung] PolytecActiveX.dpk(37): W1033 Die Unit 'PolyMyInstrumentInterfacesLib_TLB' wurde implizit in Package 'PolytecActiveX' importiert
[Pascal Warnung] PolytecActiveX.dpk(37): W1033 Die Unit 'PolyPSSInterfacesLib_TLB' wurde implizit in Package 'PolytecActiveX' importiert
[Pascal Warnung] PolytecActiveX.dpk(37): W1033 Die Unit 'PolytecSpectrumInSPCFormat_TLB' wurde implizit in Package 'PolytecActiveX' importiert

Auch nach mehrfachen Wiederholen der gleiche Sch... :wall:

Das ActiveX-Control des Messgerätes wurde mit Visual Basic 6 erstellt. Es lässt sich über VBA (z. B. in Word) oder über das MS-Visual Studio korrekt verwenden. Ich weiß nicht mehr was ich tun soll...



Grüße

Christoph

shmia 12. Feb 2007 18:20

Re: ActiveX-Blattschuss
 
Zitat:

PolytecActiveX.dpk(37): W1033 Die Unit 'POLYMIOBSERVERLib_TLB' wurde implizit in Package 'PolytecActiveX' importiert
Diese Warnung kannst du getrost ignorieren.
Wenn die Warnung verschwinden soll, dann musst du nur die Unit POLYMIOBSERVERLib_TLB von Hand zum Package PolytecActiveX hinzufügen.
Zitat:

Das ActiveX-Control des Messgerätes wurde mit Visual Basic 6 erstellt. Es lässt sich über VBA (z. B. in Word) oder über das MS-Visual Studio korrekt verwenden. Ich weiß nicht mehr was ich tun soll...
http://groups.google.com/group/de.co...e&lr=&oe=UTF-8

PS: kannst du deinen Betrag nochmals editieren, und den ganzen Sourcecode löschen?

Lenth 12. Feb 2007 18:43

Re: ActiveX-Blattschuss
 
Hallo und danke,

beim Editieren der ocx-Datei und anschließenden Speichern der Datei kommt es aber zu der Fehlermeldung, dass "der Dateiname die Erweiterung '.tlb' haben muss. :gruebel:


Grüße

Christoph

shmia 14. Feb 2007 12:39

Re: ActiveX-Blattschuss
 
Zitat:

Zitat von Lenth
beim Editieren der ocx-Datei und anschließenden Speichern der Datei kommt es aber zu der Fehlermeldung, dass "der Dateiname die Erweiterung '.tlb' haben muss. :gruebel:

Eine OCX ist ja eine DLL mit in den Resourcen eingebetteter TLB.
Anscheinend lässt Delphi das Manipulieren der TLB innerhalb der DLL/OCX nicht zu.
Hier nochmals die Anleitung:
Zitat:

Datei - öffnen - Als Filter "Typbibliothek"
Die *.ocx öffnen
Im TLB-Editor die Co-Klasse markieren
Im rechten Fenster unter "Flags" die Option "Kann erzeugt werden"
aktivieren
Datei - speichern unter
Als Dateiname XYZ.TLB eingeben.
Evt schon vorhandene aus den *.ocx erzeugte *.pas -Dateien löschen.
Über Projekt / Typbliothek importieren / Durchsuchen die XYZ.TLB
öffnen und das Steuerelement somit in der Komponentenpalette
registrieren.
In meinem Delphi 5 muss man Projekt / Typbliothek importieren wählen und dann "Hinzufügen" wählen,
um eine bestimmte TLB angeben zu können. Bei Delphi 2006 muss du etwas suchen und experimentieren.
Da Grundprinzip ist aber, dass nur die modifizierte TLB-Datei anstelle der orginalen OCX-Datei importiert wird.

Lenth 14. Feb 2007 18:47

Re: ActiveX-Blattschuss
 
Hallo nochmal,

nach reichlichen Suchen habe ich herausgefunden, dass man dem Compiler unter Tool->Optionen->Delphi-Optionen->Typenbiliothek auch sagen kann, dass er derartigen Unsinn wie ihn VB macht einfach ignorieren soll (Beim Importieren spezielle CoClass-Flags ignorieren). So geht es wesentlich einfacher. Alles andere krankt daran, das Delphi gerne die gerade geänderten _tlb.pas-Dateien gerne mal überschreibt und man sich stundenlang abmüht, bis es zufällig mal klappt...will sagen unter Delphi 5 funktioniert die Anleitung (habe ich ausprobiert) unter Developer Studio 2006 bockt und zickt der Compiler.

Weiter geholfen hat mir die erfolgreiche Einbindung der Komponenten aber auch nicht, da die damit versehenen Programme beim Startversuch mit Pauken und Trompeten abstürzen. Spaßeshalber habe ich dann mal Delphi für .NET ausprobiert. Hier funktionierten auf einmal die Controls wie vorgesehen. Stellt sich die Frage, ob eine Umstellung auf Delphi.NET einen großen Aufwand darstellt. Soviel gesagt: Das einzige, was bisher für das Projekt erstellt worden ist, ist ein Objekt in Object-Pascal, welches eine statistische Auswertung rechnet. Mit .NET habe ich mich bisher nicht beschäftigt.

Grüße

Christoph


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz