![]() |
Parent Child Verbindungen, Objekte vom Parent im Child ?
Ich möchte ein Objekt erzeuge, dass z.B ein Panel über die komplette Form geht und darauf andere Objekte gelegt werden. Dazu habe ich diese Unit gebastelt:
Delphi-Quellcode:
dann die Unit einbinden und die Objekte zur Laufzeit erzeugen.
type
{* Eltern *} TVaterPanel = class(TControl) private FGridActive : Boolean; FGridSize : Integer; protected ... public constructor Create(Owner: TComponent); override; destructor Destroy; override; property GridActive: Boolean read FGridActive write FGridActive; property GridSize: Integer read FGridSize write FGridSize; end; {* Kind *} TKindControl = class(TControl) private ... protected ... procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; ... public ... end; procedure Register; implementation constructor TVaterPanel.Create(Owner: TComponent); begin inherited Create(Owner); FGridActive := False; FGridSize := 5; end; destructor TVaterPanel.Destroy; begin inherited Destroy; end; procedure TKindControl.MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin {* Wenn im TVaterPanel.FGridActive = True ist, mache *} {* dies * } {* sonst *} {* das *} {* end *} end;
Delphi-Quellcode:
Mein Problem ist ja, wie kann ich innerhalb der Unit an Parentobjekte ran?
type
TForm1 = class(TForm) ... public vater: TVaterPanel; kind1: TKindControl; kind2: TKindControl; ... vater := TVaterPanel.Create( Self ); vater.Left := 50; vater.Width := 200; vater.Height := 50; vater.Name := 'vater1'; vater.Parent := Form1; kind1 := TKindControl.Create( Self ); kind1.Left := 50; kind1.Top := 102; kind1.Width := 200; kind1.Height := 50; kind1.Name := 'kind1'; kind1.Parent := vater; |
Re: Parent Child Verbindungen, Objekte vom Parent im Child ?
Sollten unter
Delphi-Quellcode:
findbar sein
vater.controls[]
|
Re: Parent Child Verbindungen, Objekte vom Parent im Child ?
Ich bin nicht ganz sicher, ob ich Dich richtig verstanden habe, aber ich würde das Kindobjekt ein wenig erweitern.
Delphi-Quellcode:
TKindControl = class(TControl)
private ... FVater: TVaterPanel; protected ... procedure MouseDown (Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; ... public ... constructor Create(AOwner: TComponent; AVater: TVaterPanel); property Vater: TVaterPanel read FVaterPanel; end; |
Re: Parent Child Verbindungen, Objekte vom Parent im Child ?
Ja so ist es richtig, nur hab ich warscheinlich ein bisschen falsch ausgedrückt gehabt :wink: . Nun ist es so das ich das Kindcontrol erweitert habe um das property
Delphi-Quellcode:
Und in der Form weise ich dann das VaterPanel zu
TKindControl = class(TControl)
private FVaterPanel: TVaterPanel; public property Vater: TVaterPanel read FVaterPanel write FVaterPanel; ...
Delphi-Quellcode:
Das gleiche mach ich dann mit den anderen kindpanels. Dann kann ich im KindControl auf die Eigenschaften vom Vater zurückgreifen.
type
TForm1 = class(TForm) ... public vaterpanel: TVaterPanel; kindpanel1: TKindControl; kindpanel2: TKindControl; ... procedure TForm1.Button1Click(Sender: TObject); begin kindpanel1 := THighLightControl.Create( Self ); kindpanel1.Left := 40; kindpanel1.Top := 20; kindpanel1.Width := 200; kindpanel1.height := 50; kindpanel1.Name := 'testpanel1'; kindpanel1.Parent := Form1; kindpanell.vater := vaterpanel; kindpanel1.Visible := true; end |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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