|
| behandling af en event fra en klasses barn Fra : Peder Nyborg Madsen |
Dato : 27-04-02 12:46 |
|
Hej
jeg sidder og programmere i C++Builder 4.0 (Windows)
Hvor jeg har følgende
class TEks
{
private:
TApdComPort *ApdComPort;
public:
};
TApdComPort har en event der har en event der hedder TriggerAvail(TObject
*CP, WORD Count)
Jeg har prøvet med TNotifyEvent(System::TObject* Sender), men den virker
ikke...
Men hvis jeg bruger TApdComPort, under TForm1, aktiveres eventen godt nok
void __fastcall TForm1::ApdComPortTriggerAvail(TObject *CP, WORD Count){}
Mit spørgsmål er nu hvordan får jeg fat i denne event i gennem klassen TEks,
så jeg selv kan bestemme hvad der skal ske når metoden afvikles.
Håber at der en der kan hjælpe mig
På forhånd tak
----------------------------------------------------------------------------
------------
Peder Nyborg Madsen
M.Sc. Student,
Computer Systems Engineering
Contact information
Address The Maersk Mc-Kinney Moller Institute for Production Technology
University of Southern Denmark
Campusvej 55
DK-5230 Odense M
DENMARK
| |
Mogens Hansen (27-04-2002)
| Kommentar Fra : Mogens Hansen |
Dato : 27-04-02 13:42 |
|
"Peder Nyborg Madsen" <nybi@mip.sdu.dk> wrote in message
news:aae34l$r12$1@news.net.uni-c.dk...
> Mit spørgsmål er nu hvordan får jeg fat i denne event i gennem klassen
TEks,
> så jeg selv kan bestemme hvad der skal ske når metoden afvikles.
>
Du skal formodentlig have en member-funktion i TEks, som kan blive kaldt.
Den skal have den rigtige prototype, så den matcher TApdComPort's
forventninger.:
class TEks
{
private:
TApdComPort *ApdComPort;
public:
TEks(void);
void __fastcall ApdComPortTriggerAvail(TObject *CP, WORD Count)
};
Et eller sted (f.eks. i constructoren) skal TApdComPort objektets event
bindes til TEks's callback funktion
TEks::TEks(void) :
ApdComPort(......)
{
ApdComPort->TriggerAvail = ApdComPortTriggerAvail;
}
eller hvis det er i en anden funktion:
void Foo(TEks* Eks, TApdComPort *ApdComPort)
{
ApdComPort->TriggerAvail = Eks->ApdComPortTriggerAvail
}
OBS: Ovenstående er hverken compileret eller testet (jeg kender ikke
TApdComPort klassen), men det er noget i den retning.
Vær opmærksom på at "ApdComPort->TriggerAvail" er af typen "__closure", som
er en lidt speciel størrelse og som er en Borland sprog udvidelse.
Venlig hilsen
Mogens Hansen
| |
|
|