AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf übergeordnete Units

Ein Thema von TRBB · begonnen am 10. Nov 2007 · letzter Beitrag vom 10. Nov 2007
Antwort Antwort
TRBB

Registriert seit: 31. Okt 2007
18 Beiträge
 
Delphi 7 Professional
 
#1

Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 13:18
Guten Tag,
ich habe wieder mal ein Problem.

Ich möchte aus einem Frame auf die übergeordnete Unit zugreifen (in der die MainForm definiert wird, die den Frame enthält).
Per ValidParentForm(self) kann man auf die übergeordnete Form (in diesem Fall "MainForm") zugreifen kann.
Damit ist aber kein Zugriff auf Variablen in der Unit möglich.
z.B.
Valid ParentForm(self).variable := 'test';

Meine MainUnit:
Delphi-Quellcode:
unit mainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ComCtrls, XPMan, searchUnit, AddUnit, RentingUnit, xmlFunctions;

type
  TMainForm = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Beenden1: TMenuItem;
    Hilfe1: TMenuItem;
    AboutMovieManager1: TMenuItem;
    XPManifest1: TXPManifest;
    MainTabs: TPageControl;
    Suchen: TTabSheet;
    Hinzufuegen: TTabSheet;
    Verleih: TTabSheet;
    StatusBar1: TStatusBar;
    SearchFrame: TSearchFrame;
    AddFrame: TAddFrame;
    RentingFrame: TRentingForm;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    xml: TXMLHandler;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

//---------------------------------------------------------
{ Beim PRGM-Start alle Daten aktualisieren }
procedure TMainForm.FormCreate(Sender: TObject);
begin
  { Informationen in Frames aktualisieren }
  RentingFrame.init();
  SearchFrame.init();
  AddFrame.init();
  { XML initialisieren }
  xml := TXMLHandler.Create;
end;

end.
In einem der Frames (z.B. SearchFrame) soll jetzt auf die Klasse xml zugegriffen werden.
Wie kann ich das gestalten?

Vielen dank im Vorraus für eure Hilfe.

Viele Grüße
TRBB



EDIT (Lösung des Problems):

Man muss eine Verknüpfung im Frame auf die Klasse erstellen.
(Dies muss aus der Hauptform heraus passieren)
Delphi-Quellcode:
//---------------------------------------------------------
{ Beim PRGM-Start alle Daten aktualisieren }
procedure TMainForm.FormCreate(Sender: TObject);
begin
  { Informationen in Frames aktualisieren }
  RentingFrame.init();
  SearchFrame.init();
  AddFrame.init();
  { XML initialisieren }
  xml := TXMLHandler.Create;
  //-------> Verknüpfung im Frame auf den XML-Handler-Dings erstellen
  SearchFrame.xmlHandlerLink := xml;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 13:23
Ohne die Unit einzubinden wird das nicht gehen.
Markus Kinzler
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#3

Re: Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 14:51
Moin,

in der Unit zu deinem Frame definierst du auch eine (gloable) Variable oder eine Eigenschaft innerhalb der Klassendefinition vom Typ TXMLHandler, also

Delphi-Quellcode:
 TSearchFrame = class(TFrame)
           // irgendwelche anderen Definitionen...
           public
             xmlHandlerLink: TXMLHandler;
           end;
Dein FormCreate musst du dann leicht anpassen:

Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  { Informationen in Frames aktualisieren }
  RentingFrame.init();
  SearchFrame.init();
  AddFrame.init();
  { XML initialisieren }
  xml := TXMLHandler.Create;

  // Verknüpfung im Frame auf den XML-Handler-Dings erstellen
  SearchFrame.xmlHandlerLink:=xml;
end;
Dann kannst du im Frame auch auf das gleiche Objekt zugreifen. Natürlich musst du die Unit, in der TXMLHandler definiert wird, im Frame auch mit einbinden.

Bis denn
Bommel
  Mit Zitat antworten Zitat
TRBB

Registriert seit: 31. Okt 2007
18 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 16:56
Vielen Dank schon mal!

Ich kenne mich noch nicht so gut aus in Delphi aber müsste nicht
SearchFrame.xmlHandlerLink:=xml;
eine Kopie der Klasse erstellen und keine Referenz zur xml-Klasse herstellen?

Es werden ja zur Laufzeit immer wieder Variablen in der Klasse verändert es darf also keine Kopie erstellt werden.

Ich probiere es morgen mal aus, aber es wäre schön wenn sich schonmal jemand dazu äußern könnte.

Mfg
TRBB
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#5

Re: Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 17:07
Zitat von TRBB:
Vielen Dank schon mal!

Ich kenne mich noch nicht so gut aus in Delphi aber müsste nicht
SearchFrame.xmlHandlerLink:=xml;
eine Kopie der Klasse erstellen und keine Referenz zur xml-Klasse herstellen?
Nein, weil du dir die Variable eines Objektes im Prinzip als einen Zeiger vorstellen kannst. Durch meine Zuweisung wird also dann der Zeiger - und eben nicht das Objekt selbst - kopiert und beide Objekt-Variablen zeigen nachher auf das selbe Objekt.

Bis denn
Bommel
  Mit Zitat antworten Zitat
TRBB

Registriert seit: 31. Okt 2007
18 Beiträge
 
Delphi 7 Professional
 
#6

Re: Zugriff auf übergeordnete Units

  Alt 10. Nov 2007, 17:27
Ahh
Tausend Dank! Jetzt habe ich nicht nur die Lösung für mein Problem, sondern zugleich auch noch dazu gelernt!^^

Ich kann wiedermal nur sagen die DP-Community ist super!

Vielen Dank und Grüße
TRBB
  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 05:30 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