🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
5 messages
5 total messages Started by Lorenzo Dieryckx Sun, 18 Jan 2004 20:15
delphi-eventhandlers
#3279
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 20:15
70 lines
2798 bytes
Hello,

Ik ben bezig met een projectje in delphi.
Jammergenoeg ben ik nog niet echt bedreven in delphi, en dus
heb ik voor het ogenblik wat problemen waar in niet
direct info over vind.

Het probleem is, dat ik een timer wil gebruiken in een klasse,
en een procedure koppelen aan z'n onTime-event.
in C++ deed ik dit vroeger zo:

class foo
{
   private:
        TTimer* myTimer;
        void myTimerTime();
   public:
        foo();
};

foo::foo()
{
    this->myTimer->onTime = myTimerTime();        //<-- functiepointer
meegeven
    this->myTimer->Interval = 1000;
    this->myTimer->Enabled = true;
}

void foo::myTimerTime()
{
    ShowMessage("de tijd is verstreken");
}


Ik wil dit nu vertalen naar delphi, maar als ik probeer een functiepointer
te koppelen aan dat event, blijkt dat niet te lukken. Mijn probleem
is waarschijnlijk dat ik veel te veel C++ gewend ben. Misschien
werkt delphi wel helemaal niet op die manier, en zoek ik naar de
verkeerde dingen. Het enige wat ik kan vinden ivm eventhandlers in Delphi,
gaan over eventhandlers die via de object inspector gemaakt worden.
Maar ik kan dan nergens in h��l mijn Unit een regel code vinden die
de gecre�erde procedure koppelt aan dat bepaald event.
Anyway, hieronder vind je hoe ik het vertaald heb naar delphi,
gelieve mij te helpen om de c++ code eruit te halen ;-)

type
    foo = class
    private
        myTimer : TTimer;
        procedure myTimerTime();
    public
        constructor Create();
end;

constructor foo.Create();
begin
    myTimer.onTime = myTimerTime;        {<-- problemen}
    myTimer.Interval = 1000;
    myTimer.Enabled = True;
end;

procedure foo.myTimerTime();
begin
    ShowMessage('de tijd is verstreken');
end;


bedankt op voorhand
grts,
Lorenzo
Re: delphi-eventhandlers
#3280
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 20:17
79 lines
3346 bytes
"Lorenzo Dieryckx" <slavearcDOEDITWEG@pandora.be> schreef in bericht
news:IPBOb.1406$H84.327756991@hestia.telenet-ops.be...
> Hello,
>
> Ik ben bezig met een projectje in delphi.
> Jammergenoeg ben ik nog niet echt bedreven in delphi, en dus
> heb ik voor het ogenblik wat problemen waar in niet
> direct info over vind.
>
> Het probleem is, dat ik een timer wil gebruiken in een klasse,
> en een procedure koppelen aan z'n onTime-event.
> in C++ deed ik dit vroeger zo:
>
> class foo
> {
>    private:
>         TTimer* myTimer;
>         void myTimerTime();
>    public:
>         foo();
> };
>
> foo::foo()
> {
>     this->myTimer->onTime = myTimerTime();        //<-- functiepointer
> meegeven
>     this->myTimer->Interval = 1000;
>     this->myTimer->Enabled = true;
> }
>
> void foo::myTimerTime()
> {
>     ShowMessage("de tijd is verstreken");
> }
>
>
> Ik wil dit nu vertalen naar delphi, maar als ik probeer een functiepointer
> te koppelen aan dat event, blijkt dat niet te lukken. Mijn probleem
> is waarschijnlijk dat ik veel te veel C++ gewend ben. Misschien
> werkt delphi wel helemaal niet op die manier, en zoek ik naar de
> verkeerde dingen. Het enige wat ik kan vinden ivm eventhandlers in Delphi,
> gaan over eventhandlers die via de object inspector gemaakt worden.
> Maar ik kan dan nergens in h��l mijn Unit een regel code vinden die
> de gecre�erde procedure koppelt aan dat bepaald event.
> Anyway, hieronder vind je hoe ik het vertaald heb naar delphi,
> gelieve mij te helpen om de c++ code eruit te halen ;-)
>
> type
>     foo = class
>     private
>         myTimer : TTimer;
>         procedure myTimerTime();
>     public
>         constructor Create();
> end;
>
> constructor foo.Create();
> begin
>     myTimer.onTime = myTimerTime;        {<-- problemen}
>     myTimer.Interval = 1000;
>     myTimer.Enabled = True;
> end;
>
> procedure foo.myTimerTime();
> begin
>     ShowMessage('de tijd is verstreken');
> end;
>
>
> bedankt op voorhand
> grts,
> Lorenzo
>
Mja, om te beginnen:
Verander alle '=' in de delphi source door ':='
sorry!
grts,
Lorenzo
Re: delphi-eventhandlers
#3281
Author: KLinZ
Date: Sun, 18 Jan 2004 20:47
62 lines
2700 bytes
Lorenzo Dieryckx wrote
(news:IPBOb.1406$H84.327756991@hestia.telenet-ops.be):

