AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verständnisfrage Ereignisfluss in der App

Verständnisfrage Ereignisfluss in der App

Ein Thema von schöni · begonnen am 8. Sep 2014 · letzter Beitrag vom 8. Sep 2014
Antwort Antwort
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

Verständnisfrage Ereignisfluss in der App

  Alt 8. Sep 2014, 21:34
Hallo,

ich beschäftige mich gerade mit den Innereien von Objekt- und Klassenbibliotheken. Dabei ergibt sich für mich die Frage, wie ein Ereignis zum Objekt kommt und von diesem dann weiter verteilt wird.

Einerseits sieht es für den Anewnder so aus, das die aktuell fokussierte Eingabzeile die Tastatureingaben entgegen nimmt, der mit der Maus angklichte Button löst ein Klick Ereignis aus. Aber irgendwer hat ja die Objekte/Klassen geschrieben.

Hier aber kommt ein Tastaturereignis zunächst aus einem Tastaturinterrupt, eine Prozedur oder Funktion liest die Eingabe und gibt sie an mein Programm weiter. Ebenso verhält es sich mit den Mausereignissen. Mir ist auch klar, das im Hauptproggramm eine Schleife REPEAT UNTIL ö.ä. existieren muss, mit eingelagertem Case ... Aber wie kommen die Ereignisse nun zu den Objekten.

Alle visuellen Komponenten sind in Delphi von TComponent abgeleitet. Da drin gibt es eine Eigenschaft Components[Index].


Ich könnte also schreiben:

Delphi-Quellcode:
begin
  MyApp := TMyApp.Create;
  repeat
    for i := 0 to MyForm.Components[i] do
    begin
      MyForm.KeyPress(KeyCode);
      MyForm.MouseMove(...);
      MyForm.MouseUp(...);
      MyForm.MouseDown(...);
  until KeyCode = KEY_ESC;
end.

Ich habe spaßeshalber eine kleine Klassenbibliothek geschrieben, aber dort funktioniert das nicht auf diese Weise. Warum nicht. Was ist in der VCL da anders. In meinem Konzept ist die Laufzeit zu groß. Warum?
Mir ist klar, das in den Objekten, hier MyForm, weitere komplexe Objekte stecken können, weshalb dann weitere interne Abfragen folgen müssen. Wenn zB. ein Menü auf MyForm ist oder eine Tabelle.... Mit was für Algos.

Mit welchen Algorhithmen werden in der Praxis die Ereignisse auf die Objekte verteilt.

Ich weiß auch, das in jedes Objekt eine Eigenschaft Focused gehört. Wenn die True ist, dann werden dei Eingaben von diesem Objekt entgegengenommen. Sollte per ContainsMouse() gehen. Wenn Mauszeiger auf Objekt, dann nach Klick Focused auf TRUE setzen.

Das ändert aber nix an der Tatsache, das ich jedesmal alle Objekte abfragen muss, ob Mauszeiger drauf. Oder ob lt. Tabordnung das Objekt ausgewählt ist.

Wie funktioniert die Abfrage bei der Tabordnung. Eine Liste aller nacheinander auswählbaren Objekte muss doch auch sukzessive abgefragt werden. Aber das soll auch noch schnell gehen.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.

Geändert von schöni ( 8. Sep 2014 um 21:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Verständnisfrage Ereignisfluss in der App

  Alt 8. Sep 2014, 22:09
Ich bin nicht sicher ob ich Deine Frage richtig verstanden habe, aber es klingt für mich als ob Du die Unit Forms studieren könntest, vor allem TApplication.WndProc und CustomForm.WndProc,
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz