Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ActiveX aus Komponente generieren (https://www.delphipraxis.net/7157-activex-aus-komponente-generieren.html)

jam176 4. Aug 2003 10:41


ActiveX aus Komponente generieren
 
Ich hab jetzt schone einiges zum Thema ActiveX gelesen und gängige Foren rauf und runter durchsucht, aber entweder ist es so leicht, dass keiner drüber redet, oder so ungewöhnlich, dass niemand sowas programmiert!

Ich habe eine Komponente gebaut, die eine dll verwendet. Daraus will ich ein ActiveX-Element machen um es später unter Navision zu verwenden. Aber ich scheitere schon daran, dass Delphi7 meine Komponente nicht in der Kombobox (VCL-Klassenname) anzeigt, wenn ich das ActiveX-Element neu erstellen will.

In Delphi5 scheint meine Komponente zwar unter den VCL-Klassennamen auf, aber wenn das ActiveX-Element erstellt ist, sind alle meine Funktionen der Ursprünglichen Komponente weg.

Was mach ich da falsch???

Das ist übrigens meine Komponente (reduziert auf eine Funktion), die ich registriert habe:
Delphi-Quellcode:
unit Waagen;

interface

uses
  SysUtils, Classes, Controls;

type
  TWaagen = class(TWinControl)

  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    procedure W_netErrorStr (iErrNr: smallint; var ErrorText: String);
   
  published
    { Published-Deklarationen }
  end;


  procedure Register;


implementation

  procedure netErrorStr (Error, MaxLen: smallint; ErrorText: PChar); stdcall; far; external 'waagen.dll';


  procedure TWaagen.W_netErrorStr(iErrNr: smallint; var ErrorText: String);
  const
    MAXLEN_ERRSTR = 81;
  var
    acErr: array[0..MAXLEN_ERRSTR] of char;
    i: integer;
  begin
    netErrorStr(iErrNr, MAXLEN_ERRSTR, acErr);

    ErrorText:='';
    for i:= 0 to MAXLEN_ERRSTR do
    begin
      if acErr[i] = #0 then break;
      ErrorText:= ErrorText + acErr[i];
    end;
  end;

  procedure Register;
  begin
    RegisterComponents('MyComponents', [TWaagen]);
  end;

end.
Wäre für jede Hilfe dankbar...

mfg
rieder/IT

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

jam176 5. Aug 2003 08:08

Re: ActiveX aus Komponente generieren
 
Gibt's wirklich niemanden, der mir in dieser Sache etwas sagen kann?

jam176

sakura 5. Aug 2003 08:12

Re: ActiveX aus Komponente generieren
 
Moin,

eigentlich soll es ganz leicht sein. Wahrscheinlich redet deswegen auch niemand darüber ;-) Ich werde mal rumspielen und von meinen Erfahrungen berichten.

...:cat:...

jam176 5. Aug 2003 08:15

Re: ActiveX aus Komponente generieren
 
boah, danke! echt!

bin gespannt...

jam176

sakura 5. Aug 2003 08:46

Re: ActiveX aus Komponente generieren
 
Also warum Delphi 7 nicht mehr alle anzeigt kann ich leider auch nicht beantworten, aber :!: bestätigen :wall: Schade eigentlich. Auch ich habe Delphi 5 zum Vergleich installiert :mrgreen:

In die ActiveX-Komponente werden automatisch nur die Funktionen, Methoden, Eigenschaften und Ereignisse übernommen, deren Parameter vollständig COM-Kompatibel sind. Für alle anderen musst Du die Methoden selbst deklarieren und kompatibel machen und ggf. die Parameter vor der Weitergabe konvertieren.

Zur Deklaration der COM-Access-Methoden musst Du den Type-Library-Editor (im Menü View) nutzen.

Viel mehr habe ich auf Anhieb leider auch nicht in Erfahrung bringen können. Im Zweifel würde ich die ActiveX Komponente in Delphi 5 erstellen und die Sourcen dann nach Delphi 7 importieren. Dann kannst Du immerhin damit weiterarbeiten.

