AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor

Ein Thema von sunny-andy · begonnen am 28. Dez 2007 · letzter Beitrag vom 28. Dez 2007
Antwort Antwort
sunny-andy

Registriert seit: 11. Nov 2007
26 Beiträge
 
#1

Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor

  Alt 28. Dez 2007, 15:23
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:
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;
Er meldet eine "Out of bounds (7)"-Exception.

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:
constructor TFrameKarteikarten.Erzeugen;
begin
  inherited Create(nil);
  DeaktiviereTabs;
end;
Auch wenn ich es wieder zurückändere, geht es nun ohne Exception.
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
  Mit Zitat antworten Zitat
sunny-andy

Registriert seit: 11. Nov 2007
26 Beiträge
 
#2

Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor

  Alt 28. Dez 2007, 15:29
Also da es jetzt ging, wollte ich die Prozedur erweitern:
Delphi-Quellcode:
procedure TFrameKarteikarten.DeaktiviereTabs;
begin
  pcListen.Pages[0].TabVisible := false; <--- Hier tritt der Fehler auf
  pcListen.Pages[3].TabVisible := false;
end;
Und auf einmal ist der Fehler wieder da, wo er vorher war
"List index out of bounds (7)"...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor

  Alt 28. Dez 2007, 16:39
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...
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Fehler beim Zugriff auf Steuerlemente aus d. Konstruktor

  Alt 28. Dez 2007, 16:53
Hallo,

bei "normalen" Komponenten darf man erst in der Loaded-Prozedur
auf Subkomponenten zugreifen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:23 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