AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Klassen-Instanz von einer Unit an eine andere übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Nonsense · begonnen am 24. Apr 2004 · letzter Beitrag vom 24. Apr 2004
Antwort Antwort
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#1

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

  Alt 24. Apr 2004, 13:29
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 24. Apr 2004, 13:37
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))
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#3

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

  Alt 24. Apr 2004, 13:44
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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 24. Apr 2004, 13:52
Moin Nonsense,

nimm mal

Code:
Length(Settings.Parameter)[color=red]-1[/color]
als Obergrenze für die Schleife
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

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

  Alt 24. Apr 2004, 13:58
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}
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#6

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

  Alt 24. Apr 2004, 14:01
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.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

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

  Alt 24. Apr 2004, 14:31
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
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#8

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

  Alt 24. Apr 2004, 16:09
Edit: Argh, in's falsche Ereignis der ActionList getan. Verdammt. Es funktioniert. Danke noch einmal.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:10 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