AGB  ·  Datenschutz  ·  Impressum  







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

Globale Variable im Frame leer?

Ein Thema von Zeithase · begonnen am 17. Mai 2005 · letzter Beitrag vom 17. Mai 2005
Antwort Antwort
Zeithase

Registriert seit: 14. Apr 2005
Ort: Arnstadt
7 Beiträge
 
Delphi 6 Enterprise
 
#1

Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:33
Hallo,

Ich habe einen Splash-Screen, der eine globale Benutzervariable _USERNAME (String, definiert in einer externen globalen Unit) ausliest und setzt. Die MainForm kennt diese Variable ohne Probleme und liest auch den Wert richtig aus. Frame1 sagt zwar nicht, dass die Variable nicht definiert ist, allerdings hat sie keinen Wert dort. Kurze Info zur Initialisierung: zuerst Splash-Screen, dann MainForm, dann wird der Frame1 created. *Nach* dem Frame1.Show wird eine Funktion Frame1.UpdateFrame aufgerufen, die dort definiert ist. Diese soll ein Label mit _USERNAME beschriften, allerdings tut sie es nicht. Habe ich allerdings im Frame einen Button, der die gleiche Funktion ausführt, gibt es keine Probleme und die Variable hat einen Inhalt. Kann mir kurz einer erklären wieso?

Es grüßt,
der Zeithase.
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94), brit. Bühnenautor u. Filmproduzent
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:35
Moin!

Wird die Frame schon beim hochfahren angelegt, da sie im Designer auf einer Form liegt? Ausgelöst durch das "AutoCreateForm" in den Projektoptionen? Schonmal in die .DPR geschaut?

MfG
Muetze1
  Mit Zitat antworten Zitat
Zeithase

Registriert seit: 14. Apr 2005
Ort: Arnstadt
7 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:36
Nein, Frame1 wird definitiv erst bei Form1.OnCreate erzeugt.

Eh, kurzes Addon: Rufe ich die Funktionen Frame1.UpdateFrame und Frame1.Show bei Form1.OnCreate auf, ist die Variable leer.. Rufe ich diese über einen Button auf, gibt es auch keine Probleme. It's magic.
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94), brit. Bühnenautor u. Filmproduzent
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:39
Moin!

Zitat von Zeithase:
Nein, Frame1 wird definitiv erst bei Form1.OnCreate erzeugt.

Eh, kurzes Addon: Rufe ich die Funktionen Frame1.UpdateFrame und Frame1.Show bei Form1.OnCreate auf, ist die Variable leer.. Rufe ich diese über einen Button auf, gibt es auch keine Probleme. It's magic.
Mag ja sein, das du dort eine 2. Instanz anlegst aber die beim Start angelegte Instanz siehst... ... könnte ja sein.

Und dann ist die Frage, wenn Frame1 auf der Form1 liegt, dann bewirkt ja das alles nix, da im OnCreate der Form die Form selber nicht existiert. Somit kann es sehr gut sein, das dein Anlegen der Frame hinfällig ist. Damit wäre die Vermutung von hierdrüber wieder angebracht: siehst du vielleicht eine im Designer auf der Form platzierte Frame? Diese wird nämlich automatisch instanziiert mit der Form und nicht von dir...

MfG
Muetze1
  Mit Zitat antworten Zitat
Zeithase

Registriert seit: 14. Apr 2005
Ort: Arnstadt
7 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:43
Zitat von Muetze1:
Moin!
Und dann ist die Frage, wenn Frame1 auf der Form1 liegt, dann bewirkt ja das alles nix, da im OnCreate der Form die Form selber nicht existiert. Somit kann es sehr gut sein, das dein Anlegen der Frame hinfällig ist. Damit wäre die Vermutung von hierdrüber wieder angebracht: siehst du vielleicht eine im Designer auf der Form platzierte Frame? Diese wird nämlich automatisch instanziiert mit der Form und nicht von dir...
Nein, in der Form1 liegt nur ein Panel. Das ist gleichzeitig das Parent für den Frame der nicht schon im Designer existiert.

Kurzer Quelltext von Form1.OnCreate:

Delphi-Quellcode:
Frame_Overview := TFrame_Overview.Create(Self);
Frame_Overview.Parent := MainPanel;
Frame_Overview.UpdateFrame(0);
Frame_Overview.Show;
Es grüßt,
der Zeithase.
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94), brit. Bühnenautor u. Filmproduzent
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:50
Moin!

Und schonmal mit einem Brechpunkt in der UpdateFrame() drinne gestanden und nachgeschaut in der darin getätigten Zuweisung, das die Variable was enthält (was sie ja deiner Aussage nach tuten tun soll...

Wenn die Variable da leer ist - schonmal überprüft, das diese Variable _USERNAME nicht vielleicht doppelt vorhanden ist - oder ein Element so heisst? Ansonsten auch schonmal in der Frame bei nicht laufendem Projekt mit gedrückter STRG-Taste auf den Variablennamen _USERNAME geklickt um festzustellen wo der Compiler die Deklaration gefunden hat?

Das Show() bringt eh nix und ist im Normalfall sogar überflüssig.

MfG
Muetze1
  Mit Zitat antworten Zitat
Zeithase

Registriert seit: 14. Apr 2005
Ort: Arnstadt
7 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Globale Variable im Frame leer?

  Alt 17. Mai 2005, 11:55
Hi,

_USERNAME gibt es nur einmal und zwar in ac_global.pas -- das erkennt auch mein liebes Delphi mit einem STRG-Klick auf die Variable im Frame. Fehler entdeckt - UpdateFrame sollte man schon in OnShow tun, denn die SplashForm hatte ich nach der MainForm created.

Trotzdem Danke,
Hannes.
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94), brit. Bühnenautor u. Filmproduzent
  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 21:35 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