Delphi-PRAXiS

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 Form/Frame in Projekt einbinden (https://www.delphipraxis.net/108115-form-frame-projekt-einbinden.html)

Nilser 7. Feb 2008 09:08


Form/Frame in Projekt einbinden
 
Hi,
ich habe mich zwar schon einige Zeit mit Delphi beschäftigt, doch nun bin ich auf ein Problem gestoßen, zu welchem ich keine Hilfe dazu gefunden habe.

Das Programm:
Es hat eine Hauptform. Um Eigenschaften des Programms einzustellen, habe ich eine Menü erstellt mit dem Punkt "Eigenschaften" ;)
Mit einem Klick auf dieses soll nun ein Fenster geöffnet werden, welches verschiedene Komponenten enthällt (z.B. Checkbox,Radiobutton).
Die Eigenschaften werden in einer Ini-Datei gespeichert.

Mein Problem:
Auf Klick soll der Frame "Eigenschaften" erscheinen (mit darauf liegenden Komponenten).
Kann ich auch auf Komponenteneigenschaften einer nicht gezeigten Form zugreifen?
Denn die Eigenschaften sollen aus bei Programmstart aus der Ini ausgelesen werden und auch gleich benutzt werden für das Programm.


Wenn jemand dazu was weiß, oder einen guten Link hat, dann freue ich mich über Antworten :bounce1:

Gruß
Nilser

Centrii 7. Feb 2008 09:14

Re: Form/Frame in Projekt einbinden
 
Hi Nilser,

wenn ich dich richtig verstanden habe willst du aus deinem Main-Form auf ein anderes Form zugreifen, richtig?

einfach mit:

Delphi-Quellcode:
  uses form;

  form.Checkbox1.enabled := true;
  form.labeledit1.text := 'Hallo';
so kannst du auf alle Komponenten zugreifen die auf deinem anderen Form liegen...

Gruß Ruben

Nilser 8. Feb 2008 09:38

Re: Form/Frame in Projekt einbinden
 
Danke Centrii durch dich habe ich einen neuen Denkanstoß erhalten und konnte mein Problem lösen.
Doch nun stehe ich vor einem weiteren:

Mein Programm hat nun zwei Units.
die Unit2 steht im USES-Bereich der Unit1

Nun kann ich auf Komponenten der zweiten Form zugreifen(aus der Unit 1 heraus).
jedoch kann ich nicht auf ein Ereignis auf der zweiten Form (Unit2) reagieren.
Genauer gesagt: Es soll eine Procedure in Form1 ausgelöst werden, wenn auf Form2 ein bestimmtes Ereignis geschieht.

D.h., dass wenn ein Button auf Form 2 geklickt wird, kann ich nur in der zweiten Unit eine Routine dafür schreiben um darauf zu reagieren.
Für eine Reaktion auf das Ereignis gibt es (meines Wissens nach) zwei Möglichkeiten:

1. Ich erstelle in Unit1 eine Routine/Procedure, die auf Ereignisse auf der zweiten Form reagiert.
oder
2. Ich reagiere auf das Ereignis in einer Routine/Procedure in Unit2 und greif aber auf Komponenten der ersten Form zu.

Jedoch funktioniert leider beides nicht. Gibt es da eine Lösung?

Centrii 8. Feb 2008 12:20

Re: Form/Frame in Projekt einbinden
 
So ganz hab ich dein Problem nicht verstanden, aber wenn du aus einem Form auf eine Unit (oder auch anders herum) auf Proceduren
zugreifen willst, musst du diese in die Uses einbinden.
d.h. wenn ich dich richtig verstanden habe, binde einfach deine Units gegenseitig in die Uses ein und es müsste gehen...

Gruß Ruben

Nilser 8. Feb 2008 15:32

Re: Form/Frame in Projekt einbinden
 
das habe ich auch schon versucht.
Daraufhin erscheint folgender Fehler:
Delphi-Quellcode:
"[Fatal Error] unit1.pas(8): Circular unit reference to 'Unit1'"
Grund ist, dass er sich im Kreise dreht beim usus "Öffnen" (unit1->unit2->unit1->unit2->...)


mhh ich habe keine Ahnung, wie ich mein Problem besser erklären kann. :wiejetzt:

1.Frage: Wie erstelle ich in Unit1 eine Routine/Procedure, die auf Ereignisse in Unit2 reagiert?
Bsp. Vorstellung: Meine Vorstellung davon. geht sowas überhaupt???
Delphi-Quellcode:
unit unit1

uses Unit2;
...
implementation
procedure Unit2.TForm2.Button1Click(Sender: TObject);
begin
     Form1.//... da soll auf einer Komponente(unit1) was geändert werden
end;
2.Frage: Wie reagiere ich Ereignis in einer Routine/Procedure in Unit2 und greif aber auf Komponenten der Unit1 zu.
Bsp. Vorstellung:
Delphi-Quellcode:
unit unit2
...
implementation
procedure TForm2.ButtonClick(Sender: TObject);
begin
    unit1.TForm1.//... da soll auf einer Komponente(unit1) was geändert werden
end;
Ich hoffe es ist jetzt verständlicher :)
falls Ihr Tutorials zu diesem oder ähnlichen Thema kennt, dann könnt ihr mir auch den Link geben :)
Ich werde weiter rumprobieren, doch langsam habe ich keinen Elan mehr :wall:

Gruß
Nilser

mkinzler 8. Feb 2008 15:40

Re: Form/Frame in Projekt einbinden
 
Delphi-Quellcode:
unit unit2
...
implementation

uses ...Unit1;

procedure TForm2.ButtonClick(Sender: TObject);
begin
    unit1.TForm1.//... da soll auf einer Komponente(unit1) was geändert werden
end;

Nilser 8. Feb 2008 15:56

Re: Form/Frame in Projekt einbinden
 
Danke mkinzler, bis jetzt funktioniert es :mrgreen:


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