![]() |
Delphi-Version: XE5
Problem mit dynamischem panel
Code:
Das Dialog-Fenster bleibt leer, weil 'InnerPanel1' nicht gefunden wird. Aber wieso eigentlich nicht?
//Line = 1 (Integer)
//LastLine = 1 (Integer) InnerPanel := TPanel.Create(OuterPanel); with InnerPanel do begin Parent := OuterPanel; Name := 'InnerPanel' + IntToStr(Line); Left := 1; Top := LastLine; Width := 209; Height := 57; Caption := ''; ShowCaption := False; BevelOuter := bvNone; Visible := True; end; ShowMessage(TPanel('InnerPanel' + IntToStr(Line)).Name); |
AW: Problem mit dynamischem panel
okay sorry, das Problem ließ sich einfacher lösen als erwartet. :\
Code:
Immer dieses hin und her, ich komm irgendwie nicht wirklich drauf klar wann ich was machen muss. Also beim ansprechen von Komponenten meine ich. Ob man sie jetz mit ihren Parents anspricht oder nicht. OuterPanel hat z.B. eine Scrollbox als Parent, welche wiederum ein Panel zum Parent hat, wieso da nicht?
TPanel(OuterPanel.FindComponent('InnerPanel' + IntToStr(Line)))
|
AW: Problem mit dynamischem panel
Wenn man sich merkt wer/was der Besitzer ist, dann sollte das doch verständlich sein?
Delphi-Quellcode:
Abc := TXyz.Create(Besitzer);
Abc.Name := 'Def'; Besitzer.FindComponent('Def')
Delphi-Quellcode:
Außer man ruft FindComponent in einem anderem Kontext auf (in einer anderen Klassen-Instanz), dann kann es sein, daß der Name/Pfad vom Besitzer entsprechend anders lautet.
Abc := TXyz.Create(Self);
Abc.Name := 'Def'; {Self.}FindComponent('Def') Abgesehn davon, daß in deinem ersten Code das FindComponent fehlt. Selbst wenn das kompiliert, dann wirft der Compiler eine Fehlermeldung, wegen des falschen Typcasts, und mit etwas Glück wirft der Code auch "nur" eine nette Exception. |
AW: Problem mit dynamischem panel
danke, ääh hat mir garnich geholfen.
TPanel('somstring') = TPanel(FindComponent('somstring')) Ich hab da übrigens wieder ein ähnliches Problem:
Code:
(Line 1 dient als funktionierendes Beispiel)
ShowMessage(TPanel(OuterPanel.FindComponent('InnerPanel1')).Name);
TPanel(OuterPanel.FindComponent('InnerPanel1')).BevelInner := bvNone; Line 2 gibt access violation, warum? O,o ps: OuterPanel wurde ebenfalls in runtime erstellt, kriegt aber keinen neuen Namen. Nur falls das wichtig is. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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 by Thomas Breitkreuz