AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit dynamischem panel

Ein Thema von globalenemy · begonnen am 21. Apr 2014 · letzter Beitrag vom 21. Apr 2014
Antwort Antwort
globalenemy

Registriert seit: 24. Mär 2014
10 Beiträge
 
#1

Problem mit dynamischem panel

  Alt 21. Apr 2014, 04:29
Delphi-Version: XE5
Code:
//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);
Das Dialog-Fenster bleibt leer, weil 'InnerPanel1' nicht gefunden wird. Aber wieso eigentlich nicht?
  Mit Zitat antworten Zitat
globalenemy

Registriert seit: 24. Mär 2014
10 Beiträge
 
#2

AW: Problem mit dynamischem panel

  Alt 21. Apr 2014, 05:07
okay sorry, das Problem ließ sich einfacher lösen als erwartet. :\

Code:
TPanel(OuterPanel.FindComponent('InnerPanel' + IntToStr(Line)))
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?

Geändert von globalenemy (21. Apr 2014 um 05:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.100 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit dynamischem panel

  Alt 21. Apr 2014, 09:10
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:
Abc := TXyz.Create(Self);
Abc.Name := 'Def';

{Self.}FindComponent('Def')
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.


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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Apr 2014 um 09:18 Uhr)
  Mit Zitat antworten Zitat
globalenemy

Registriert seit: 24. Mär 2014
10 Beiträge
 
#4

AW: Problem mit dynamischem panel

  Alt 21. Apr 2014, 14:46
danke, ääh hat mir garnich geholfen.
TPanel('somstring') = TPanel(FindComponent('somstring'))

Ich hab da übrigens wieder ein ähnliches Problem:

Code:
ShowMessage(TPanel(OuterPanel.FindComponent('InnerPanel1')).Name);
TPanel(OuterPanel.FindComponent('InnerPanel1')).BevelInner := bvNone;
(Line 1 dient als funktionierendes Beispiel)
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.

Geändert von globalenemy (21. Apr 2014 um 15:36 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
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