Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variablen zwischen 2 Formularen übermitteln (https://www.delphipraxis.net/110464-variablen-zwischen-2-formularen-uebermitteln.html)

sventeq 18. Mär 2008 13:17


Variablen zwischen 2 Formularen übermitteln
 
Hallo, ich würde gerne wissen, wie man den Wert einer Variablen eines Formulares in ein anderes Formular übermittelt. Kann mir da jemand helfen? Habe es mit Editfeldern probiert. Das geht auch ganz gut, solange es kein Datum ist und gerade das muss ich im anderen Formular haben. Wäre für jede Hilfe echt dankbar.

LoCrux 18. Mär 2008 13:54

Re: Variablen zwischen 2 Formularen übermitteln
 
Innerhalb der gleichen Applikation gibt es 'ne ganze Latte an Möglichkeiten.

Gib mal Code-Schnipsel....

Über mehrere Apllikationen hinweg --> z.B. Windows-Messages.

mkinzler 18. Mär 2008 14:03

Re: Variablen zwischen 2 Formularen übermitteln
 
Am Besten über Methoden. Am Besten in eigene Unit, welche von allen Formularen eingebunden wird

Xzeer 18. Mär 2008 14:11

Re: Variablen zwischen 2 Formularen übermitteln
 
Du könntest auch einfach eine Globale Variable deklarieren, das ist zwar eine ziemlich verrufene Art, funktioniert aber einwandfrei.

DeddyH 18. Mär 2008 14:14

Re: Variablen zwischen 2 Formularen übermitteln
 
Dann doch besser eine Property.

sventeq 18. Mär 2008 14:40

Re: Variablen zwischen 2 Formularen übermitteln
 
Code-Schnippsel gibt es da noch gar nicht, da ich ja noch keine Möglichkeit gefunden hatte und nur mit Editfelder herum experimentiert hab

DeddyH 18. Mär 2008 14:44

Re: Variablen zwischen 2 Formularen übermitteln
 
Lies Dir mal diesen Thread durch, da wird die Möglichkeit mit Properties beschrieben.

sventeq 18. Mär 2008 14:46

Re: Variablen zwischen 2 Formularen übermitteln
 
Zitat:

Zitat von mkinzler
Am Besten über Methoden. Am Besten in eigene Unit, welche von allen Formularen eingebunden wird

wie muss ich mir das vorstellen mit Methoden in einer Unit? Was müssen die Methoden können? Wie erfolgt dann der Zugriff auf die Variablen aus dem anderen Formular?

sventeq 18. Mär 2008 14:47

Re: Variablen zwischen 2 Formularen übermitteln
 
Zitat:

Zitat von DeddyH
Lies Dir mal diesen Thread durch, da wird die Möglichkeit mit Properties beschrieben.

Danke, mach ich

mkinzler 18. Mär 2008 15:05

Re: Variablen zwischen 2 Formularen übermitteln
 
Zitat:

Zitat von sventeq
Zitat:

Zitat von mkinzler
Am Besten über Methoden. Am Besten in eigene Unit, welche von allen Formularen eingebunden wird

wie muss ich mir das vorstellen mit Methoden in einer Unit? Was müssen die Methoden können? Wie erfolgt dann der Zugriff auf die Variablen aus dem anderen Formular?

Ich meinte eine Methode des Formulares oder über Unit um Kreuzverweise zu vermeiden

LoCrux 19. Mär 2008 01:38

Re: Variablen zwischen 2 Formularen übermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
OK.. maybe not optimal but working.
Eine Loesungsmoeglichkeit ueber Events.

Deine "Main-FormA"

Delphi-Quellcode:
unit Unit_A;

interface

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

type

  TForm_A = class(TForm)
    editA: TEdit;
    procedure editAChange(Sender: TObject);
  private
    { Private-Deklarationen }
    Form_B: TForm_B;
    Procedure GotNotifyFromB(text:String);
  public
    { Public-Deklarationen }
    constructor create(AOwner:TComponent); override;
    destructor destroy; override;
  end;

var
  Form_A: TForm_A;

implementation

{$R *.dfm}

constructor TForm_A.create(AOwner:TComponent);
begin
  inherited;
  Form_B := TForm_B.Create(Self);
  Form_B.DoNotifyA := GotNotifyFromB;
  Form_B.Constraints := Self.Constraints;
  Form_B.Top   := Self.Top;
  Form_B.Left  := Self.Left+Self.Width;
  Form_B.Show;
end;

destructor TForm_A.destroy;
begin
  if Assigned(Form_B) then Form_B.Free;
  inherited;
end;

Procedure TForm_A.GotNotifyFromB(text:String);
begin
  editA.Text := text;
end;

procedure TForm_A.editAChange(Sender: TObject);
begin
  if Assigned(Form_B) then Form_B.editB.Text := editA.Text;
end;

end.
Deine "FormB"

Delphi-Quellcode:
unit Unit_B;

interface

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

type
  TEditNotify = Procedure(text:String) of object;

  TForm_B = class(TForm)
    editB: TEdit;
    procedure editBChange(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
    FDoNotifyA : TEditNotify;
  public
    { Public-Deklarationen }
    property DoNotifyA:TEditNotify read FDoNotifyA write FDoNotifyA;
  end;


implementation

{$R *.dfm}

procedure TForm_B.editBChange(Sender: TObject);
begin
  if Assigned(FDoNotifyA) then FDoNotifyA(editB.Text);
end;

procedure TForm_B.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := False;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz