![]() |
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 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