
Zitat von
gfjs:
Sowohl in Form_Activated als auch in Label_Click wird ein Index verwendet.
Form_Activate(d) dürfte das Problem verursachen; denn diese Ereignisse werden
bei jedem Wechsel zwischen Formularen - also auch zwischen Anwendungen - ausgelöst. Also musst Du dieses Ereignis genauer untersuchen (und dabei bewusst hin- und herschalten).
Wenn Du diesen Quelltext veröffentlichst, kann ich Dir vielleicht durch "genaues Hinschauen" schon helfen (ich kenne so etwas: dort, wo man selbst geschrieben hat, findet man Fehler nicht unbedingt).
Tipps zur Fehlersuche
Variante 1 (mit Debugger)
Compiler muss mit Debug-Symbolen übersetzen (Projektoptionen)
a. Haltepunkt an den Anfang einer problematischen Stelle setzen
b1. mit F7 schrittweise jeden Befehl durchgehen, oder
b2. mit F8 aufgerufene Methoden überspringen oder
b3. mit F4 bis zu einer bestimmten Quelltextzeile oder
b4. mit F9 bis zum nächsten Haltepunkt oder
c. mit Maus oder "Überwachte Ausdrücke" oder "lokale Variable" Werte überprüfen; bei Deinem Problem vor allem den Laufindex und die Bereichsgrenzen kontrollieren
d. die Stelle, an der es knallt, genauer prüfen
Variante 2 (mit Exceptions)
Damit sollten sowieso ständig alle möglichen und unmöglichen Fehler abgefangen werden. Die einfachste Variante, angepasst an Deine Situation:
Delphi-Quellcode:
for i := 0
to Panel1.Controls.Count - 1
do begin
try
...
except
// bei dieser Variante ist i noch bekannt
on e:
Exception
do ShowMessage( e.
Message + #13#10
+ Format( '
Index %d', [i] ) );
end;
end;
Übrigens gibt es ab D2005 die
neue for-Konstruktion:
Delphi-Quellcode:
var ctl: TControl;
for ctl in Panel1.Controls do begin ...
Damit wird das Problem mit den array-Grenzen von i umgangen. Man kann aber i.d.R. nicht auf einen Index zugreifen. Wenn Du aber etwas mit dem betreffenden Control machen willst, ist das oft praktischer.
Hilft Dir das weiter? Gruß Jürgen