Guten Tag,
Kurze Beschreibung:
Ein Fenster hat eine Pagekomponente mit mehreren Pages (aus der JVCL-Bibliothek). Jede Page hat eine eigene Aufgabe aber weitgehend gleiche Komponenten (je ein StringGrid und ein RichEdit), also möchte ich die Komponenten über Variable ansprechen, was auch funktioniert, wenn ich die entsprechenden Arrays für die Objekte "per Hand" anlege (die Komponenten sind bereits auf der form vorhanden).
Nun möchte ich die Arrays, in denen die page-Objekte und die Objekte auf den Pages gespeichert sind in einer Schleife aufbauen. Das mache ich folgendermaßen (verkürzt):
Delphi-Quellcode:
procedure ...
var
intCount: Integer;
intCompo: Integer;
intPageIndex: Integer;
intRecordCount: Integer;
compoType: TComponent;
begin
intRecordCount := ...;
SetLength(arrGrid, intRecordCount);
for intCount := 0 to intRecordCount - 1
do begin
compoType := FindComponent('grid' + arrCatNames[intCount, 0]);
intCompo := compoType.ComponentIndex;
if (Components[intCompo] is TJvStringGrid)
then arrGrid[intCount] := TJvStringGrid(Components[intCompo].Name);
end;
end;
Das Array arrCatNames ist erstellt und hat die richtigen Inhalte, arrGrid ist als Private deklariert.
Nun zum Problem:
compoType ist immer nil, d.h. der Ausdruck FindComponent('grid' + arrCatNames[intCount, 0]) liefert wohl nil zurück. Das tut er aber nur im Programm, im Überwachungsfenster bzw. im Debug-Modus liefert er jedoch einen korrekten, nicht-nil Wert zurück:
compoType: nil
FindComponent('grid' + arrCatNames[intCount, 0]): ([csInheritable])
Die Arrays werden entweder im Activate bzw. im FormPaint Ereignis erzeugt, in beiden Fällen das gleiche Verhalten.
Kann mich jemand von meiner Ratlosigkeit befreien? Danke!