Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Auf bisher nicht aufgerufene Forms zugreifen (form2.edit) (https://www.delphipraxis.net/60829-auf-bisher-nicht-aufgerufene-forms-zugreifen-form2-edit.html)

Almond 12. Jan 2006 21:22


Auf bisher nicht aufgerufene Forms zugreifen (form2.edit)
 
mhh, ich weiß nicht, wie ich das beschreiben soll.

Ich möchte in einem Aboutfenster unter einer Bedingung, nach dem Laden einer .ini Datei in Form1Create() in der bisdahin nicht aufgerufenen Form2 ein Label verändern.

quasi
Delphi-Quellcode:
Form1.create
loadValuesfromINI (bla);
begin
ini-blabla
//ReadString ('lalalla ....

if xy <> 1 then form2.Label1.caption := 'unregistriert'; // <<< DA passiert der Fehler
und später dann auf Button1.click
form2.Show // About Fenster


Tja, wie mach ich das?
Wie kann ich die Form2.komponenten verändern?

ManuMF 12. Jan 2006 21:33

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
Ich würde Unit1 in Unit2 unter uses (aber in der implementation) hinzufügen und das IF in Form2.Create verschieben.

Gruß,
ManuMF

Almond 12. Jan 2006 21:44

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
mhh, ja, aber da wird die Entscheidung nicht getroffen..
xy is ne lokale Variable innerhalb der function.

Ich hab ne Variable Registered_status in Form1. als Public deklariert.
Wenn ich die in der if Bedingung mit True fülle und im About abfrage und in das Label einfüge, klappt das.
Aber das finde ich umständlich.
Würde gerne ohne Hilfsvariablen die Eigenschaften auf anderen Formen ändern.

malo 12. Jan 2006 21:55

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
Schön, dass wir erfahren, wo der Fehler auftritt. Aber... was für ein Fehler? :roteyes:
Ich hab nämlich leider von meinen Eltern Kristallkugel-Guckverbot bekommen :(

Almond 12. Jan 2006 22:43

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
der Fehler tritt genau dort auf.
in der Zeile, wo ich auf das noch nicht erstellte(?) Forular zugreifen möchte.

http://img58.imageshack.us/img58/9016/errorx3pr.gif

mkinzler 13. Jan 2006 08:11

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
Zitat:

Zitat von Almond
der Fehler tritt genau dort auf.
in der Zeile, wo ich auf das noch nicht erstellte(?) Formular zugreifen möchte.

Du hast den Grund ja schon selber erkannt. Die Variable Form2 ist eine Referenz auf ein Object vom Typ TForm2. Referenzen sind Zeiger. D.h. es existiert zu diesem Zeitpunkt keien Formular, auf welches du zugreifen könntest.

Delphi-Quellcode:
Form1 := TForm1.create; //Erzeugt Formular und weist es Form1 zu
Form2 := TForm2.create; //Erzeugt Formular und weist es Form2 zu
loadValuesfromINI (bla);
begin
ini-blabla
//ReadString ('lalalla ....

if xy <> 1 then form2.Label1.caption := 'unregistriert'; // <<< DA passiert der Fehler
Form2.show;

ManuMF 13. Jan 2006 13:36

Re: Auf bisher nicht aufgerufene Forms zugreifen (form2.edit
 
Zitat:

Zitat von Almond
mhh, ja, aber da wird die Entscheidung nicht getroffen..
xy is ne lokale Variable innerhalb der function.

Ich hab ne Variable Registered_status in Form1. als Public deklariert.
Wenn ich die in der if Bedingung mit True fülle und im About abfrage und in das Label einfüge, klappt das.
Aber das finde ich umständlich.
Würde gerne ohne Hilfsvariablen die Eigenschaften auf anderen Formen ändern.

Es geht auch, wenn du eine Variable global definierst. Dann kannst du problemlos in anderen Units darauf zugreifen.
Das würde ich dann nicht umbedingt Hilfsvariable nennen.

Delphi-Quellcode:
unit Unit1;

...

var XY: Irgendwas;

Form1.Create
XY := Read...

{----------------------------------------}
unit Unit2;

...

implementation

uses Unit1;

Form2.Create
If (XY...
Gruß,
ManuMF


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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