Autor Beitrag
Bäääm
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: Di 05.02.08 20:50 
Hi

habe schon wieder ein Problem.

Ich habe in Form2 eine ComboBox. Dort stelle ich ein Limit ein. Angenommen 100.
Dann möchte ich Form2 beenden, aber die Einstellung weiterhin behalten, sodass ich
es in Form1 verwenden kann.

Vorstellen kann man sich das so.

Form2 sind Spieleinstellungen meines Spiels Böse Eins.
Das Limit 100 wird ausgewählt und dann klicke ich auf den Button "okay".
In Form1, also im wirklichen Spiel soll dieses Limit weiterhin verwendet werden.
Was muss ich in diesen Okay Button schreiben, damit er die Werte übernimmt?!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 05.02.08 20:58 
Definiere eine globale Variable in der Hauptunit (unter Form: TForm1). Auf diese Variable kannst du auch in deiner anderen Unit zugreifen, wenn du sie einbindest, wo auch die anderen Units eingebunden werden.

Jetzt kannst du einfach die Variable zuweisen, und sie im Hauptformular verwenden.
Bäääm Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP
Delphi 7 Enterprises, Delphi 2005 Prof.
BeitragVerfasst: Di 05.02.08 21:01 
Wie funktioniert das mit den Werten in der Combobox?
Das sind ja Strings.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 05.02.08 21:11 
Einfach in Form1 folgendes schreiben, F9 drücken, OK klicken, nochmal F9 drücken, fertig:
ausblenden Delphi-Quelltext
1:
Form2.myCombobox.Text					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 05.02.08 21:20 
Du musst die eingegebene Zahl in einen Integer umwandeln (siehe StrToInt). Dann kannst du den Wert einfach einer globalen Variable übergeben, die du auch als Integer definierst.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 05.02.08 22:42 
o_O 1. Kann er auch String-Variablen global deklarieren, 2. kann er direkt auf die Combobox zugreifen.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 05.02.08 22:44 
hm... 1. will er es gar nicht als String speichern (ist ein Limit, also eine Zahl), und 2. ist es schneller, nicht bei jeder überprüfung eine Combobox auszulesen und deren Inhalt schließlich in einen Integer zu konvertieren.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 05.02.08 23:02 
user profile iconYogu hat folgendes geschrieben:
hm... 1. will er es gar nicht als String speichern (ist ein Limit, also eine Zahl), und 2. ist es schneller, nicht bei jeder überprüfung eine Combobox auszulesen und deren Inhalt schließlich in einen Integer zu konvertieren.


Und 3) Will er Form2 schließen.
user profile iconBäääm hat folgendes geschrieben:

Dann möchte ich Form2 beenden, aber die Einstellung weiterhin behalten, sodass ich es in Form1 verwenden kann.


mfG,
Daniel

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 05.02.08 23:20 
3) Gar kein Problem. Die Werte in der Combobox bleiben erhalten.
2) Wo ist das Problem, wenn er folgendes in Unit1 macht:

ausblenden Unit1
1:
2:
3:
4:
5:
var
  Limit: Integer;

// ... //
Limit := StrToInt(Form2.Combobox1.Text);


Dann muss er es nicht mehr mehrmals auslesen.

1) dito.

Es kommt eben drauf an, wie oft er noch auf den Wert zugreifen will und wo.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 06.02.08 07:37 
Hi
Vielleicht hilft eine etwas allgemeine Erklärung weiter. De Frage nach Formübergreifenden Variablen taucht ja immer wieder auf. Im allgemeinen ist es schon richtig, die Hauptform zu benutzen, aber besser ist der Datencontainer. Ich lege hier immer die Variablen ab, die ich benötige, um mit anderen Forms Werte und Informationen zu tauschen. Im Projekt unter Optionen lege ich fest, das der Datencontainer zuerst gestartet wird, danach die Hauptform mit der Vorbesetzung der Variablen im onCreate.
Die Variablen werden unter Public des Datencontainers z.B TMyDatamodul deklariert und können so in allen Forms mit MyDataModul.MyVar benutzt werden.
Bei der Compilierung wird mit einer Frage und deren Bestätigung automatisch die Unit eingebunden. Durch die Benutzung von Datamodulen verhindert man auch, das es ein unübersichtliches kreuz und quer in den Uses-Klauseln gibt.
Kommen wir nun zur Geschwindigkeit. Es ist unerheblich, ob eine Zahl in einen String oder ein String in eine Zahl gewandelt wird, solange dies nicht in einer Schleife geschieht.
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....