AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ereignis (Event) einer ActiveX-Form ohne tlb zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignis (Event) einer ActiveX-Form ohne tlb zuweisen

Ein Thema von LuckySpacy · begonnen am 27. Nov 2003 · letzter Beitrag vom 27. Nov 2003
 
LuckySpacy

Registriert seit: 2. Apr 2003
Ort: Fränkisch-Crumbach
50 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ereignis (Event) einer ActiveX-Form ohne tlb zuweisen

  Alt 27. Nov 2003, 10:34
Folgendes Problem:
Ich habe eine ActiveX-Form erstellt.
Auf diesem Activex-Form befindet sich eine Edit-Komponente und ein Button.
Sobald ich auf den Button drücke, soll über ein Ereignis der Inhalt des Edit-Textes
nach außen übergeben werden.


Beispiel 1:

In der ActiveX-Form sieht es folgendermaßen aus:
Delphi-Quellcode:
..
  private
    { Private-Deklarationen }
    FEvents: IActiveFormXOle1Events;
    procedure ChangeEdit2Text(Sender: TObject; const Edit2Text: WideString);
..

procedure TActiveFormXOle1.ChangeEdit2Text(Sender: TObject;
  const Param1: WideString);
begin
  if FEvents <> nil then
    FEvents.OnChangeEdit2Text(Param1);
end;

procedure TActiveFormXOle1.Button1Click(Sender: TObject);
begin
  ChangeEdit2Text(Sender, Edit2.Text);
end;
über "Projekt|Typbibliothek importieren" importiere ich mir meine ActiveX-Form.
Dann erstelle ich mir eine neue Anwendung;
Auf die Anwendung setze ich meine importierte Activex-Form und ein Label;

Der Quelltext meiner Anwendung sieht unter anderem so aus:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ActiveFormXOle11.OnChangeEdit2Text := OnChangeEdit2Text;
end;

procedure TForm1.OnChangeEdit2Text(Sender: TObject;
  const Param1: WideString);
begin
  Label1.Caption := Param1;
end;
Wenn ich das Programm starte, dann funktioniert alles wunderbar.
Die Label-Komponente auf meiner Anwendung bekommt den Inhalt des Textes meiner ActiveX-Form Edit-Komponente
zugewiesen, sobald ich auf den Button drücke.


Beispiel 2:

Jetzt möchte ich aber nicht die tlb verwenden.
Das ActiveX soll in meiner Anwendung angezeigt werden.
Dazu verwende ich den OleContainer.

Mein Quelltext hierzu sieht wie folgt aus:

Delphi-Quellcode:
..
  private
    OleObjekt: OleVariant;
..


procedure TForm1.rbtActiveFormXClick(Sender: TObject);
begin
  OleContainer1.CreateObject('ActiveFormXOle1Proj1.ActiveFormXOle1', false); // in den Container laden
  OleContainer1.DoVerb(ovShow); // Anzeigen
  OleObjekt := OleContainer1.OleObject; // OleObjekt zuweisen
  OleObjekt.OnChangeEdit2Text := OnChangeEdit2Text; // Event wie im ersten Beispiel zuweisen
end;

Wenn ich dies jetzt Kompiliere, dann bekomme ich folgende Fehlermeldung:
"Nicht genügend wirkliche Parameter"

Wenn ich das tue, was der Compiler von mir verlangt
"OleObjekt.OnChangeEdit2Text := OnChangeEdit2Text(Sender, 'Hallo');"
meckert der Compiler auch nicht mehr rum.
Nützt aber nichts, weil es in der Anwendung nicht funktionert.


Zusammengefasst:
Ich benutze in beiden Beispielen das selbe ActiveX.

Der Unterschied zwischen den beiden Versionen ist:
Im ersten Beispiel benutze ich die tlb und im zweiten Beispiel nicht.

Frage:
Wieso kann ich das Event nicht zuweisen ?
Ich verstehe es einfach nicht.
Was muss ich tun, damit es funktioniert?
Thomas Bachmann
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 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