AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

Ein Thema von Viktorii · begonnen am 10. Aug 2010 · letzter Beitrag vom 11. Aug 2010
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 12:35
Okay, so funktioniert es bei mir auch.

Ich brauche aber die Form als die Instanzvariable. Deswegen habe diese als globale Variable angelegt. Und da kommt die AV.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit2;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  From2: TForm2;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  From2.Show;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 12:37
Die Instanz wird ja auch nirgends angelegt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 12:41
Was für eine AV?

die rät mal und glaubt an was mit "zugriffsverletzung an Adresse $000000**"

Wie soll auch die Form2 von alleine in diese Variable kommen?
(Die VCL hat dafür eine eigene Variable in der Unit von Form2.

Übergib diese Instanz als Parameter, beim Erstellen und vergiß diese globalen Variablen gleich wieder (diese vordefinierten Globalen sind eh ein schlimmer Designfehler)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 13:37
Was für eine AV?

die rät mal und glaubt an was mit "zugriffsverletzung an Adresse $000000**"

Wie soll auch die Form2 von alleine in diese Variable kommen?
(Die VCL hat dafür eine eigene Variable in der Unit von Form2.
Ja, Du hast recht. Habe mir einen Breakpoint gesetzt und mal nachgeschaut. Meine selbst angelegte Variable ist Nil. Auch die globale Variable in der Unit2 ist zu diesem Zeitpunkt Nil.

Übergib diese Instanz als Parameter, beim Erstellen und vergiß diese globalen Variablen gleich wieder (diese vordefinierten Globalen sind eh ein schlimmer Designfehler)
Leider stehe ich hier etwas auf dem Schlauch Wie genau meinst Du das?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 13:42
Schau mal in deine Projektdatei/DPR.

Form2 wird erst nach Form1 erzeugt, also kann sie da noch nicht existieren.

Wenn man etwas mit einem Externen Objekt machen will, dann läßt man es sich am Besten (meistens im Constructor) als Parameter mitgeben, bzw. übergibt es selber (z.B. über einen eigenen Constructor) und verwendet es erst danach dieses Objekt.


Für deinen Fall von Form2.Show; ... setze stattdessen einfach nur .Visible der Form2 (im OI) auf True und fertig.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#6

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 14:03
Wenn ich visible im OI auf true setzen, wird meine zweite Form ja immer angezeigt.

Was ich aber ja möchte, dass beim Start der Anwendung einige Dinge geprüft werden und abhängig davon das zweite Fenster anzeigt wird, oder auch nicht... Und das mache ich in OnCreate der ersten Form...

Oder habe ich da jetzt was falsch verstanden?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#7

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 14:21
Dann nimm das 2. Formular doch aus der automatischen Erstellung heraus und erzeug es bei Bedarf von Hand.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Was wird bei einem unsichtbaren Fenster nach OnCreate ausgeführt

  Alt 11. Aug 2010, 14:33
oder prüfe es im OnCreate der 2. Form,
oder schau im OnCreate der Form2, was Form1 sagt "anzeigen: ja/nein" und setze visible erst dort.

Abgesehn davon würde DeddyHs Vorschlag anwenden, denn wozu soll eine Form erstellt werden, wenn sie eh nicht angezeigt wird?

Ich erzeuge (meißtens abgesehn von der Hauptform) alle selber und zwar immer nur da, wo/wann sie gebraucht/angezeigt werden und gebe sie danach auch wieder frei.
Ein Therapeut entspricht 1024 Gigapeut.
  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 04:58 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