![]() |
Form.Show nur beim ersten Aufruf mit Effekt unter Vista/7
Unter Vista/7 wird beim erstmaligen Aufrufen einer Form per Form1.Show (sowie beim Starten von Programmen) das Fenster mit einem kleinen Effekt angezeigt (schnelles Einblenden und lechtes Vergrößern). Das hat keine besondere Funktionalität, sieht aber einfach nett aus.
Das Problem ist nun, dass dieser Effekt nur beim ersten Show-Aufruf erscheint. Schließe ich diese Form nun mit Close oder Hide und rufe sie danach wieder mit Show auf, erscheint sie einfach ohne diesen Effekt. Ich würde nun gern wissen, woran das liegt, dass dieser Effekt nur beim ersten Aufruf erscheint und wie man es erreichen kann, dass der Effekt immer verwendet wird. Hoffe, jemand hat eine Idee... |
Re: Form.Show nur beim ersten Aufruf mit Effekt unter Vista/
Was passiert wenn du das Formular freigibst und neu erzeugst und dann nochmal anzeigst.
Ich vermute das sich für den Fenster-Handle gemerkt wird ob der effekt schon angewand wurde. |
Re: Form.Show nur beim ersten Aufruf mit Effekt unter Vista/
Das funktioniert dann zwar, aber ich möchte das Fenster nicht freigeben, weil ich sonst nicht auf dessen Elemente zugreifen kann, wenn es nicht sichtbar ist (was ich stellenweise tun muss).
Kann ich stattdessen irgendwie die Information zurücksetzen, dass der Effekt schon angewandt wurde? Flag o.ä.? |
Re: Form.Show nur beim ersten Aufruf mit Effekt unter Vista/
Leg Deine Routine aus dem OnShow mal in das OnPaint-Ereigniss
|
Re: Form.Show nur beim ersten Aufruf mit Effekt unter Vista/
Welche Routine? :?
|
Re: Form.Show nur beim ersten Aufruf mit Effekt unter Vista/
Also nach ein bisschen Herumgespiele, habe ich das jetzt so:
Delphi-Quellcode:
Damit scheint das zu klappen. Irgendwie finde ich das aber unschön. Zudem ist das bestenfalls ein Workaround und ich kann das leider nicht auf meine MainForm anwenden, die ich in Verbindung mit CoolTrayBar verschwinden und erscheinen lasse. Da kommen Zugriffsverletzungen.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin Free; Application.CreateForm(TForm1, Form1); end; Also ich bin mir ziemlich sicher, dass man da irgendwie (per Windows API?) ein Flag ändern können müsste, damit der Effekt beim Anzeigen immer wieder gezeigt wird. Nur leider habe ich jetzt nach langem Googeln nichts dazu gefunden (mir fehlen wohl die richtigen Suchbegriffe). Gibt es jemanden, der eine Vermutung hat, wie das gehen könnte und mit besseren Suchbegriffen dazu was findet? Wäre klasse! :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz