Autor Beitrag
Holgerwa
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Di 08.02.05 22:58 
Hallo,

hat jemand eine Ahnung, in welcher Reihenfolge Delphi Events ausführt?
Beispiel: Wenn ich per Code in einer Prozedur eine Aktion ausführe, die einen Event in einer Komponente auslöst, wann wird dann zu diesem Event gesprungen? Es passiert (soweit ich sehen kann) nicht direkt, es werden nach der Event-auslösenden-Aktion noch weitere Befehle in dieser Prozedur ausgeführt, und irgendwann später im Ablauf kommt der Event zur Ausführung.

Aber da muß es doch eine Regel geben, wie z.B. "Ein Event wird immer nach Beendigung der Prozedur aufgerufen, in der er verursacht wurde"... oder sowas?

Oder passiert das Ganze mehr oder weniger zufällig von Windows gesteuert?

Danke für jede Hilfe!

Holger
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 08.02.05 23:07 
Holgerwa hat folgendes geschrieben:
Oder passiert das Ganze mehr oder weniger zufällig von Windows gesteuert?

Windows sendet Nachrichten und diese müssen abgearbeitet werden. Wenn dein Programm aber gerade beschäftigt sind, werden diese Nachrichten in einer Nachrichtenschleife festgehalten. Und erst dann abgearbeitet, wenn dein Programm gerade nichts macht. Darum gibt es auch Application.ProcessMessage, damit diese Nachrichtschleife auch manuell abgearbeitet werden kann.

Wo liegt denn genau dein Problem?

_________________
Ciao, Sprint.
Holgerwa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 325

WIN XP Pro, Vista Business
Delphi 7 Pro, BDS 2006 Pro
BeitragVerfasst: Di 08.02.05 23:14 
Hallo Sprint, und danke für die schnelle Antwort!

ich habe kein Problem damit, versuche nur zu verstehen, wie der Ablauf funktioniert (ein bischen Licht ins Dunkel bringen :wink:)

Das heißt dann also:
- Code löst Event aus.
- Die Prozedur, die diesen Code ausgeführt hat, wird bis zum Ende ausgeführt.
- Sollte dann nichts Dringenderes anstehen, wird der Event ausgeführt.

Ist das so richtig?

Holger
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 08.02.05 23:18 
um licht ins dunkel zu bringen wirst du nicht umhin kommen, die vcl-units zu debuggen. da siehst du dann genau was in welcher reihenfolge passiert. das geht mit projekteinstellungen - compiler - laufzeit dcu's erzeugen (danke @sprint)
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 08.02.05 23:31 
Holgerwa hat folgendes geschrieben:
Code löst Event aus

Das kann man nicht so pauschal sagen. Code macht irgendetwas. Windows sendet z.B. Nachricht das sich was verändert hat. VCL verarbeitet und prüft ob diese Nachricht gebraucht wird und löst nur dann ein Ereignis aus, wenn du es auch behandeln willst.

Nimm' z.B. mal einen Button. Wenn du das OnClick Ereignis nicht gesetzt hast, wird auch nichts ausgeführt. Windows sendet aber trotzdem die Nachricht, das der Button gedrückt worden ist.

_________________
Ciao, Sprint.