Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Variablenübergabe (https://www.delphipraxis.net/102697-variablenuebergabe.html)

wireless 2. Nov 2007 15:55


Variablenübergabe
 
Hallo Gemeinde,
folgendes Problem;
Ich habe in einem Projekt 2 Formulare und möchte eine Variable von einem Formular zum andern Formular übergeben, also im Hauptformular einlesen und im Unterformular auswerten.

Meine Frage --> wie kann ich diese Variable übergeben???

freundliche Grüße

Sigi der wireless

RavenIV 2. Nov 2007 15:59

Re: Variablenübergabe
 
Du schreibst bei den uses des Formulars jeweils das andere Formular rein.
Dann kannst du von Formular2 auf Formular1.Variablenname zugreifen und anderstrum.
Natürlich mussen die Variablen im public-Bereich deklariert sein..

wireless 2. Nov 2007 16:02

Re: Variablenübergabe
 
Danke, probier ich.

Habe ich wahrscheinlich bisher nur vergessen bei den uses die beiden Formulare miteinander bekannt zu machen.

freundliche Grüe

Sigi wireless

RavenIV 2. Nov 2007 16:04

Re: Variablenübergabe
 
Du musst es aber vermutlich ins "untere" uses eintragen, das uses nach implementation.

wireless 2. Nov 2007 18:47

Re: Variablenübergabe
 
Funktioniert nicht.
Wie trage ich das Form2 bei den unteren uses in Unit1 ein?

In der unit2 akzeptiert er aber:

Form2.edit1 := Form1.edit1;

macht es aber nicht ...

???

wireless

DeddyH 2. Nov 2007 18:50

Re: Variablenübergabe
 
Du meintest sicherlich
Delphi-Quellcode:
 Form2.edit1.Text := Form1.edit1.Text;

wireless 2. Nov 2007 19:00

Re: Variablenübergabe
 
Hab ich nicht gemeint aber probiert.
Funktioniert aber auch nicht...

dominikkv 2. Nov 2007 19:03

Re: Variablenübergabe
 
was heißt funktioniert nicht? fehlermeldung?
und trag die uses unter implementation ein.

mkinzler 2. Nov 2007 19:03

Re: Variablenübergabe
 
Was heißt geht nicht? Vielleicht fehlt nur ein
Delphi-Quellcode:
Form2.Update;

DeddyH 2. Nov 2007 19:04

Re: Variablenübergabe
 
Was willst Du denn mit der Zuweisung einer Komponente an eine andere bezwecken? :gruebel:

wireless 3. Nov 2007 07:19

Re: Variablenübergabe
 
Ich möchte eine Variable in einem Formular eingeben und in einem anderen Formular weiterverarbeiten.

dominikkv 3. Nov 2007 08:51

Re: Variablenübergabe
 
Delphi-Quellcode:
unit Meine_ERSTE_Unit;

interface

type
  TForm1 = class(TForm)
  private
    Mein_privates_Feld: String; // Hier kann man nicht von außen zugreifen
  public
    Mein_öffentliches_Feld: String; // Hier schon
    property Feld: String read Mein_privates_Feld write Mein_privates_Feld;
      // Mit dem hier greife ich dann doch auf das erste Feld zu
  end;

var
  Form1: TForm1;
  Globale_Variable: String; // einfach eine globale Variable

implementation

// Nur wenn du auch auf Meine_ZWEITE_Unit zugreifen willst:
uses
  Meine_ZWEITE_Unit;

// usw
Delphi-Quellcode:
unit Meine_ZWEITE_Unit;

interface

// blablabla

implementation

uses
  Meine_ERSTE_Unit; // jetzt kennt diese Unit unsere erste Unit

procedure WasWeisIch;
begin
  showmessage(Globale_Variable);
  showmessage(Form1.Mein_öffentliches_Feld);
  showmessage(Form1.Feld);
end;
Der Ort wo uses mit der Unit steht entscheidet auch wo du diese Unit nutzen kannst.
Wenn du zB die Unit unter interface bekannt gibst iste diese in der ganzen Unit zu sehen, wenn due Unit im Implemantation-Bereich steht kannst du auch nur im Implementation-Bereich darauf zugreifen.

Es dürfen aber nicht beide Unit jeweils in der anderen Unit im Interface stehen, da es sonst eine Zirkuläre Unit-Referenz gibt.

Chemiker 3. Nov 2007 08:53

Re: Variablenübergabe
 
Hallo wireless,

vielleicht hilft ein Beispiel weiter.

Also einmal das Hauptformular:

Delphi-Quellcode:
unit frmMainMenu;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  THautFormular = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    vString: String;  // <------- Die Variable die weitergegeben soll.
  end;

var
  HautFormular: THautFormular;


implementation

uses frmunterformular;

{$R *.dfm}

procedure THautFormular.Button1Click(Sender: TObject);
begin
  vString:= Edit1.Text; // <--------------- Text in die Variable abspeichern.
  Edit1.Clear;
end;

procedure THautFormular.Button2Click(Sender: TObject);
begin
  Unterformular.Show; // <---------------- Unterformular aufrufen
end;

procedure THautFormular.Button3Click(Sender: TObject);
begin
  Edit1.Text := vString; // <-------- Nachdem die Variable im Unterformular geändert worden ist.
end;

end.
Nun das Unterformular:

Delphi-Quellcode:
unit frmunterformular;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TUnterformular = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Unterformular: TUnterformular;

implementation

uses frmMainMenu;


{$R *.dfm}

procedure TUnterformular.Button1Click(Sender: TObject);
begin
  Edit1.Text := HautFormular.vString;  // <-------- Die Variable im TEdit anzeigen.
end;

procedure TUnterformular.Button2Click(Sender: TObject);
begin
  HautFormular.vString := Edit1.Text; // <-------- Ein veränderter Text in die Variable speichern.
end;

end.
Roter Kasten
Bis bald Chemiker

wireless 3. Nov 2007 11:51

Re: Variablenübergabe
 
Hallo Gemeinde,

danke für die Hilfe, manchmal sieht man den Wald vor lauter Bäumen nicht.
Vor allem, wenn man permanent irgendwas ändert und dann die richtig übergebene Variable noch überschreibt und an der falschen Stelle ausliest.
Jetzt weiß ich endlich, wie man mit showmessage eine Variable ausgibt. Das hat mir gezeigt, dass ich die Variable überhaupt ÜBERGEBEN habe!

freundliche Grüße

Sigi -- wireless


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