AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ereignisbehandlungroutine zuweisen?!

Ein Thema von Stevie · begonnen am 29. Okt 2003 · letzter Beitrag vom 29. Okt 2003
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Ereignisbehandlungroutine zuweisen?!

  Alt 29. Okt 2003, 08:01
Hi Leute,

ich hab eine neue Komponente erstellt, die als Eigenschaft(Subkomponente) ein TIdTCPServer-Objekt hat. Wie kann ich jetzt dieser Subkomponente eine von mir definierte Ereignisbehandlungsroutine zuweisen?

Das TIdTCPServer-Objekt hat ja das Ereignis OnExecute.
Ich will jetzt, dass wenn das TIdTCPServer-Objekt meiner Komponente zugewiesen wird bei OnExecute eine Funktion meiner Komponente ausführt. Ich weiß, dass es gehen würde, wenn ich beides in ein Datenmodul packen würde und das händisch machen würde und dann das Ding ableiten würde. Aber ich will das alles gerne in einer Komponente haben. Außerdem will ich nix von TIdTCPServer ableiten, weil ja in Zukunft die 10er Version rauskommt und dann müsste ich evtl alles wieder umbauen.

Habt ihr ne Idee?
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Ereignisbehandlungroutine zuweisen?!

  Alt 29. Okt 2003, 08:49
Hallo Stevie,
so sollte es funktionieren
Delphi-Quellcode:
Type

 TMyKomop = class(TComponent)
 private
    FSub : TComponent;
    function GetOnExecute: TNotifyEvent;
    procedure SetOnExecute(const Value: TNotifyEvent);
 public
   property OnSubExecute : TNotifyEvent read GetOnExecute write SetOnExecute;
 end;

implementation

{ TMyKomop }

function TMyKomop.GetOnExecute: TNotifyEvent;
begin
  Result:=FSub.OnExecute;
end;

procedure TMyKomop.SetOnExecute(const Value: TNotifyEvent);
begin
  FSub.OnExecute:=Value;;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: Ereignisbehandlungroutine zuweisen?!

  Alt 29. Okt 2003, 13:13
Hmja, das war nicht ganz dasm was ich wollte.
Ich wollte ja, sobald die vorhandene Komponente zur Subkomponente wird, einem Ereignis eine Prozedur aus meiner Komponente zuweisen. Ich hab's aber inzwischen selber gelöst. Hier:
Delphi-Quellcode:
unit MyComponent;

interface

uses
  Windows, Messages, SysUtils, Classes, IdTCPServer;

type
  TMyComponent = class(TComponent)
  private
    FTCPServer: TIdTCPServer;
    FOnExecute: TIdServerThreadEvent;
    procedure DoServerExecute(AThread: TIdPeerThread);
    procedure SetTCPServer(const Value: TIdTCPServer);
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    property TCPServer: TIdTCPServer read FTCPServer write SetTCPServer;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TMyComponent]);
end;

{ TMyComponent }

procedure TMyComponent.DoServerExecute(AThread: TIdPeerThread);
begin
  if AThread.Connection.ReadLn(#10, 0) <> 'then
    AThread.Connection.WriteLn('Neue Prozedur');
end;

procedure TMyComponent.SetTCPServer(const Value: TIdTCPServer);
begin
  if Value <> FTCPServer then
  begin
    if Value <> nil then
    begin
    if (FTCPServer <> nil) and (FTCPServer.Owner = Self) then
      FTCPServer.Free;
      FTCPServer := Value;
      FTCPServer.FreeNotification(self);
      FOnExecute := FTCPServer.OnExecute;
      FTCPServer.OnExecute := DoServerExecute;
    end
    else
    begin
      if FTCPServer.Owner <> self then
      begin
        FTCPServer.OnExecute := FOnExecute;
        FTCPServer := nil;
      end;
    end;
  end;
end;

end.
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:15 Uhr.
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