AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Ab wann taucht ein VCL-Formular in der Taskleiste auf?
Thema durchsuchen
Ansicht
Themen-Optionen

Ab wann taucht ein VCL-Formular in der Taskleiste auf?

Ein Thema von Der schöne Günther · begonnen am 28. Apr 2014 · letzter Beitrag vom 28. Apr 2014
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 13:27
Ein Projekt öffnet (unter Umständen) etwas ungeschickt direkt im onCreate des Hauptformulars einen FileOpen -Dialog.

Usability-Problem: Zu diesem Zeitpunkt existiert noch kein Eintrag in der Windows-Taskleiste. Der Benutzer kann so leicht verwirrt werden, von woher denn auf einmal dieser Auswahl-Dialog stammt.

Meine Frage: Ich dachte ich bin schlau, und packe das einfach ins onShow . Das ändert nichts. Ab wann kann ich denn jetzt eigentlich sicher sein, dass der Eintrag in der Taskleiste aufgetaucht ist?


PS: Mit XE6 hat sich bzgl. der Taskleiste ja angeblich einiges geändert. Es geht hier noch um XE5.
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 13:31
Da ich das noch nie so richtig kapiert habe, aktiviere ich in solchen Fällen in FormCreate einen Timer mit einem Intervall von 200ms. Im "OnIntervall" deaktiviere ich ihn dann wieder und kann größtenteils sicher sein, dass die Form auch da ist. Pfusch, aber klappt.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 13:33
Evtl. ginge es, das ins OnActivate zu setzen (und in einem Flag die erste Aktivierung zu vermerken).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 13:34
Eigentlich dachte ich dieser Eintrag wird vom Windows gemacht. Dann, wenn die Form sichtbar ist.


OldCreateOrder: Früher war das etwas anders.

Aber jetzt wird das Formular (eigentlich) erst nach dem OnCreate angezeigt. Während des OnCreate wird Visible:=... abgefangen und nicht an die Form durchgereicht. Nach dem OnCreate wird dann das Fenster erst richtig sichtbar.

OnShow ist nach dem Anzeigen. (Nach dem Erstellen oder nach dem Ändern des Visible)



Du könntest eventuell einen eigenen Dialog basteln, welcher einen eigenen Taskleisten-Eintrag bekommt (wenn es noch Keinen gibt).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Apr 2014 um 13:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 13:37
Ich hab sowas auch im OnActivate drin mit Schalter FirstActivate.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 14:23
Ich hab sowas auch im OnActivate drin mit Schalter FirstActivate.
Hat sich auch bei mir bewährt: In OnCreate wird die private Boolean-Variable StartModus auf True gesetzt, am Ende von OnShow (wird nach vor OnActivate aufgerufen) wieder auf False. Ein Aufruf Die Ereignisbehandlung von OnShow wird nur ausgeführt, wenn StartModus = True. Das ist auch in anderen Zusammenhängen wie z.B. dem aktivieren einer DB-Connection, um z.B. bestimmte Events zu verhindern, die erst nach dem Start aktiviert werden sollen, recht nützlich.

Zum Verständnis: OnCreate des Hauptformulars wird nur einmal aufgerufen, OnActivate und OnShow können u.U. auch mehrfach aufgerufen werden.

Will man ganz sicher sein, das der Aufbau der Form vor dem Anzeigen eines Dialogs abgeschlossen ist, hilft ein Application.ProcessMessages vor dem Aufruf des Dialogs.

Geändert von Perlsau (28. Apr 2014 um 14:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 14:26
Will man ganz sicher sein, das der Aufbau der Form vor dem Anzeigen eines Dialogs abgeschlossen ist, hilft ein Application.ProcessMessages vor dem Aufruf des Dialogs.
Hilft aber nicht im OnCreate, denn damit wird der Code dort ja angehalten, aber die Form wird dennoch erst nach dem Ende des OnCreate-Ereignisses fertiggestellt.
(Witzig ist nur, daß z.B. ein ShowModal im OnCreate funktioniert, auch wenn noch nicht alles fertig ist)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 14:46
Will man ganz sicher sein, das der Aufbau der Form vor dem Anzeigen eines Dialogs abgeschlossen ist, hilft ein Application.ProcessMessages vor dem Aufruf des Dialogs.
Hilft aber nicht im OnCreate, denn damit wird der Code dort ja angehalten, aber die Form wird dennoch erst nach dem Ende des OnCreate-Ereignisses fertiggestellt.
(Witzig ist nur, daß z.B. ein ShowModal im OnCreate funktioniert, auch wenn noch nicht alles fertig ist)
Selbstverständlich sollte man im OnCreate generell weder Anzeige-Ereignisse auslösen noch auf andere Formulare (z.B. Datenmodul) zugreifen – lezteres deshalb nicht, weil weitere Formulare gewöhnlich erst erzeugt werden, nachdem das Hauptformular erzeugt wurde und man ansonsten eine Zugriffsverletzung riskiert.

Oben hatte ich mich leider vertan, denn die Reihenfolge der Ereignisse sieht tatsächlich folgendermaßen aus:

1. OnCreate
2. OnShow
3. OnActivate
4. OnPaint
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Ab wann taucht ein VCL-Formular in der Taskleiste auf?

  Alt 28. Apr 2014, 15:21
Toll, Danke

Das hilft mir bestens. Jetzt weiß ich wohl endlich, wie man es richtig macht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:41 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