|  | 		    
					
        
         
          
         
	
          | |  | 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
 
 
 
 
 |  |  | 
 |  |