AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden
Thema durchsuchen
Ansicht
Themen-Optionen

Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

Ein Thema von Darlo · begonnen am 14. Jan 2016 · letzter Beitrag vom 14. Jan 2016
Antwort Antwort
Seite 1 von 3  1 23      
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 12:56
Hallo zusammen,

ich erzeuge mit folgenden Code Formulare
Delphi-Quellcode:
if not assigned(frmContentMantel) then
  Application.CreateForm(TfrmContentMantel, frmContentMantel);
Jetzt möchte ich an einer anderen Stelle überprüfen ob das das Formular erzeugt ist. Das mache ich so
Delphi-Quellcode:
if not assigned(Application.FindComponent(formListe[n]) as TForm) then
begin
  continue;
end;
Das komische ist, das funktioniert unter Windows und OS X wunderbar. Nur unter iOS wird das continue; ausgeführt.

Kann mir jemand helfen?

Gruß
Philip
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 13:22
Vermutlich wurde RealCreateForms noch nicht aufgerufen. Bei Windows und OSX passiert das direkt beim Application.Run, aber unter iOS und Android kommt das erst später. Solange diese Methode nicht aufgerufen wurde, erzeugt Application.CreateForm die Instanzen nicht wirklich.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 13:29
Warum benutzt du Application.CreateForm?

Ich würde das niemals für dynamische Forms benutzen.
Und was passiert wohl, wenn Embarcadero mal auf die Idee kommt diesen Forms z.B. einen anderen Owner verpasst?

[edit]
Hey, da gibt es sogar einen passenden letzten Absatz dort.
$2B or not $2B

Geändert von himitsu (14. Jan 2016 um 13:35 Uhr)
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 13:48
Hmm,
TApplication.CreateForm
Philip
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 13:55
Wieso "Hmmm?" ?

Ach dort steht "Tipp: CreateForm erstellt das angegebene Formular nicht sofort." .
$2B or not $2B
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 14:06
Verstehe noch nicht warum man Application.CreateForm nicht nehmen sollte.
Folgender Code ändert leider auch nix an dem Problem...
Delphi-Quellcode:
if not assigned(frmContentMantel) then
      begin
        Application.CreateForm(TfrmContentMantel, frmContentMantel);
        //frmContentMantel := TfrmContentMantel.Create(Application);
        Application.RealCreateForms;
      end;
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 14:16
Verstehe noch nicht warum man Application.CreateForm nicht nehmen sollte.
Folgender Code ändert leider auch nix an dem Problem...
Delphi-Quellcode:
if not assigned(frmContentMantel) then
      begin
        Application.CreateForm(TfrmContentMantel, frmContentMantel);
        //frmContentMantel := TfrmContentMantel.Create(Application);
        Application.RealCreateForms;
      end;
frmContentMantel? Wo ist das definiert? Lokal? -> ARC!
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 14:18
In der Hilfe von http://docwiki.embarcadero.com/Libra...ealCreateForms steht:
Um zur Laufzeit weitere Formulare zu erstellen, verwenden Sie FMX.Forms.TForm.Create, FMX.Forms3D.TForm3D.Create oder TForm1.Create.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 14:20
Delphi-Quellcode:
implementation
uses
  contentMantel{frmContentMantel};
Habe probiert das Form automatisch erzeugen zu lassen. Da funktioniert das Application.FindComponent('frmContentMantel') auch nicht.
Philip
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#10

AW: Form zur Laufzeit erzeugen und mit assigned prüfen ob vorhanden

  Alt 14. Jan 2016, 14:23
Wie Maverik schon schrieb. Wenn das Form lokal erzeugt wird und du dann von einer anderen Stelle versuchst darauf zuzugreifen, ist es von ARC möglicherweise schon wieder zerstört worden. Darum wird es mit FindComponent auch nicht gefunden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 12:08 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