![]() |
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 ? |
AW: zwischen Forms wechseln
Parent oder Owner?
|
AW: zwischen Forms wechseln
Versuch mal, Dir im OnShow des aufgerufenen Formulars Screen.ActiveForm zu merken.
|
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. |
AW: zwischen Forms wechseln
Zitat:
Habe mal so rumgespielt :
Delphi-Quellcode:
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.
(Sender as TForm).Name := AufrufFormName;
(Sender as TForm).Show; |
AW: zwischen Forms wechseln
Erweitere die Form um eine Prozedur, der du den Caller übergibst
|
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. |
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 |
AW: zwischen Forms wechseln
Man könnte auch die Show-Methode entsprechend Überladen
|
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:
dann läuft alles wie gewünscht.
frm1.AufrufForm := self;
SetFocus ist übrigens auch mit Vorsicht zu geniessen. So gehts allerdings (aus der aufgerufenen Form heraus) :
Delphi-Quellcode:
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-)
AufrufForm.BringToFront;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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