Delphi-PRAXiS
Seite 1 von 3  1 23      

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/)
-   -   Delphi Zirkularen Bezug von zwei Forms wie vermeiden ? (https://www.delphipraxis.net/160785-zirkularen-bezug-von-zwei-forms-wie-vermeiden.html)

RWarnecke 31. Mai 2011 17:51

Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Hallo zusammen,

ich habe zwei Formulare Form1 und Form2. Wenn ich jetzt bei Form2 das Parent auf Form1 setze, wird mir ja Form2 in Form1 angezeigt. Wenn jetzt Form2 bestimmte Elemente wie z.B. Buttons steueren soll (z.B. Aktivieren und Deaktivieren) muss ich ja einen zirkularen Bezug der beiden Units herstellen.

Kann ich das auch nich irgendwie anders realisieren ? Mir schwebt da zum Beispiel vor mit Messages oder bestimmten Events. Nur leider habe ich dazu keinen Denkansatz, was hier am besten ist.

Gruß
Rolf

Sir Rufo 31. Mai 2011 18:28

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Du kannst die beiden Units kreuzweise im implementation Teil eintragen, dann tun die sich auch nichts :)
Problematisch wird es nur im Interface Teil

RWarnecke 31. Mai 2011 18:39

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Hallo Sir Rufo,

danke für Deine Antwort. Mir ist gerade aufgefallen, ich habe noch etwas vergessen bei meiner Ausführung. :oops: Die Buttons sollen auch bestimmte Aktionen in der Form2 steuern. Deswegen der zirkulare Bezug.

himitsu 31. Mai 2011 19:12

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Nur wenn du im Implenentations-Teil Deklarationen der anderen Unit benötigst oder in Initialisation/Finalization was von drüben verwendest, muß diese Unit in Implementation importiert werden.
Ansonten kann man sie halt auch erst in Implementation importieren und dort gibt es keine Probleme mit zirkulären Referenzen (für den Compiler).

ConnorMcLeod 31. Mai 2011 19:13

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Mach eine dritte Unit mit Hilfsfunktionen, die die Komponenten und Werte als Parameter hat.

himitsu 31. Mai 2011 19:20

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1104001)
Mach eine dritte Unit mit Hilfsfunktionen, die die Komponenten und Werte als Parameter hat.

Bzw. gleich die ganze Logik dort rein.

Der Button und der Aufruf aus der anderen Unit/Form rufen dann einfach direkt die gewünschte Funktion auf. :stupid:

RWarnecke 31. Mai 2011 19:24

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1104001)
Mach eine dritte Unit mit Hilfsfunktionen, die die Komponenten und Werte als Parameter hat.

Die Idee hört sich interessant an. Nur kann ich mir noch nicht vorstellen, wie ich das Aktivieren oder Deaktivieren eines Buttons über eine dritte Hilfsunit steuern kann. Ich müsste in der Hilfsunit für jede Aktion die ich machen möchte eine eigene Procedure schreiben.

Zitat:

Zitat von himitsu (Beitrag 1104003)
Zitat:

Zitat von ConnorMcLeod (Beitrag 1104001)
Mach eine dritte Unit mit Hilfsfunktionen, die die Komponenten und Werte als Parameter hat.

Bzw. gleich die ganze Logik dort rein.
Der Button und der Aufruf aus der anderen Unit/Form rufen dann einfach direkt die gewünschte Funktion auf. :stupid:

Ähm, da komme ich mal wieder nicht mit. Ich habe doch die Buttons in der Form1, wie soll ich denn die Logik der Komponenten in die Hilfsunit auslagern. Das einzigste was ich mir gerade vorstellen kann, wäre die Komponenten (Buttons u.s.w.) zur Laufzeit zu erstellen. Liege ich da mit meiner Vorstellung richtig ?

ConnorMcLeod 31. Mai 2011 20:13

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Delphi-Quellcode:
procedure tuwas(var AButton: TButton);
begin
  AButton.Caption := 'helloworld';
end;

procedure tuwasanderes(var AButton: TButton; const AText: string);
begin
  AButton.Caption := 'helloworld';
  AButton.Hint   := AText;
end;
So einfach ist das.

Sir Rufo 31. Mai 2011 21:45

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
äh, wozu übergibst du die Objekt-Referenz als var Parameter?

Das wäre ja ein Hinweis, dass in der Procedere die Objekt-Referenz verändert werden könnte.

ConnorMcLeod 1. Jun 2011 07:19

AW: Zirkularen Bezug von zwei Forms wie vermeiden ?
 
Eben drum. Das ist ja der Sinn der ganzen Übung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 3  1 23      

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