Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Parent - Problem (https://www.delphipraxis.net/25616-parent-problem.html)

orakel 9. Jul 2004 10:56


Parent - Problem
 
Hi,
warum funktioniert das nicht?:
Delphi-Quellcode:
var druck:TForm;
druckframe:TFrame13;
begin
 druck:=TForm.Create(self);
 druck.Visible:=true;
 druck.Color:=clwhite;
 druckframe:=TFrame13.Create(druck);
 folgende Zele geht nicht...
 druckframe.Parent:=druck;
 druck.Width:=druckframe.Width+10;
 druck.Height:=druckframe.height+10;
 {...}
Das komische ist, das keine Fehlermeldung, sondern so ein "CPU" Fenster kommt. Was bedeutet das?

Stevie 9. Jul 2004 11:19

Re: Parent - Problem
 
Ich sehe so keinen Fehler, das müsste funktionieren, aber interessant zu wissen wäre, in welcher Funktion das steht, was du geschrieben hast...

oki 9. Jul 2004 11:23

Re: Parent - Problem
 
Hi,

durch
Delphi-Quellcode:
druck:=TForm.Create(self);
wird der Owner gesetzt. Nicht Parent!

Weise nach create explizit den Parent zu:
Delphi-Quellcode:
druck.Parent := self;
Dann müßte es gehen.

Gruß oki

edit oki:

Tschuldigung, hab beim lesen nicht richtig aufgepaßt.
Schau nach, ob die Typen übereinstimmen (Parent vom Typ TComponent). Ich hatte in c-DLL's auch schon versteckte Breakpoints, bei denen sich in Delphi das CPU-Fenster gemeldet hat. stört so nur beim debuggen und ist sonst umsonst.

Steve 9. Jul 2004 12:22

Re: Parent - Problem
 
² oki: ich glaub, Dein erster Ansatz hat schon gestimmt, "druck" kann imho nur parent sein, wenn es selbst nen parent hat.

Gruß
Stephan

Stevie 9. Jul 2004 12:28

Re: Parent - Problem
 
Ein Form benötigt nicht die explizite Angabe eines Parents!

orakel 9. Jul 2004 13:28

Re: Parent - Problem
 
Hey, ich hab die Problemzeile gefunden!
Delphi-Quellcode:
druck.visible:=true;
Ohne diese Zeile funktioniert einwandfrei...
...weiss aber net warum! Weißes jemand von euch?(würd mich schon interessieren)

Trotzdem danke für euer Bemühen

Stevie 9. Jul 2004 13:33

Re: Parent - Problem
 
KA, aber wer oder was ist eigentlich Self? :stupid: (Ich meine worauf das verweist!)

orakel 9. Jul 2004 15:39

Re: Parent - Problem
 
Zitat:

KA, aber wer oder was ist eigentlich Self?
??? :gruebel:

Auf das erstellte Objekt selbst??

SirThornberry 9. Jul 2004 16:01

Re: Parent - Problem
 
Zitat:

Zitat von orakel
Zitat:

KA, aber wer oder was ist eigentlich Self?
??? :gruebel:

Auf das erstellte Objekt selbst??

Self ist in dem Fall das Object von welchem aus "druck" erstellt wird. also das Object in welchem
Delphi-Quellcode:
var druck:TForm;
druckframe:TFrame13;
begin
druck:=TForm.Create(self);
druck.Visible:=true;
druck.Color:=clwhite;
druckframe:=TFrame13.Create(druck);
folgende Zele geht nicht...
druckframe.Parent:=druck;
druck.Width:=druckframe.Width+10;
druck.Height:=druckframe.height+10;
{...}
aufgerufen wird

Stevie 12. Jul 2004 07:40

Re: Parent - Problem
 
Zitat:

Zitat von orakel
Auf das erstellte Objekt selbst??

Das weiß ich doch!!! :| Ich wollte doch nur wissen, was Self für ein Objekt ist, weil da nicht die Prozedurkopf steht, sondern nur der Rumpf... :roll:
P.S. Ein Formular sollte in diesem Fall als Owner eigentlich immer Application haben...

oki 12. Jul 2004 08:30

Re: Parent - Problem
 
Hi,

hier haben natürlich alle unterstellt, dass die Code-Schnipsel Bestandteil einer Procedure oder Function eines Objectes sind. Innerhalb einer Object-Methode repräsentiert self die eigene Object-Instance.

Sicher werden Formulare üblicherweise für den Owner mit Application belegt. Jeder andere Owner ist aber auch möglich, solange die Typen passen. Manchmal ist es auch hilfreich einem Formular einen speziellen Owner zu verpassen. So kann mann z.B. direkte Zugehörigkeiten von Fenstern zu speziellen Objekten manifestieren.

Ich benutze manchmal NVCL-Objekte in denen ich Formulare als Einstellungsfenster creiere. Hier weise ich immer das NVCL-Objekt als Besitzer zu. Bis dato war das so auch o.k..

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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