Autor Beitrag
AndreM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 122

Win2k, WinXP, Suse 10
D7 Ent
BeitragVerfasst: Mi 24.03.04 19:36 
Moin Community,

ich habe eine kurze Fragen zum Thema MDIChidls. Und zwar rufe ich in meiner Anwendung über ein Chield ein weiteres Chield auf und möchte nun auf das jeweilige HauptChild zugreifen können. Gibt es da irgendeine Möglichkeit das zu realisieren?
Zur Besseren erläuterung habe ich noch folgendes Beispiel.

Ich habe also 2 Chields (Chield1 und Chield2). Auf beiden Chields befindet sich jeweils ein Editfeld. Chield1 wird über einen Button, der sich auf den MainForm befindet, aufgerufen. Chield2 rufe ich dann über einen weiteren Button, der sich auf Chield1 befindet auf. Jetzt möchte ich über einen Button die beiden Editfelder miteinander vergleichen, und müßte somit wissen von welchem Chield genau das jeweilige Chield geöffnet worden ist, da es ja gut sein kann das der Anwender zunächst 2 mal Chield1 geöffnet hat.

Das eine Verbindung zwischen den einzelnen Chields besteht, habe ich bereits herausgefunden, denn wenn ich das HauptChield schließen, werden alle darüber geöffneten Chields ebenfalls geschlossen.

Hoffe mal, ihr habt einigermaßen verstanden, was ich meine! :lol:


Moderiert von user profile icontommie-lie: Topic verschoben
tmc2004
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140

zuviele
D7,D8
BeitragVerfasst: Mi 24.03.04 20:01 
Bringt es dich weiter wenn sich ein child nur einmal öffnet und wenn es geöfner ist in den vordergrund kommt?

Gruß
tmc

_________________
it's not a bug it's a feature
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 24.03.04 21:34 
AndreM hat folgendes geschrieben:
Moin Community,

Das eine Verbindung zwischen den einzelnen Chields besteht, habe ich bereits herausgefunden, denn wenn ich das HauptChield schließen, werden alle darüber geöffneten Chields ebenfalls geschlossen.


Das hat nichts mit Verbindungen zu tun, sondern is MDI-Typisch - Hauptanwendung beendet MDI-Child (s) closed.

Dein Problem ist logischer Natur - nicht programmtechnischer. Auswertungen von Eingaben unterschiedlicher Quellen erfolgen immer dort, wo die Eingabequellen erstellt wurden.
Sprich die Auswertung sollte nicht wie in deinem Beispiel im MDI-Child sondern in der MDIApp erfolgen, nur diese kennt die Fenster (Validierung).

kurz und simple (Pseudocode)
MDIApp.Create
begin
MDIChild1:= TMDIChild1.Create
MDIChild2:= TMDIChild1.Create
Ergebniss:= MDIChild1.Eingabe + MDIChild2.Eingabe
MDIChild1.Free;
MDIChild2.Free;
end

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
SvenAbeln
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Do 25.03.04 18:10 
Hallo,

Zitat:
Dein Problem ist logischer Natur - nicht programmtechnischer. Auswertungen von Eingaben unterschiedlicher Quellen erfolgen immer dort, wo die Eingabequellen erstellt wurden.
Sprich die Auswertung sollte nicht wie in deinem Beispiel im MDI-Child sondern in der MDIApp erfolgen, nur diese kennt die Fenster (Validierung).


Das funktioniert in diesem Fall aber nicht, da Child2 von Child1 erzeugt wird und auch mit nur diesem zusammen arbeiten
soll. Vor allem wird es Problematisch wenn der Benutzer mehrere Fenster von TChild1 öffnet.

Wenn Delphi keine Verbindung zwischen den Fenstern anbietet schreib sie dir doch einfach selber.
Also neue Eigenschaft in TChild2
und nach dem Erzeugen von Child2 wird sie auf Child1 gesetzt, dieses kann Child1 im ButtonClick erledigen.

z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Type TChild2 = class(TForm);
....
   public 
      MainChild : TChild1;
....


TChild1.ButtonClick(Sender :TObject);
var Child2 : TChild2;
begin
  Child2:=TChild2.Create(Application);
  Child2.MainChild:=Self;
end;



Nun kannst du jederzeit von Child2 aus auf das aufrufende Child1 zugreifen.


Gruß