> Ik ben bezig met een projectje in delphi.
> Jammergenoeg ben ik nog niet echt bedreven in delphi, en dus
> heb ik voor het ogenblik wat problemen waar in niet
> direct info over vind.

<snip c++>

> Ik wil dit nu vertalen naar delphi, maar als ik probeer een
> functiepointer te koppelen aan dat event, blijkt dat niet te lukken.

> Mijn probleem
> is waarschijnlijk dat ik veel te veel C++ gewend ben. Misschien
> werkt delphi wel helemaal niet op die manier, en zoek ik naar de
> verkeerde dingen.

Delphi kent ook functie pointers, maar als uitbreiding daarop heeft men
events bedacht.

> Het enige wat ik kan vinden ivm eventhandlers in
> Delphi, gaan over eventhandlers die via de object inspector gemaakt
> worden.

Die kun je ook vanuit code koppelen.

> Maar ik kan dan nergens in h��l mijn Unit een regel code vinden die
> de gecre�erde procedure koppelt aan dat bepaald event.

Nee, deze worden in de .dfm file gekoppeld (alt-f12).

> Anyway, hieronder vind je hoe ik het vertaald heb naar delphi,
> gelieve mij te helpen om de c++ code eruit te halen

 type
     foo = class
     private
         myTimer : TTimer;
         procedure myTimerTime(Sender: TObject);
     public
         constructor Create;
 end;

 constructor foo.Create;
 begin
     myTimer.onTimer := myTimerTime;        {<-- problemen}
     myTimer.Interval := 1000;
     myTimer.Enabled := True;
 end;

 procedure foo.myTimerTime(Sender: TObject);
 begin
     ShowMessage('de tijd is verstreken');
 end;


M.a.w.: de prototypes voor het event waren niet goed. Bovendien heet het
event OnTimer en niet OnTime.

