Thread View: be.comp.programming
5 messages
5 total messages
Started by Lorenzo Dieryckx
Sun, 18 Jan 2004 20:15
delphi-eventhandlers
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 20:15
Date: Sun, 18 Jan 2004 20:15
70 lines
2798 bytes
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
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 20:17
Date: Sun, 18 Jan 2004 20:17
79 lines
3346 bytes
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
Author: KLinZ
Date: Sun, 18 Jan 2004 20:47
Date: Sun, 18 Jan 2004 20:47
62 lines
2700 bytes
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
Author: Lorenzo Dieryckx
Date: Sun, 18 Jan 2004 22:10
Date: Sun, 18 Jan 2004 22:10
96 lines
4432 bytes
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
Author: KLinZ
Date: Sun, 18 Jan 2004 23:32
Date: Sun, 18 Jan 2004 23:32
41 lines
2305 bytes
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