Entwickler-Ecke
Sonstiges (Delphi) - Formübergreifende Variablen erstellen
1Stein - Sa 15.02.03 23:12
Titel: Formübergreifende Variablen erstellen
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.
Christian S. - 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
1Stein - Sa 15.02.03 23:32
:eyecrazy: sieht alles n bissl kompliziert aus :mrgreen: aber ich tests mal fehlt mir nurnoch das bild
1Stein - Sa 15.02.03 23:45
jetzt habischs kapiert :) das mit dem bild habsch jetzt auch :roll:
wie kann ich das ganze jetzt in nem Label wieder ausgeben?
Tino - 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 - 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
Tino - 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 - 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 :evil: :evil:)
Christian S. - 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?
1Stein - So 16.02.03 14:38
Also wenn du das willst hier erstmal der von Form2
Quelltext
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
Quelltext
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
Christian S. - 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.
Aya - 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
abrufen.. auch wenn das normalerweise der Name von Form2 währe.. wird halt überschrieben die Variable.
Au'revoir,
Aya
1Stein - So 16.02.03 15:21
Naja jetzt schreibt er garnix mehr :mrgreen: bin ich schonmal weiter als vorher :mrgreen:
Aya - 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
1Stein - So 16.02.03 15:34
:mrgreen: thx jetzt funztz
Christian S. - 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.
1Stein - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!