Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   zwischen Forms wechseln (https://www.delphipraxis.net/153652-zwischen-forms-wechseln.html)

Hansa 11. Aug 2010 10:35

Delphi-Version: 2005

zwischen Forms wechseln
 
Hi,

habe hier eine Form, die eine andere aufruft. Zu der aufrufenden muss ich wieder zurück. Woher soll die aufgerufene Form aber wissen, wo sie "herkommt" ? Wo stehe ich auf dem Schlauch ?

freak4fun 11. Aug 2010 10:47

AW: zwischen Forms wechseln
 
Parent oder Owner?

DeddyH 11. Aug 2010 10:47

AW: zwischen Forms wechseln
 
Versuch mal, Dir im OnShow des aufgerufenen Formulars Screen.ActiveForm zu merken.

himitsu 11. Aug 2010 10:59

AW: zwischen Forms wechseln
 
Der Aufrufer gibt beim Aufruf den Aufzurufenden sich selber mit und sagt somit dem Aufgerufenem "hey du, du kommst von mir ... falls du noch was willst, dann merk dir meinen Namen (meine Instanz)" .

Der Owner ist nur für die Freigabe des Aufgerufenen zuständig und das muß nicht zwansläufig der Aufrufer (Owner) oder die Eltern (Parent, also der, welcher für die Anzeige zuständig ist) sein.

Hansa 13. Aug 2010 20:54

AW: zwischen Forms wechseln
 
Zitat:

Zitat von himitsu (Beitrag 1041077)
... und sagt somit dem Aufgerufenem "hey du, du kommst von mir ... falls du noch was willst, dann merk dir meinen Namen (meine Instanz)" .

Die aufgerufene will ja was : zurück zu der aufrufenden Form. Himitsus Idee war schon richtig so. Ich merke mir in der aufgerufenen Form, wer sie aufgerufen hat.

Habe mal so rumgespielt :

Delphi-Quellcode:
(Sender as TForm).Name := AufrufFormName;
(Sender as TForm).Show;
SO gehts mal nicht. Wäre wohl auch zu einfach. :wink: Beim jetzigen Stand der Dinge lautet die Frage nur noch : wie komme ich von der aufGErufenen Form auf die zurück, die das gemacht hat. Wobei ich nur den Namen dieser Form kenne.

mkinzler 13. Aug 2010 22:36

AW: zwischen Forms wechseln
 
Erweitere die Form um eine Prozedur, der du den Caller übergibst

Hansa 13. Aug 2010 23:59

AW: zwischen Forms wechseln
 
Caller, was ist das ? :shock: Soll das die aufrufende Form sein ? Falls dem so ist : Form1 ruft Form2 auf. Form2 merkt sich den Namen der aufrufenden Form. Jetzt will Form2 zurück zu der aufrufenden Form1.

Dasselbe Szenario kann aber auch mit Form93 passieren. Auch die geht zu Form2, merkt sich dass sie von Form93 aufgerufen wurde und dann soll es wieder zurück von Form2 zu Form93 gehen. Nicht zu Form1. :shock:

Form2 (die immer gleich bleibt) die weiss jetzt, dass sie von Form1 oder eben Form93 aufgerufen wurde. Genau dahin soll sie zurück. Über den Namen, der in der Variablen "AufrufFormName" gespeichert ist, soll sie genau dahin wieder zurück.

Schorschi5566 14. Aug 2010 00:45

AW: zwischen Forms wechseln
 
Hallo Hansa,

was willst Du denn genau machen?

Also einfach zwischen den Forms hin und herschalten, kann man so machen...

Form1:
Delphi-Quellcode:
unit Main;

interface

uses
  Forms, Classes, StdCtrls, Controls,
  Form2;

type
  TfrmEins = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frmEins: TfrmEins;

implementation

{$R *.dfm}

{ TfrmTemplate }

procedure TfrmEins.Button1Click(Sender: TObject);
begin
  frmZwei.Caller := Self;
  frmZwei.Show; // Form2 aufrufen
end;

end.

...und Form2:
Delphi-Quellcode:
unit Form2;

interface

uses
  Forms, Classes, StdCtrls, Controls;

type
  TfrmZwei = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    FCaller : TForm;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    property Caller : TForm read FCaller write FCaller;
  end;

var
  frmZwei: TfrmZwei;

implementation

{$R *.dfm}

procedure TfrmZwei.Button1Click(Sender: TObject);
begin
  FCaller.SetFocus; // Zurück zu Form1. Zum Beispiel so...
end;

procedure TfrmZwei.Button2Click(Sender: TObject);
begin
  Close; // ...oder so. ;-)
end;

end.

Grüße,
Uwe

mkinzler 14. Aug 2010 07:47

AW: zwischen Forms wechseln
 
Man könnte auch die Show-Methode entsprechend Überladen

Hansa 15. Aug 2010 17:46

AW: zwischen Forms wechseln
 
Man braucht da keine Properties. Ich war aber wohl zu sparsam. 8-) Merkt man sich die komplette aufrufende Form und nicht nur den Namen, so ungefähr :

Delphi-Quellcode:
frm1.AufrufForm := self;
dann läuft alles wie gewünscht.

SetFocus ist übrigens auch mit Vorsicht zu geniessen. So gehts allerdings (aus der aufgerufenen Form heraus) :

Delphi-Quellcode:
AufrufForm.BringToFront;
Wie man dasselbe Szenario nur mit Hilfe des Form-Namens hinbekommt, das ist mir noch nicht klar. Irgendwie denke ich, dass auch das gehen müsste. 8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.
Seite 1 von 2  1 2      

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