Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Form und Frame kommunikation (https://www.delphipraxis.net/171794-form-und-frame-kommunikation.html)

youuu 25. Nov 2012 21:15

Form und Frame kommunikation
 
Hi ich habe mal eine Frage bezüglich Frames und Forms.

Also ich habe eine Main Form.
Mit dieser erstelle ich eine 2. Form(Second) auf der ein Frame liegt. Das kommunizieren von Form Second und dem Frame ist kein Problem.

Wenn ich nun aber Form Second noch ein 2. mal dazu erstelle, kommuniziert der Frame von Form Second 1 auch mit Form Second 2.
Wie muss ich vorgehen um dies zuverhindern und jeder Frame sein Owner Form kennt?

Sir Rufo 25. Nov 2012 21:33

AW: Form und Frame kommunikation
 
Eigentlich ist das kein Problem.

Zeig mal den Code wo die beiden kommunizieren sollen/wollen

stahli 25. Nov 2012 21:37

AW: Form und Frame kommunikation
 
Hast Du jede Formularinstanz in einer eigenen Variable gespeichert?
Dann müsstest Du beide getrennt ansprechen können.

Falls Du jedoch nach Komponentennamen suchen solltest, könnte es evtl. zu Unklarheiten kommen.

Wie Sir Rufe meinte: Sage mal etwas mehr, was Du genau machst.

Medium 25. Nov 2012 21:39

AW: Form und Frame kommunikation
 
Über den Parent des Frames sollte doch schon eine entsprechend geeignete Referenz zur Verfügung stehen, vorausgesetzt die Frames liegen direkt auf den Formularen, und nicht z.B. in Panels (oder gar Kaskaden von Panels).

youuu 25. Nov 2012 21:41

AW: Form und Frame kommunikation
 
Ja es sind die gleichen Namen :/

Form Second 1 (gleiche Name)+ Frame --> nun soll dieser Frame eine Edit von Form Second 1 auslesen, alleridngs ließt es nun von Form 2 Second das Edit aus.
Form Second 2 (gleiche Name)+ Frame

stahli 25. Nov 2012 21:50

AW: Form und Frame kommunikation
 
Ich vermute, dass Du die Formularinstanzen nicht korrekt verwaltest.
Müsste in etwa so sein:

Delphi-Quellcode:
F1 := TMyForm.Create(Self);
F1.Color := clGreen;
F2 := TMyForm.Create(Self);
F2.Color := clRed;
Über F1.MyFrame... und F2.MyFrame... solltest Du dann beide ansprechen können.
Über die Farben kann man mal schnell kontrollieren, worauf man eigentlich gerade zugreift.

Sir Rufo 25. Nov 2012 22:02

AW: Form und Frame kommunikation
 
Eleganter ist das natürlich zu lösen, wenn die Frames nicht auf die Form zugreifen, sondern wenn die Form dem Frame (über eine Frame-Property) mitteilt worauf zugegriffen werden soll.

Dann ist es dem Frame egal, worin man den einbettet.

himitsu 25. Nov 2012 22:46

AW: Form und Frame kommunikation
 
Zitat:

Zitat von Sir Rufo (Beitrag 1192908)
Eleganter ist das natürlich zu lösen, wenn die Frames nicht auf die Form zugreifen, sondern wenn die Form dem Frame (über eine Frame-Property) mitteilt worauf zugegriffen werden soll.

Dann ist es dem Frame egal, worin man den einbettet.

Genau.

Betrachte das Frame einfach wie ein Edit.

- die Form kann mit dem Frame machen was sie will
- und wenn das Frame etwas mitteilen will, dann bietet es der Form ein passendes Event (ala OnChange), wo sich die Form dann reinhängen kann

youuu 26. Nov 2012 09:29

AW: Form und Frame kommunikation
 
Naja, also.

Ich habe ein Programm, welches Kundendaten verwaltet.
Wenn ich einen Datensatz aufrufe wird das "Second Form" erstellt. Wenn ich einen 2. Datensatz öffne wird wieder ein "Second Form" erstellt.

Ich kann also denen keine 2 unterschiedlichen Namen verpassen, da es ein und die selbe procedure ist.
Das Frame ist in einer Pagecontrol eingebettet mit wiederum einem Virtualstringview, in dem Daten ausgegeben werden, die auf der "Second Form" stehen (Kundennummer wird sich vom Second Form geholt um Daten in VST einzubetten.)

Ich wüsste jetzt also nicht wie ich das Frame als Edit verwenden soll.
Gibts da Tipps für?

Bei einer Form zu Form, übergebe ich immer einefach eine Variable an die 2. Form, die im Privat Bereich deklariert habe.
Aber das geht in einem Frame nicht oder, da ich das Frame ja nicht erst seperat erstelle.

Medium 26. Nov 2012 10:00

AW: Form und Frame kommunikation
 
Delphi-Quellcode:
procedure fraMyFrame.Button1Click(Sender: TObject);
begin
  (Parent as TSecondForm).edSomeEdit.Text := 'foo';
end;
Greift bei mir wunderbar immer nur auf das "TSecondForm" zu, auf dem das Frame auch wirklich liegt.


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