Announcement

Collapse
No announcement yet.

Events bei COM Objekten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Events bei COM Objekten

    Hallo,

    ich habe in meine Applikation eine ActiveX TAPI Komponente Importiert bzw. in Delphi eingebunden. Die Komponente definiert einige Events. Mein Problem ist jetzt das ich diese Events nur dann erhalte wenn ich von Delphi aus einen Call erzeuge wird jedoch von Extern angerufen werden die Events nicht aktiviert. Die Komponente habe ich deshalb kurz in VB getestet wo sie einwandfrei funktioniert.

    Gibt es etwas was ich unter dieser Konstellation beachten muss bzw. wenn ich mit der späten Bindung arbeite, wie muss ich dann solche Events in meine App einbinden.

    Danke für die Infos.

  • #2
    Hallo,

    mit welcher Delphi-Version wird gearbeitet? Ab der Version 5 ist Delphi in der Lage, über TOleServer-Nachfolger eigene VCL-Wrapperkomponenten zu generieren, die COM-Events (Connection Points) in normale, über den Objektinspektor konfigurierbare Delphi-Events umsetzen.
    &#10

    Comment


    • #3
      Hallo es ist die Version 5 Enterprise mit SP1. Wie gesagt
      gehen die Events wenn ich den Call erstelle aber nicht wenn
      eingehende Nachrichten empfangen werden sollen.

      Was muss ich beachten wenn ich mit dem EventSinkImp Programm
      eine Komponente erstellt habe. Wie kann ich die Events mit meinem
      OLE Object Verknüpfen.

      var
      AOleObject: Variant;
      begin
      AOleObject := Creat...
      end;

      Wie Ordne Ich jetzt die Events die mir das EventSinkImp Tool erstellt hat diesem Variant zu?

      Gibt es einen IInform Schnittstelle in COM und wenn ja wo finde ich
      deren Implementierung. Ich könnte nämlich alternativ auch in der anderen Komponente ein CallBackObject mit dieser Schnittstelle übergeben

      Comment


      • #4
        Hallo,

        in der ReadMe.txt von <i>EventSinkImp</i> werden beide Alternativen an einem Beispiel beschrieben:
        <pre>
        3) How do I start/stop sinking events using the generated sink components?

        Each sink component automatically provides 2 methods that allow you to easily
        connect and disconnect your sink from the server object.

        a) Connect (Source : IUnknown) - Connect allows you negotiate the connection
        points with the server object which enables your sink component to start
        receiving events. The Source parameter must be set to the IUnknown pointer
        of an instantiated COM object.

        If you instantiate your server object using direct interface pointers
        (early-binding), use Connect as follows:

        var
        pObject1 : IObject1;
        begin
        // create object
        pObject1 := CoObject1.Create;

        // start sinking events
        SinkComponent.Connect (pObject1 as IUnknown);
        end;

        If you instantiate your server object using olevariants (late-binding),
        use Connect as follows:

        var
        vObject1 : olevariant; // or variant
        begin
        // create object
        vObject1 := CreateOleObject ('Server.Object1');

        // start sinking events
        SinkComponent.Connect (IUnknown (vObject1));
        end;
        </pre&gt

        Comment


        • #5
          Hallo,

          mit EventSink funktioniert es . Mit einer anderen Komponente die ich per ActiveX eingebunden hatte, hat es mit dem D5 generiertem Wrapper einwandfrei funktioniert.

          Danke :

          Comment


          • #6
            Hallo,

            alle von Delphi 5 generierten Wrapper-Komponenten für Connection Point-Schnittstellen haben das Problem, dass <b>keine</b> var-Parameter übergeben werden können (Delphi ignoriert die neuen Werte vollständig). Das Tool EventSink hat diese Macke nicht

            Comment

            Working...
            X