Announcement

Collapse
No announcement yet.

Auf Event von aktivem Server als Client reagieren

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

  • Auf Event von aktivem Server als Client reagieren

    Hallo,

    folgendes Problem liegt vor:

    Ich habe zwei ActiveForms; Die 1.ActiveForm(Server) löst einen Event aus, wenn sich die

    ContainerFenstergröße ändert....das funktioniert! Weiterhin registriert sich der Server im ROT.

    Die 2.ActiveForm(Client) beinhaltet mit Hilfe des eventsinkimp 2.0-Tools die Eventschnittstellenkomponente

    des Servers. Der Client bekommt einen Zeiger auf den laufenden Server...funktioniert! Nun soll der

    EventSink der Eventschnittstellenkomponente mit der ServerEventSchnittstelle verbunden werden....beim

    Befehl "Advise" wird eine Exception ausgelöst !!

    Folgenden Programmcode habe ich eingegeben:

    unit ActiveFormControlSizeV3Impl1;

    procedure TActiveFormControlSizeV3X.Button2Click(Sender: TObject);

    begin

    RegisterActiveObject(Self as IUnknown,

    ActiveFormControlSizeV3Proj1_TLB.CLASS_ActiveFormC ontrolSizeV3X,

    ACTIVEOBJECT_WEAK,FServerROTHandle);

    end;

    unit ActiveFormClientContainerSizeImpl1;

    procedure TActiveFormClientContainerSizeX.Button1Click(Sende r: TObject);

    begin

    try

    ISrvObj:=GetActiveOleObject(ClassIDToProgID
    (CLASS_ActiveFormControlSizeV3X));

    Listbox1.Items.Add('GetActiveOleObject OK !');

    except

    Listbox1.Items.Add('GetActiveObject except !');

    end;

    try

    If Assigned(ISrvObj) then begin

    Listbox1.Items.Add('Assigned ISrvObj OK !');

    ActiveFormControlSizeV3Proj1IActiveFormControlSize V3XEvents1.Connect
    (IUnknown(ISrvObj));

    Listbox1.Items.Add('Connect OK !');

    end;

    except

    Listbox1.Items.Add('Connect except !');

    end;

    end;

    unit ActiveFormControlSizeV3Proj1Events;

    procedure TActiveFormControlSizeV3Proj1EventsBaseSink.Connec t (const
    ASource: IUnknown);

    var

    pcpc: IConnectionPointContainer;

    begin

    Assert (ASource <> nil);

    Disconnect;

    try

    OleCheck (ASource.QueryInterface (IConnectionPointContainer, pcpc));

    ShowMessage('QueryInterface');

    OleCheck (pcpc.FindConnectionPoint (FSinkIID, FCP));

    ShowMessage('FindConnectionPoint ');

    OleCheck (FCP.Advise (Self, FCookie)); //Fehler !!

    ShowMessage('FCP.Advise');

    FSource := ASource;

    except

    raise Exception.Create (Format ('Unable to connect %s.'#13'%s',

    [Name, Exception (ExceptObject).Message]

    ));

    end; { finally }

    end;

    Kann mir jemand sagen, was ich falsch mache, oder hat mir jemand einen Tip, wie ich es besser machen könnte

    ?!?

    (Ich verwende außerdem Windows2000 und Delphi5Prof)

    Vielen Dank.

    Ralph Dürsen.
Working...
X