| Autor |
Beitrag |
1Stein
      
Beiträge: 30
|
Verfasst: Sa 15.02.03 23:12
Hi leutz naja bin nen absoluter newb in Delphi hab heut erst angefangen hab schon n paarprogs geschrieben und hab mich jetzt an nen kleines Quiz gesetzt auf jeden fall weiß ich net wie man Formübergreifende Variablen erstellt wenn mir da jemand helfen kann wäre das schön und wo ich gerade mal beim schreiben bin ich würd auch gern mal wissen wie man ein Bild einbinded (Delphi 7)
Sorry ich glaub das is für die meisten ein Witz aber wie gesagt ich hab heut erst angefangen
Moderiert von Tino: Titel geändert.
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 15.02.03 23:29
Beispiel: du möchtest die Variable "my_var", welche Du in Form1 verwendest, auch in Form2 verwenden.
Der Kopf von Unit1 (in der Form1 enthalten ist), sieht dann so aus:
Quelltext 1: 2: 3: 4: 5: 6: 7:
| {...} type TForm1 = ... {...} var Form1: TForm1; my_var : STRING; {...} |
Um my_var nun auch in der für Form2 zuständigen Unit "Unit2" zu verwenden, schreibst Du Unit1 (in der die Variable ja deklariert wurde) in die USES-Klausel der Unit2. So:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, unit1; //<<<---- DA STEHT's
type TForm2 = class(TForm) {...} |
Auf die Variable my_var kannst in Unit2 jetzt ganz normal zugreifen.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: Sa 15.02.03 23:32
 sieht alles n bissl kompliziert aus  aber ich tests mal fehlt mir nurnoch das bild
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: Sa 15.02.03 23:45
jetzt habischs kapiert  das mit dem bild habsch jetzt auch
wie kann ich das ganze jetzt in nem Label wieder ausgeben?
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: So 16.02.03 13:37
| 1Stein hat folgendes geschrieben: | | wie kann ich das ganze jetzt in nem Label wieder ausgeben? |
Was willst du in einem Label wieder ausgeben? Vielleicht hilft das hier:
Label1.Caption := 'Delphi-Forum.de!';
Gruß
TINO
PS: Bitte in Zukuft für jede neue Frage ein neues Topic erstellen!
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 13:50
jaja soweit weiß ich das auch aber mein problem liegt darin das ich die variable aus Form2 ausgeben will der das aber net will er schreibt immer Form3 statt dem Namen der in Form2 eingegeben wurde
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: So 16.02.03 14:00
| 1Stein hat folgendes geschrieben: | | jaja soweit weiß ich das auch |
Wo her sollte ich das wissen?
| 1Stein hat folgendes geschrieben: | | aber mein problem liegt darin das ich die variable aus Form2 ausgeben will |
Quelltext 1:
| Label1.Caption := Form2.Variable; |
Gruß
TINO
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 14:07
kA vieleicht weil das thema um Formübergreifende Varis geht? naja egal thx erstmal
... Jetzt schreibt er Form2 in das leben (ein Fortschritt  )
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 16.02.03 14:28
Wenn Du Dein Problem klarer beschreiben würdest, könnten wir Dir auch viel besser helfen. Wie wäre es denn, wenn Du mal den Code, den Du bisher hast, hier postest?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 14:38
Also wenn du das willst hier erstmal der von Form2
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus;
type TForm2 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; MainMenu1: TMainMenu; Programm1: TMenuItem; NeuesSpiel1: TMenuItem; N1: TMenuItem; Exit1: TMenuItem; Ansicht1: TMenuItem; Optionen1: TMenuItem; N2: TMenuItem; Hilfe1: TMenuItem; N3: TMenuItem; Credits1: TMenuItem; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Hilfe1Click(Sender: TObject); procedure Credits1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form2: TForm2; Name: STRING; implementation
uses Unit1, Unit3, Unit4, Unit5;
{$R *.dfm}
procedure TForm2.Button2Click(Sender: TObject); begin close; end;
procedure TForm2.Button1Click(Sender: TObject); begin Name := Edit1.Text; Form3.showModal; close; end;
procedure TForm2.Hilfe1Click(Sender: TObject); begin Form4.show end;
procedure TForm2.Credits1Click(Sender: TObject); begin Form5.show end;
procedure TForm2.Exit1Click(Sender: TObject); begin close; end;
end. |
und hier der von Form3
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63:
| unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, unit2, StdCtrls, Menus;
type TForm3 = class(TForm) Label1: TLabel; Label2: TLabel; MainMenu1: TMainMenu; Programm1: TMenuItem; NeuesSpiel1: TMenuItem; N1: TMenuItem; Exit1: TMenuItem; Ansicht1: TMenuItem; Optionen1: TMenuItem; N2: TMenuItem; Hilfe1: TMenuItem; N3: TMenuItem; Credits1: TMenuItem; procedure FormCreate(Sender: TObject); procedure Hilfe1Click(Sender: TObject); procedure Credits1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form3: TForm3; implementation
uses Unit4, Unit5;
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject); begin label2.caption := Form2.Name;
end;
procedure TForm3.Hilfe1Click(Sender: TObject); begin Form4.show end;
procedure TForm3.Credits1Click(Sender: TObject); begin Form5.show end;
procedure TForm3.Exit1Click(Sender: TObject); begin close; end;
end. |
Nur so neben Bei das soll nen Kleines Quiz werden und derjenige soll begrüßt werden deshalb die Formübergreifende Variable naja
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 16.02.03 15:00
Form2.Name ist nicht die Variable, die Du ansprechen willst. Das ist der Name der Form und nicht die von Dir deklarierte Variable. Versuch es mal mit Unit2.Name statt Form2.Name.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 16.02.03 15:13
Hi,
schreib mal deine Variable "Name" in den public Bereich:
Quelltext 1: 2: 3: 4:
| public { Public-Deklarationen } Name: STRING; end; |
dann kannst du sie in jedem anderen Form einfach per
Quelltext
abrufen.. auch wenn das normalerweise der Name von Form2 währe.. wird halt überschrieben die Variable.
Au'revoir,
Aya
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 15:21
Naja jetzt schreibt er garnix mehr  bin ich schonmal weiter als vorher 
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: So 16.02.03 15:25
Hi,
na ja... wenn er garnix schreibt heißt das einfach das in der Variable kein inhalt ist...
Ruf deine Zeile:
Quelltext 1:
| label2.caption := Form2.Name; |
mal im OnShow auf, nicht im OnCreate!
Au'revoir,
Aya
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 15:34
 thx jetzt funztz
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 16.02.03 15:37
Ich finde es unschön, die Variable "Name" zu überschreiben. Lass sie doch einfach dort, wo sie bei Dir stand und rufe sie mit Unit2.Name auf. Dann kommt es auch zu keiner Kollision mit Eigenschaften der Form.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
1Stein 
      
Beiträge: 30
|
Verfasst: So 16.02.03 16:42
Naja in 2 Jahren interessiert mich sowas vieleich aber im moment bin ich zufrieden sobalt es funktioniert aber trotzdem danke
_________________ 1Stein wäre nie 1Stein geworden wenn 2Stein nicht gewesen wäre
|
|