Fenster mit Ausblick

Fenster mit Ausblick

Mit der CONZEPT 16-Version 5.5.04 wurde das Ereignis EvtCreated eingeführt. Der vorliegende Artikel beleuchtet das Event näher.

Initialisierung vs. Erstellung

Für die Initialisierung eines Oberflächen-Objektes stellt CONZEPT 16 das Ereignis EvtInit zur Verfügung. Warum gibt es also die Notwendigkeit für ein weiteres Ereignis?

WinDialog

Hierzu schauen wir uns an, was bei der Ausführung des WinDialog-Befehls passiert (Abb.1).

Ablauf WinDialogAbb. 1: Initialisierung und Objekterstellung

Beim Laden des Dialoges aus der Datenbank – anhand des übergebenen Namens – werden die Eigenschaften und Ereignisse geladen sowie die untergeordneten Objekte. Wenn dieser Vorgang abgeschlossen ist, wird das Ereignis EvtInit des Dialoges aufgerufen. Der Dialog und seine untergeordneten Objekte existieren nun CONZEPT 16-seitig (VSO).

Windows-seitig (in der Grafik grün) ist jedoch noch kein Steuerelement vorhanden, mit dem der Anwender interagieren könnte. Dieses wird erst nach der Durchführung des EvtInit-Ereignisses erstellt.

Ähnlich dem Deskriptor in CONZEPT 16 verwaltet Windows für jedes Fenster ein sogenanntes Window-Handle (HWND). Zu den Fenstern zählen hierbei nicht nur Frame-Objekte, sondern auch Buttons, Eingabefelder, Checkboxen, etc.

Die Fenstererstellung wird durch den Aufruf der Win32-API Funktion CreateWindow erledigt. Nach dessen Rückkehr präsentiert sich der Dialog auf dem Bildschirm des Anwenders und erst jetzt wird das Ereignis EvtCreated des Frame-Objektes durchgeführt.

Objektorientierung

Der beschriebene Ablauf ermöglicht die Modifikation eines Objektes bereits vor dessen Erstellung durch Windows. So können sie beispielsweise die zukünftige Position und Größe des Dialoges auf dem Bildschirm anpassen (wpArea-Eigenschaft), auch wenn das Steuerelement noch gar nicht vorhanden ist. Die veränderten Werte der Eigenschaft werden später bei der Fenster-Erstellung an Windows übergeben. Genauso verhält es sich auch mit den anderen Eigenschaften (z.B. wpCaption zum Setzen des Fenster-Titels).

Anwendungsfall

Die CtxDocEdit-Befehle (wie z.B. WinDocLoadName) funktionieren nicht im Ereignis EvtInit. Das Objekt benötigt zwangsläufig das zugrundeliegende COM-Objekt für die Durchführung der Befehle. Hier bietet sich das Ereignis EvtCreated an, damit ein Dokument unmittelbar nach der Dialog-Erstellung in das CtxDocEdit-Objekt geladen werden kann. Auch die spezifischen COM-Eigenschaften setzen die Fenster-Erstellung voraus. Die CONZEPT 16-Eigenschaften (wie z.B. wpViewMode) können jedoch bereits früher gesetzt werden. Hier wird die Ausführung der Eigenschaften einfach bis zur Fenster-Erstellung aufgeschoben.

Fazit

Mit dem Ereignis EvtCreated haben Sie die Möglichkeit Code zu einem definierten Zeitpunkt nach der Fenster-Erstellung des Frame-Objektes und all seiner Unterobjekte auszuführen.

Klicken Sie hier, um die Nutzungsbedingungen für unseren Blog zu lesen.

