Einzelnen Beitrag anzeigen

jam176

Registriert seit: 21. Jul 2003
9 Beiträge
 
#1

ActiveX aus Komponente generieren

  Alt 4. Aug 2003, 11:41
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]
  Mit Zitat antworten Zitat