AGB  ·  Datenschutz  ·  Impressum  







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

Event in einer Class programmieren

Ein Thema von Chemiker · begonnen am 5. Okt 2008 · letzter Beitrag vom 6. Okt 2008
 
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Event in einer Class programmieren

  Alt 5. Okt 2008, 17:20
Hallo taaktaak, Luckie,

vielen Dank für eure Hilfe. Ich bin aber noch nicht weiter gekommen.

Das Event ist schon vorhanden in der Komponente: TApdDataPacket.

In der Hilfe wird das Event so angegeben:

Zitat:
TApdDataPacket.OnStringPacket

property OnStringPacket : TStringPacketNotifyEvent

TStringPacketNotifyEvent = procedure(

Sender : TObject; Data : string) of object;

Defines an event handler that is called when a complete data packet is available.

Data is the actual data in the packet. The data packet is only available for the duration of the event.
Note that a null character (#0) in the collected data may terminate the Data string prematurely. This is due to the way that Delphi and C++Builder implement huge strings. If you are expecting null characters in the collected data, use the OnPacket event instead.
Meine Class sieht jetzt so aus:

Delphi-Quellcode:
TMyDataEvent = procedure(Sender: TObject; Data:String) of Object;


  THPLComPortClass= Class(TComponent)
  private
    FComPort : TApdCustomComPort;
    FStringPackete : TApdDataPacket; // ---- in dieser Komponente ist das Event
                                                                      // schon vorhanden.

    FOnData : TMyDataEvent; // Event

    function GetOeffnen: Boolean;
    procedure SetOeffnen(const Value: Boolean);
    function GetZuweisen: TApdCustomComPort;
    procedure SetZuweisen(const Value: TApdCustomComPort);
  protected

  published
     property OnData : TMyDataEvent read FOnData write FOnData; // Event
  public
    Constructor Create(AOwner : TComponent); override;
    destructor Destroy; override;

    property Oeffnen: Boolean Read GetOeffnen Write SetOeffnen;
    property zuweisen: TApdCustomComPort Read GetZuweisen Write SetZuweisen;
  End;
Im Testprogramm weise ich das Event so zu:

Delphi-Quellcode:
type
  TfrmComPortPacket = class(TForm)
    btnCOMOeffnen: TButton;
    btnCOMSchliessen: TButton;
    Memo1: TMemo;
    procedure btnCOMOeffnenClick(Sender: TObject);
    procedure btnCOMSchliessenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    CP: THPLComPortClass;
    Procedure MyString (Sender: TObject; Data: String);
  end;


procedure TfrmComPortPacket.FormCreate(Sender: TObject);
begin
  CP:= THPLComPortClass.Create(Self);
  CP.OnData:= MyString;
end;
So wird das Event aufgerufen:

Delphi-Quellcode:
Procedure TfrmComPortPacket.MyString (Sender: TObject; Data: String);
begin
  Memo1.Lines.Add(Data);
end;
Das Programm lässt sich ausführen, aber das Ereignis wird nicht aufgerufen.

An welcher Stelle muss der Aufruf:

if Assigned(FOnData) then FOnData(Self,'mein string'); angegeben werden.


Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  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 04:15 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