Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variablen Unitübergreifend übergeben (https://www.delphipraxis.net/111099-variablen-unituebergreifend-uebergeben.html)

Mike_ 29. Mär 2008 14:56


Variablen Unitübergreifend übergeben
 
Hi, also ich habe das Problem, dass bei einem Programm von mir eine Variable nicht "Untiübergreifend" weitergegeben wird.

Ich habe a im publicteil als Integer definiert, aber das reicht anscheinend nochnicht um die Variable a aus Unit 1 zu Unit2 zu übergeben... Wie macht man das ?

(a verändert sich im laufe des Programms was Unit 1 macht, also kann ich sie nicht als constante angeben)

Danke für die Hilfe schonmal im voraus !

[edit=SirThornberry]Titel angepasst - nur eine frage pro Thread/Thema - und das "neu" entfernt - Mfg, SirThornberry[/edit]

DeddyH 29. Mär 2008 14:58

Re: Variablen Unitübergreifend übergeben
 
Ich würde sie als Property des Formulars definieren.

MrKnogge 29. Mär 2008 15:01

Re: Variablen Unitübergreifend übergeben
 
Oder du erstellst eine neue Unit beispielsweise "globals.pas" und definierts in ihr deine globalen Variablen. Diese Unit bindest du dann in alle anderen units ein, die diese Variablen benötigen.

dominikkv 29. Mär 2008 15:17

Re: Variablen Unitübergreifend übergeben
 
wenn du sie im "publicteil" deklariert hast ist das immer ein Feld einer klasse, du musst also zuerst auf die klasse, dann auf die variable zugreifen, also
instanz.variable := 1;

Mike_ 29. Mär 2008 15:25

Re: Variablen Unitübergreifend übergeben
 
Danke, ich hab es mit

Delphi-Quellcode:
Edit1.Text := IntToStr(Unit1.Form1.a)
hinbekommen !

Jetzt aber meine Frage... da die Unit2 das Optionsfenster ist habe lasse ich die Werte beim öffnen des Fensters auslesen

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
Edit1.Text := IntToStr(Unit1.Form1.a);
end;
Das Fenster lasse ich mit einem form2.hide verschwinden...

Das PRoblem ist jetzt das sich mein a nur einmal "aktualisiert" und er das a nicht immerwieder bei form2.show aktualisiert !

Ich habe mir dann gedacht das vllt.

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
Edit1.Text := IntToStr(Unit1.Form1.a);
Edit1.Refresh;
end;
daran etwas ändert... tut es aber leider nicht...

Meine Frage daher, wie kann ich im Edit1.Text das aktuelle a anzeigen lassen OHNE extra einen button bei dem Optionsfenster wie "Refresh" einbauen zu müssen ?!

Die Muhkuh 29. Mär 2008 15:26

Re: Variablen Unitübergreifend übergeben
 
Hi,

ich kombiniere die von Detlef und Christian vorgeschlagenen Ideen.

Ich hab eine Unit (z.B. uglobals.pas), dort ist eine Klasse drin, welche wiederum Propertys besitzt.

Mike, schreib das nicht ins OnCreate, sondern ins OnShow ;)

SirThornberry 29. Mär 2008 16:28

Re: NEW|Variablen Unitübergreifend übergeben & Case...of
 
bitte nur eine Frage pro Thread :-) für eine weitere Frage, mache bitte ein neues Thema auf. Danke :-D


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