...:cat:...

jam176 5. Aug 2003 08:57

Re: ActiveX aus Komponente generieren
 
alles klar! lege gleich los. vielen dank für deine zeit!!!!

jam176

sakura 5. Aug 2003 09:37

Re: ActiveX aus Komponente generieren
 
Keine Ursache. Es wäre schön, wenn es einfacher wäre ;-)

...:cat:...

Ronald 15. Okt 2003 12:53

Re: ActiveX aus Komponente generieren
 
Ich weiß ja nicht, ob Du Dein Problem nun bereits auch ohne meine Nachricht gelöst hast.

Ich baue unter Delphi 5 ebenfalls z.Zt. die eine oder andere Komponente in ActiveX um, um sie in Excel zu verwenden. Mein erster Versuch, über eine ActiveX-Form hat zu dem gleichen Problem geführt, wie Du es beschrieben hast. Der Einsatz über ActiveX-Element führte zu einem vollen Erfolg - einfach so !
Das nicht-darstellen der Komponente im VCL-Klassenname hat nach meiner Erkenntnis etwas mit dem Komponenten-Typ zu tun, so erscheint bei mir eine vom Typ TGraphic abgeleitet Komponente nicht in der Komponenten-Auswahl. Ich muß allerdings gestehen, daß auch ich ein absoluter Anfänger in diesem Umfeld bin und meine Erkenntnisse auf Trail-and-Error beruhen.

jam176 15. Okt 2003 17:15

Re: ActiveX aus Komponente generieren
 
tatsächlich habe ich das problem NICHT lösen können, denn solange ich unter delphi7 die komponente in der liste nicht auswählen kann, geht's auch nicht weiter.
ich habe daher einfach unter delphi3 oder delphi5 (weiss nicht mehr) eine völlig leere komponente erzeugt, dort wurde die dann auch angezeigt und daraus mein OCX generiert. wie gesagt ein völlig leeres, eine HÜLLE, sozusagen.
und dieses ding hab ich dann einfach als activeX von null auf programmiert.

mfg
jam176

Ronald 16. Okt 2003 06:12

Re: ActiveX aus Komponente generieren
 
Schmerzhaft, wenn man auf bereits geleistete Arbeit nicht zurück greifen kann. Ich hab zum Test einfach mal eine Testkomponente geschrieben und diese von dem Typ abgeleitet, vom dem auch das Objekt meiner Begierde abgeleitet wurde. Diese neue Komponente wurde bei mir ebenfalls nicht in der Komponentenauswahl angeboten, so daß sich bei mir der Verdacht erhärtet hatte, daß es einfach mit dem Komponententyp zusammenhängt, von dem die geschriebene Komponente abgeleitet wurde. Warum das allerdings so ist verschließt sich meinem kleinen Verstand. Wenn ich da etwas herausfinde, werde ich Dich informieren. In solchen Fällen würde ich (soweit möglich) mal über 'nen alternativen Komponententyp nachdenken. Da ich vorhabe noch einige von diesen Dingern zu schreiben freue ich mich schon auf die Trail-and-Error-Methode.
By th way - Ich hätte da mal 'ne Frage an Dich. Die OCX-e die ich geschrieben habe möchte ich gerne auf anderen Rechnern installieren. Aus Delphi heraus geht das ja einfach. Auf den anderen Rechnern habe ich jedoch kein Delphi installiert. Hier z.B. bietet Excel die Installation an. Nur wenn ich das versuche moniert Excel das fehlen eine Installations-Routine in den Objekten. Es wäre natürlich toll, wenn ich die Dinger an Freunde weitergeben könnte, ohnen großen Installationsaufwand vor Ort zu produzieren. Hast Du 'nen Tip für mich ?

Gruß
Ronald


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Seite 1 von 2  1 2      

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