![]() |
Parent eines Objektes herausfinden
Hi, ich hab schon das Forum durchsucht, bin aber nicht auf die Lösung gestoßen.
Mein Problem ist folgendes: Ich habe in meinem Projekt dieses Struktur:
Delphi-Quellcode:
Jetzt möchte ich wenn ich meine Form (ConfigForm) erstelle, den String "a" füllen.
type TConfig = class(TObject)
privat a:String; ConfigForm:TForm; end; Ich hätte gedacht, dass das ganze dann so gehen würde:
Delphi-Quellcode:
Geht aber natürlich nicht. Auch mit (self.owner as TConfig).a komme ich nicht weiter.
procedure ConfigForm.onCreate(...);
(self.parent as TConfig).a := 'asd'; end; Weiß jemand eine Lösung? :) Danke schonmal! |
Re: Parent eines Objektes herausfinden
Versuch es mal mit Sender
|
Re: Parent eines Objektes herausfinden
Sender hat weder Parent noch Owner, geht also leider auch nicht.
Mensch, dachte das wäre einfacher... :) |
Re: Parent eines Objektes herausfinden
Warum schreibst du (self.parent as TConfig) davor?
Wenn du das Object erzeugt hast und in dieser Ebene quasi arbeitest, musst du doch gar nichts davor schreiben. Die Variable ist doch innerhalb der Klasse deklariert. Also einfach a:= '...'; oder täusch ich mich da? Allerdings hab ich bis jetzt bei der Erzeugung neuer Klassen immer nur visuelle Komponenten benutzt, (zB ein Panel abgeleitet,) bei denen man dann im Constructor direkt einen parent angeben musste, um das Objekt sichtbar zu machen. Ich weiß nicht wie das bei dir ist. Liebe grüße =) edit: Sender... also brauch die Variable irgendeinen Vorsatz? *interessiert ist* |
Re: Parent eines Objektes herausfinden
Ne, wenn ich nur "Parent" schreibe, arbeite ich eine Ebene zu tief.
|
Re: Parent eines Objektes herausfinden
Was zum Teufel machst du da? ConfigForm kennt keinerlei Instanz von TConfig, außer du hast eine Variable in ConfigForm, der du eine Referenz übergeben kannst. Das sinnvollste wäre, dass du TForm erweiterst, entweder um eine Referenz-Variable oder um eine entsprechende Methode.
Oder du gibst TConfig ein Handle mit und schickst aus ConfigForm eine Nachricht. Aber das was du vor hast geht so nicht. |
Re: Parent eines Objektes herausfinden
Das ist doch mal eine Aussage! Alles klar, dann geb ich der Form eine Referenz auf das Parentobjekt mit.
Danke! |
Re: Parent eines Objektes herausfinden
Aber das ist doch auch irgendwie nix ...
Warum erstellst du nicht einen Nachfahren von TForm und packst dort eine Eigenschaft rein:
Delphi-Quellcode:
Und alle Forms, die du dann haben möchtest leitest du wiederum von dieser Klasse ab.
type
TConfigForm = class( TForm ) private FInfoFuerParent : string; public property InfoFuerParent : string read FInfoFuerParent write FInfoFuerParent; end;
Delphi-Quellcode:
Jetzt zu deiner Ausgangsklasse:
type
TEineTolleForm = class( TConfigForm ) end;
Delphi-Quellcode:
Innerhalb der Klasse TConfig kannst du jetzt auf die Eigenschaft zugreifen:
type
TConfig = class(TObject) privat // a : String; Braucht kein Mensch mehr ConfigForm : TConfigForm; end;
Delphi-Quellcode:
ConfigForm.InfoFuerParent
|
Re: Parent eines Objektes herausfinden
Aber evtl. brauch er diese Variable als Property oder dergleichen? Oder hat diese eben *beabsichtigt* dort angelegt. Wobei dein Rat nicht missachten ist! :thumb:
|
Re: Parent eines Objektes herausfinden
Zitat:
Delphi-Quellcode:
Ich nicht, und Delphi schon mal garnicht :mrgreen:
type
TConfig = class(TObject) privat // a : String; Braucht kein Mensch mehr ConfigForm : TConfigForm; function GetInfo : string; procedure SetInfo( Value : string ); public property Info : string read GetInfo write SetInfo; end; function TConfig.GetInfo : string; begin RESULT := ConfigForm.InfoFuerParent; end; procedure TConfig.SetInfo( Value : string ); begin ConfigForm.InfoFuerParent := Value; end; |
Re: Parent eines Objektes herausfinden
Was ist aber, wenn er keine Instanz von dieser Form hat und die Variable benötigt? :mrgreen: Ich finde immer eine Lücke *lach*
|
Re: Parent eines Objektes herausfinden
Zitat:
Jetzt mit AutoCreate der Form ... ist zwar auch sinnentleert, aber dann kann was zugewiesen werden
Delphi-Quellcode:
Eine Form, nur als Variablenspeicher ist auch ganz nett, gelle
type
TConfig = class(TObject) privat // a : String; Braucht kein Mensch mehr ConfigForm : TConfigForm; function GetInfo : string; procedure SetInfo( Value : string ); public property Info : string read GetInfo write SetInfo; end; function TConfig.GetInfo : string; begin if not Assigned( ConfigForm ) then ConfigForm := TConfigForm.Create( nil ); RESULT := ConfigForm.InfoFuerParent; end; procedure TConfig.SetInfo( Value : string ); begin if not Assigned( ConfigForm ) then ConfigForm := TConfigForm.Create( nil ); ConfigForm.InfoFuerParent := Value; end; |
Re: Parent eines Objektes herausfinden
[OT] Ich glaube wir verwirren den Thread-Ersteller hierdurch eher mehr :zwinker: Aber es ist durchaus kein schlechtes Beispiel für OOP. [/OT]
|
Re: Parent eines Objektes herausfinden
Zitat:
|
Re: Parent eines Objektes herausfinden
Ich hab mir jetzt wie Rufo vorgeschlagen hat nen Hilfsrecord erstellt in den ich meine Infos vom Parentobjekt packe. Ist zwar nicht schön, aber funktioniert.
Finds aber total mies, dass sowas nicht geht! Also, dass man von nem Child nicht auf's Parentobjekt kommt. So geht meine ganze Idee mit ner Baumstruktur im Projekt den Bach runter! |
Re: Parent eines Objektes herausfinden
Was hat denn die in #1 beschriebene Fragestellung mit einer Baumstruktur zu tun?
Es ist überhaupt kein Problem eine Baumstruktur (auch mit Zugriffen auf die Vorfahren) zu erstellen. Man muss es nur richtig machen ... aber um es richtig zu machen, muss man auch mehr zum Kontext wissen als nur ein klitzekleines Stücken. Denn oft muss man einen völlig anderen Weg nehmen, als den, den man gerade beschreitet. Damit du verstehst wie ich meine: Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 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