Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Klassen-Instanz von einer Unit an eine andere übergeben? (https://www.delphipraxis.net/20854-klassen-instanz-von-einer-unit-eine-andere-uebergeben.html)

Nonsense 24. Apr 2004 13:29


Klassen-Instanz von einer Unit an eine andere übergeben?
 
Hallo,

ich habe 2 Formulare. Das erste ist das Haupt-Form, dort werden auch die Instanzen der Klassen erstellt. Im zweiten kann der Benutzer Einstellungen verändern. Die Einstellungen befinden sich in einer Datei und werden von einer Klasse ausgelesen und in einem Array gespeichert.

Nun würde ich gerne die gespeicherten Werte aus dem Array auslesen und in den Edit-Boxen des 2. Forms anzeigen.

Problem: Die Instanz der Klasse welche für die Einstellungen zuständig ist, wird in Form1 erstellt, d.h. Form2 hat keinen Zugriff auf die Instanz und damit keinen Zugriff auf die Werte:
Delphi-Quellcode:
________________      ________________
|               |     |              |
| Form1         |     | Form2        |
|  - Instanz   |  => | - Edit-Boxen |
|    von Klasse |     |              |
|_______________|     |______________|

        ||
        \/
_________________
|               |
| Klasse mit   |
| Einstellungen |
|_______________|
Wie bekommt jetzt Form2 Zugriff auf die Werte, so dass die in die Edit-Boxen eingetragen werden können?

Danke im Voraus.

MfG

SirThornberry 24. Apr 2004 13:37

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Warum hat Form2 keinen zugriff auf Form1?? einfach im implementationsteil von unit2 die unit1 aufführen und somit kannst du auch darauf zugreifen (unit1.form1.Settingsobject ... (wobei unit1. weggelassen werden kann))

Nonsense 24. Apr 2004 13:44

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Zitat:

Zitat von SirThornberry
Warum hat Form2 keinen zugriff auf Form1?? einfach im implementationsteil von unit2 die unit1 aufführen und somit kannst du auch darauf zugreifen (unit1.form1.Settingsobject ... (wobei unit1. weggelassen werden kann))

Wenn ich Form2 von Form1 aus anzeigen lassen will (Z.B. Form2.Show;), muss Form2 in die uses von Form1 (logisch).
Deshalb kann ich schon mal nicht mehr von Form2 aus auf Form1 zugreifen.
Ich hab folgendes probiert (TForm1.FormCreate):
Delphi-Quellcode:
var
  I: Integer;
begin
  [...]
  for I := 0 to Length(Settings.Parameter) do
    (Form2.FindComponent('Edit' + IntToStr(I + 1)) as TEdit).Text :=
      FloatToStr(Settings.Parameter[I]);
Das ganze gibt eine Zugriffsverletzung.

Christian Seehase 24. Apr 2004 13:52

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Moin Nonsense,

nimm mal

Code:
Length(Settings.Parameter)[color=red]-1[/color]
als Obergrenze für die Schleife

SirThornberry 24. Apr 2004 13:58

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Zitat:

Wenn ich Form2 von Form1 aus anzeigen lassen will (Z.B. Form2.Show;), muss Form2 in die uses von Form1 (logisch).
Deshalb kann ich schon mal nicht mehr von Form2 aus auf Form1 zugreifen.
FALSCH.

du darfst die andere unit nicht hier
Delphi-Quellcode:
unit umainform;

interface

uses
  HIER
einfügen sondern

Delphi-Quellcode:
implementation

uses upopupform, uinfo;

{$R *.dfm}

Nonsense 24. Apr 2004 14:01

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Zitat:

Zitat von Christian Seehase
Moin Nonsense,

nimm mal

Code:
Length(Settings.Parameter)[color=red]-1[/color]
als Obergrenze für die Schleife

Stimmt, hatte ich vergessen. Habe den Fehler gefunden. Meine Edit-Boxen sind mit einem UpDown verbunden. Wenn ich jetzt den Wert ändern will, der in der Edit-Box steht, kommt es zu einer AV mit dem Min-Wert des UpDown.
Danke trotzdem.

Muetze1 24. Apr 2004 14:31

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Moin!

Wieso packst du nicht einfach die Unit mit der Klasse die die Einstellungen hat in die Uses Liste von Form2 ? Dann greifen beide Forms auf die gleiche Instanz und Einstellungen zurück...

MfG
Muetze1

Nonsense 24. Apr 2004 16:09

Re: Klassen-Instanz von einer Unit an eine andere übergeben?
 
Edit: Argh, in's falsche Ereignis der ActionList getan. Verdammt. Es funktioniert. Danke noch einmal. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 Uhr.

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