6 Antworten

  1. @Fabian
    Ja. Frame-Objekte werden nach der Erstellung sichtbar gemacht. Selbst die Option _WinDialogCreateHidden verhindert dies nicht.

  2. Wir haben bisher für Sachen, die nicht im FrameInit gemacht werden konnten, immer im EvtPosChanged-Ereignis ein WinUserEvent() ausgelöst. Im EvtUser-Ereignis haben wir dann schlussendlich das gemacht, was wir effektiv wollten. Damit die Anpassungen nicht sichtbar durchgeführt wurden, haben wir im EvtInit das Fenster auf Visible = False und am Ende vom EvtUser wieder auf Visible = True gesetzt.

    Ich gehe davon aus, dass genau solche Geschichten nun über das EvtCreated viel einfacher gelöst werden können?

  3. @Th.Eichele
    Genau. Das EvtCreated soll kein Ersatz für das EvtInit-Ereignis sein. Generell gilt auch für die Initialisierung im EvtInit-Ereignis: nur die wirklich notwendigen Dinge durchführen. Denn hier kommt noch zum tragen, dass das EvtInit auch bei untergeordneten Objekten des Frame aufgerufen wird, sofern dort eingetragen.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

Wünsche, Fragen oder Feedback sind willkommen:

Nutzungsbedingungen der Kommentarfunktion im Blog

1. Allgemeines

Vectorsoft AG („Anbieter“) stellt für Internetnutzer („Nutzer“) auf der Website
vectorsoft.de einen öffentlichen Blog bereit. Der öffentliche Blog dient dem
Informations- und Gedankenaustausch. Die Nutzer, welche sich mit Beiträgen und
Kommentaren beteiligen, verpflichten sich dazu, die Blog-Nutzungsbedingungen
einzuhalten und tragen die Verantwortung für die Richtigkeit und Angemessenheit
sowie Freiheit von Rechtsverletzungen ihrer Beiträge. Mit Nutzung der
Kommentarfunktion in unserem Blog akzeptieren Sie diese Nutzungsbedingungen.

2. Netiquette

Wir bitten Sie von persönlichen Angriffen und Provokationen aufgrund anderer
Meinungen abzusehen. Bitte argumentieren Sie sachlich und bewegen Sie sich auf
der Basis einer konstruktiven Diskussionskultur. Ihr Kommentar sollte stets im
Zusammenhang mit dem jeweiligen Thema sein, um Ausschweifungen in andere
Themenbereiche zu vermeiden. Das mehrmalige Posten desselben Kommentars
oder mehrerer ähnlicher Kommentare ist nicht erlaubt.

3. Verbot rechtswidriger Inhalte

Mit Absenden Ihres Kommentars bestätigen Sie, dass Sie keine Urheberrechte oder andere Rechte Dritter verletzen. Volksverhetzende, rassistische Äußerungen, Anleitungen zu Straftaten und deren Verherrlichung, Gewaltdarstellungen, pornografische Inhalte und Äußerungen, die Persönlichkeitsrechte verletzen sind untersagt.

4. Keine Werbung

Die Nutzung der Kommentarfunktion ist für kommerzielle oder parteipolitische
Zwecke nicht erlaubt. Werbliche Beiträge aller Art werden von uns umgehend
gelöscht.

5. Angaben zum Namen

Bei der Eingabe Ihres Namens achten Sie auf die zuvor genannten Grundsätze.

6. Quellenangaben

Bitte geben Sie bei der beabsichtigten Veröffentlichung von Zitaten oder Beiträgen
Dritter die jeweiligen Quellen an und erläutern dessen Bezug zum Blogbeitrag.

7. Verstoß gegen die Nutzungsbedingungen

Beiträge, die gegen diese Richtlinie verstoßen werden umgehend gelöscht. Sollten
Sie selbst Verstöße bemerken, so senden Sie uns bitte den Link des betreffenden
Kommentars per E-Mail an . Wir weisen ausdrücklich daraufhin, dass wir einzelne Nutzer bei wiederholten oder schweren Verstößen gegen diese
Nutzungsbedingungen ausschließen werden.

Stand: Sept. 2024

Deine Trial Version - jetzt anfordern!

Teste yeet - unverbindlich und kostenfrei

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner