Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Parent eines Objektes herausfinden (https://www.delphipraxis.net/145984-parent-eines-objektes-herausfinden.html)

MisterNiceGuy 11. Jan 2010 22:07


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:
type TConfig = class(TObject)
   privat
      a:String;
      ConfigForm:TForm;
end;
Jetzt möchte ich wenn ich meine Form (ConfigForm) erstelle, den String "a" füllen.
Ich hätte gedacht, dass das ganze dann so gehen würde:
Delphi-Quellcode:
procedure ConfigForm.onCreate(...);
   (self.parent as TConfig).a := 'asd';
end;
Geht aber natürlich nicht. Auch mit (self.owner as TConfig).a komme ich nicht weiter.
Weiß jemand eine Lösung? :)

Danke schonmal!

mkinzler 11. Jan 2010 22:28

Re: Parent eines Objektes herausfinden
 
Versuch es mal mit Sender

MisterNiceGuy 11. Jan 2010 22:33

Re: Parent eines Objektes herausfinden
 
Sender hat weder Parent noch Owner, geht also leider auch nicht.

Mensch, dachte das wäre einfacher... :)

Lumikki 11. Jan 2010 22:34

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*

MisterNiceGuy 11. Jan 2010 22:38

Re: Parent eines Objektes herausfinden
 
Ne, wenn ich nur "Parent" schreibe, arbeite ich eine Ebene zu tief.

s.h.a.r.k 11. Jan 2010 22:42

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.

MisterNiceGuy 11. Jan 2010 22:54

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!

Sir Rufo 11. Jan 2010 23:08

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:
type
  TConfigForm = class( TForm )
    private
      FInfoFuerParent : string;
    public
      property InfoFuerParent : string read FInfoFuerParent write FInfoFuerParent;
    end;
Und alle Forms, die du dann haben möchtest leitest du wiederum von dieser Klasse ab.
Delphi-Quellcode:
type
  TEineTolleForm = class( TConfigForm )
  end;
Jetzt zu deiner Ausgangsklasse:
Delphi-Quellcode:
type
  TConfig = class(TObject)
    privat
      // a : String; Braucht kein Mensch mehr
      ConfigForm : TConfigForm;
  end;
Innerhalb der Klasse TConfig kannst du jetzt auf die Eigenschaft zugreifen:
Delphi-Quellcode:
ConfigForm.InfoFuerParent

s.h.a.r.k 11. Jan 2010 23:10

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:

Sir Rufo 11. Jan 2010 23:18

Re: Parent eines Objektes herausfinden
 
Zitat:

Zitat von s.h.a.r.k
Aber evtl. brauch er diese Variable als Property oder dergleichen? Oder hat diese eben *beabsichtigt* dort angelegt. Wobei dein Rat nicht missachten ist! :thumb:

Wer hindert ihn daran, dass als property zu veröffentlichen?
Delphi-Quellcode:
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;
Ich nicht, und Delphi schon mal garnicht :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.
Seite 1 von 2  1 2      

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