![]() |
Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor
Hallo,
ich habe momentan einen (für mich) sehr merkwürdigen Fehler im Programm. Ich erstelle einen Frame, in welchem ein TPageControl liegt. Dieses enthält zur Entwicklungszeit bereits 7 TabSheets. Nach dem Erstellen des Frames möchte ich einige TabSheets unsichtbar machen:
Delphi-Quellcode:
Er meldet eine "Out of bounds (7)"-Exception.
constructor TFrameKarteikarten.Erzeugen;
begin inherited Create(nil); end; procedure TFrameKarteikarten.DeaktiviereTabs; begin pcListen.Pages[0].TabVisible := false; <--- Hier tritt der Fehler auf end; ... FrameKarteikarten := TFrameKarteikarten.Erzeugen; FrameKarteikarten.DeaktiviereTabs; So nun habe ich eben ein paar Haltepunkte gesetzt, etwas herumgespielt und nun geht es doch wieder. Der Konstruktor sieht nun so aus und der Fehler ist nun weg:
Delphi-Quellcode:
Auch wenn ich es wieder zurückändere, geht es nun ohne Exception.
constructor TFrameKarteikarten.Erzeugen;
begin inherited Create(nil); DeaktiviereTabs; end; Kann es sein, dass im Konstruktor das TabSheet noch nicht ganz erzeugt worden ist? Verhält sich der Compiler anders, wenn ich im Konstruktor auf Eigenschaften eines Steuerelements zugreife? Ich verstehe jedenfalls nicht, woran es liegt... Vielleicht hat ja jemand einen Tipp :nerd: |
Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor
Also da es jetzt ging, wollte ich die Prozedur erweitern:
Delphi-Quellcode:
Und auf einmal ist der Fehler wieder da, wo er vorher war :|
procedure TFrameKarteikarten.DeaktiviereTabs;
begin pcListen.Pages[0].TabVisible := false; <--- Hier tritt der Fehler auf pcListen.Pages[3].TabVisible := false; end; "List index out of bounds (7)"... |
Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor
Da der angegebene Code nur auf Index 0 und 3 zugreift und die Fehlermeldung aber von Index 7 spricht, muss es eine andere Code Stelle sein. Vermutlich löst das TabVisible z.B. OnChange aus, wo anderer Code von dir steht, der genau den Fehler verursacht. Debugger nutzen und nachschauen...
|
Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor
Hallo,
bei "normalen" Komponenten darf man erst in der Loaded-Prozedur auf Subkomponenten zugreifen. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 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