AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FormActivate wird mehrfach ausgeführt

Ein Thema von kdf · begonnen am 11. Dez 2023 · letzter Beitrag vom 12. Dez 2023
Antwort Antwort
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
492 Beiträge
 
Delphi 12 Athens
 
#1

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 10:12
Du könntest im FormActivate auch OnActivate auf nil setzen. Dann wird es nur einmal ausgeführt und weitere Variablen sind überflüssig.
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.241 Beiträge
 
Delphi 12 Athens
 
#2

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 11:33
Du könntest im FormActivate auch OnActivate auf nil setzen. Dann wird es nur einmal ausgeführt und weitere Variablen sind überflüssig.
Das sind dann Ursachen, die man bei Problemen nie wieder findet. Würde ich eher vermeiden.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 12:07
Hallo,
ich mache das auch so (OnActivate := nil).
Das steht bei jedem Formular in der ersten Zeile.

Und das wissen alle.

Es führt eher zu Irritationen, wenn FormActivate mehrfach aufgerufen wird.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.241 Beiträge
 
Delphi 12 Athens
 
#4

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 12:20
Es führt eher zu Irritationen, wenn FormActivate mehrfach aufgerufen wird.
Naja, das ist doch der Zweck von FormActivate.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#5

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 12:20
Es führt eher zu Irritationen, wenn FormActivate mehrfach aufgerufen wird.
Das würde ich jetzt nicht unbedingt sagen. Z.B. ist eine zumindest von mir häufig verwendete Funktionalität in FormActivate ein Refresh von DataSets wenn sie im Browse-Modus sind.

Ich würde sogar so weit gehen zu behaupten, dass eine Funktionalität, die nur beim ersten Activate ausgeführt werden soll, vielleicht gar nicht im richtigen Event platziert ist. Falls doch, wäre der bereits erwähnte Ansatz mit einem Flag wesentlich aussagekräftiger und auch flexibler.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 12:45
"so weit" finde ich das gar nicht.
In einem Projekt überschreibe ich häufig die Methode "Loaded" wenn es passieren soll wenn die Controls alle fertig geladen sind. Für Instanziierungen oft AfterConstruction.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 13:32
Die Form-DFM wird standardmäßig im Constructor geladen.
OnCreate wird im AfterConstruction aufgerufen. (ganz früher, bzw. bis vor Kurzem, als es noch OldCreateOrder=True gab, da war OnCreate am Ende des Constructors)

Wenn man etwas hat, das sich unbedingt ans FormHandle hängen muß, dann besser CreateWnd oder CreateWindowHandle überschreiben und dort rein.
Während die Form-Instanz existiert, kann das Handle (WindowControl) freigegeben werden. (z.B. wenn man StayOnTop ändert)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
kdf

Registriert seit: 3. Jul 2011
128 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 19:08
Mit der Boolschen Variablen dafür sorgen, dass Activate nur einmal ausgeführt wird, funktioniert soweit gut.

K.-D.
Delphi 6 Prof., Delphi 10 Seattle Prof., IBO 4, IBO 5, Firebird 2.5, Windows 10 Prof., Windows 11 Prof.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
622 Beiträge
 
Delphi XE6 Enterprise
 
#9

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 13:31
Ich würde sogar so weit gehen zu behaupten, dass eine Funktionalität, die nur beim ersten Activate ausgeführt werden soll, vielleicht gar nicht im richtigen Event platziert ist. Falls doch, wäre der bereits erwähnte Ansatz mit einem Flag wesentlich aussagekräftiger und auch flexibler.
Will man etwa die Aktion ausführen, während das Formular bereits angezeigt wird, dann bietet sich Activate an (mit einer privaten Boolean Variable "FirstActivation" o.ä. dafür sorgen, dass der Code nur beim ersten Activate ausgeführt wird). Oder man benutzt ein eigenes Event "AfterShow" oder so, und triggert das per PostMessage als letzte Anweisung in FormShow.
  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 02:09 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