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
Seite 1 von 2  1 2      
kdf

Registriert seit: 3. Jul 2011
118 Beiträge
 
Delphi 10 Seattle Professional
 
#1

FormActivate wird mehrfach ausgeführt

  Alt 11. Dez 2023, 20:52
Delphi-Version: 10 Seattle
Hallo,

ich habe in der Annahme, dass FormActivate nur einmal bei der Aktivierung des Formulars ausgeführt wird, in einem Formular einige Einstellungen in FormActivate vorgenommen.

Durch folgenden Code wird FormActivate wieder ausgeführt, obwohl das Formular bereits aktiv ist. Die IB_Richedit befindet sich in diesem Formular.
Das ist doch nicht richtig, oder?

In diesem Fall verhinderten die Anweisungen in FormActivate die Änderung der Schrift. Ich habe jetzt eine Variable activ:boolean eingebaut, die nach dem
ersten Durchlauf true gesetzt wird. Damit funktioniert mein Gebilde. Es wäre aber doch interessant zu wissen, warum das so ist.


Delphi-Quellcode:
procedure TFMain.Schrift1Click(Sender: TObject);
begin
if PopupMenueFonts1.PopupComponent is TIB_Richedit then
with TIB_Richedit(PopupMenueFonts1.PopupComponent) do
 begin
  FontDialog1.Font.Assign(SelAttributes);
     if FontDialog1.Execute then
      begin
        DataSource.Dataset.Edit;
        SelAttributes.Assign(FontDialog1.Font);
      end;
  end;
end;
Delphi 6 Prof., Delphi 10 Seattle Prof., IBO 4, IBO 5, Firebird 2.5, Windows 10 Prof.

Geändert von TBx (12. Dez 2023 um 04:28 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
252 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FormActivate wird

  Alt 11. Dez 2023, 21:19
So wie ich das weiß (ich bin vollkommener Laie) kann ein Activate mehrmals passieren, man startet ein weiteres Programm, dann ist das eigene nicht mehr aktiv. Dann holst du dein Programm wieder in den Vordergrund (wieder aktiv) und so weiter und so fort.

Nur einmal wird nach meinem Wissen das FormCreate ausgeführt.

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FormActivate wird mehrfach ausgeführt

  Alt 11. Dez 2023, 21:25
Form.OnActivate wird immer aufgerufen, wenn das Fenster, "innerhalb" deines Programms, des Eingabefokus bekommt.
(leider nicht, wenn er von einem fremden Programm zurück kommt -> hierfür siehe TApplicationEvents.OnActivate)

Und nun rate mal, was passiert, wenn dein Dialog auf- und wieder zu geht ... der Fokus geht weg und kommt zurück.

Tipp: OnCreate oder notfalls OnShow.


@H.Bothur: Fast, aber leider ist es nicht ganz so, wie man es sich denkt / erhofft.
Dieses Event gilt leider "nur" innerhalb der VCL, dieses Programms, aber per se hast'e es schon richtig vermutet.



PS: Die Version zu setzen war gut, aber niemals beim Ersten Post auf "Zurück", weil dann erstellst'e den Post/Thread neu.
-> besser den Bearbeiten-Knopf und darin erstmal auf "Erweitert" klicken.

Und vielleicht würde sich auch ein [DELPHI]...[/DELPHI] um deinen Code ganz gut machen.

Bonus-Tipp: Vergiss besser sofort wieder, dass es es WITH 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 (11. Dez 2023 um 21:33 Uhr)
  Mit Zitat antworten Zitat
kdf

Registriert seit: 3. Jul 2011
118 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: FormActivate wird mehrfach ausgeführt

  Alt 12. Dez 2023, 09:29
OK, danke für die Info.

Muß mir mal überlegen, ob ich das anders schreiben kann.

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

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#5

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.
Bernd
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#6

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.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

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
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#8

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.014 Beiträge
 
Delphi 12 Athens
 
#9

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.380 Beiträge
 
Delphi 11 Alexandria
 
#10

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
Antwort Antwort
Seite 1 von 2  1 2      


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 06:16 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