--
www.zenobits.com
Re: delphi-eventhandlers
#3282
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 22:10
96 lines
4432 bytes
"KLinZ" <klinz@NOSPAMzenobitsSPAMMERTSNO.com.invalid> schreef in bericht
news:100lse5s18me85a@corp.supernews.com...
> Lorenzo Dieryckx wrote
> (news:IPBOb.1406$H84.327756991@hestia.telenet-ops.be):
>
> > Ik ben bezig met een projectje in delphi.
> > Jammergenoeg ben ik nog niet echt bedreven in delphi, en dus
> > heb ik voor het ogenblik wat problemen waar in niet
> > direct info over vind.
>
> <snip c++>
>
> > Ik wil dit nu vertalen naar delphi, maar als ik probeer een
> > functiepointer te koppelen aan dat event, blijkt dat niet te lukken.
>
> > Mijn probleem
> > is waarschijnlijk dat ik veel te veel C++ gewend ben. Misschien
> > werkt delphi wel helemaal niet op die manier, en zoek ik naar de
> > verkeerde dingen.
>
> Delphi kent ook functie pointers, maar als uitbreiding daarop heeft men
> events bedacht.
>
> > Het enige wat ik kan vinden ivm eventhandlers in
> > Delphi, gaan over eventhandlers die via de object inspector gemaakt
> > worden.
>
> Die kun je ook vanuit code koppelen.
>
> > Maar ik kan dan nergens in h��l mijn Unit een regel code vinden die
> > de gecre�erde procedure koppelt aan dat bepaald event.
>
> Nee, deze worden in de .dfm file gekoppeld (alt-f12).
>
> > Anyway, hieronder vind je hoe ik het vertaald heb naar delphi,
> > gelieve mij te helpen om de c++ code eruit te halen
>
>  type
>      foo = class
>      private
>          myTimer : TTimer;
>          procedure myTimerTime(Sender: TObject);
>      public
>          constructor Create;
>  end;
>
>  constructor foo.Create;
>  begin
>      myTimer.onTimer := myTimerTime;        {<-- problemen}
>      myTimer.Interval := 1000;
>      myTimer.Enabled := True;
>  end;
>
>  procedure foo.myTimerTime(Sender: TObject);
>  begin
>      ShowMessage('de tijd is verstreken');
>  end;
>
>
> M.a.w.: de prototypes voor het event waren niet goed. Bovendien heet het
> event OnTimer en niet OnTime.
>

Allesins al h��l erg bedankt voor deze informatie, ik heb nu ook een
beetje meer info gekregen in de werking van delphi.

Mijn probleem is jammergenoeg nog niet opgelost.
Het probleem is dat mijn unit geen dfm file heeft.
Het betreft hier gewoon een klasse, die in een aparte
unit staat. (zoals een standaard cpp+h file unit in c++)
de bedoeling is dat ik die klasse dan in een ander programma
(volledig met form en al) kan gebruiken.
--> vb'tje in UML:
-------------------------------------------
|                        class foo
                           -------------------------------
|------------------------------------------|
|              class TForm1           |
| - myTimer : TTimer
|-----------------------> |------------------------------|
|------------------------------------------ |
| <klasse met mainform>         |
| - myTimerTime(Sender : TObject) : void
  -------------------------------
| + Create()                                              |
-------------------------------------------

Blijkbaar word het 'object' keyword niet aanvaard in een *.pas file.
ben ik dan verplicht om een dfm file aan te maken en te koppelen aan die
unit?
verwacht die dfm file dan niet dat er een form gedefineerd wordt en zo?
questions questions questions ;-)

grts,
Lorenzo
Re: delphi-eventhandlers
#3283
Author: KLinZ
Date: Sun, 18 Jan 2004 23:32
41 lines
2305 bytes
Lorenzo Dieryckx wrote
(news:dvDOb.1465$mN4.363420781@hestia.telenet-ops.be):

> Allesins al h��l erg bedankt voor deze informatie, ik heb nu ook een
> beetje meer info gekregen in de werking van delphi.
>
> Mijn probleem is jammergenoeg nog niet opgelost.
> Het probleem is dat mijn unit geen dfm file heeft.

Dat is geen probleem. Je moet dan alleen de events 'handmatig' in de code
koppelen.

> Het betreft hier gewoon een klasse, die in een aparte
> unit staat. (zoals een standaard cpp+h file unit in c++)
> de bedoeling is dat ik die klasse dan in een ander programma
> (volledig met form en al) kan gebruiken.

Een form staat meestal wel in een .dfm file.

> --> vb'tje in UML:

<snip UML>

> Blijkbaar word het 'object' keyword niet aanvaard in een *.pas file.

Het is TObject. Het is geen keyword. Het is is de basisklasse in Delphi.

> ben ik dan verplicht om een dfm file aan te maken en te koppelen aan
> die unit?

Dat is wel het handigste. In de .dfm file staat de definitie van het form en
de componenten erop.

> verwacht die dfm file dan niet dat er een form gedefineerd wordt en
> zo? questions questions questions ;-)

Het beste kies jij File -> New Form als startpunt. Dan heb je deze problemen
niet.

-- 
www.zenobits.com
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads