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.