Beides hat nicht funktioniert. Bei FindControls bekam ich es gar nicht kompiliert. Aber ich denke, dass Du schon die Ursache gefunden hast, denn ich fürchte, dass mich gerade meinen riesiegen BASISLÜCKEN einholen.
Ganz kurz eine Info, wie das Programm aufgebaut ist.
Ich habe das Projekt mit einem Form (Main).
Auf diesem Form befindet sich ein PageControl mit mehreren unsichtbaren TabSheets. (Davon wird nichts zur Laufzeit erstellt).
Auf diesen TabSheets befinden sich Frames, die die unterschiedlichen Programmbereiche darstellen...
Als ich für ein Frame die TabSheets und StringGrids zur Laufzeit erstellt habe, habe ich diesen "Vorgang" an das OnShow-Ereignis dem Main-Forms des Projektes gehängt.
Ich bezweifel, das (self) korrekt war. Ich habe es jetzt jedenfalls wie folgt geändert, aber es klappt immernoch nicht...
Komponenten erzeugen: (KLAPPT)
Delphi-Quellcode:
for I := 0 to Length(Rows1[0]) - 1 do
begin
tabsheet:= TTabSheet.Create(PlanungMB1);
tabsheet.PageControl:=Main.PlanungMB1.Maschinen;
TabSheet.Name:=Rows1[0,I];
//TabSheet.TabVisible:=false;
Main.PlanungMB1.Maschinen.ActivePageIndex:=I;
DatenGrid:=TStringGrid.Create(Main.PlanungMB1.Maschinen.ActivePage);
DatenGrid.Parent:=Main.PlanungMB1.Maschinen.ActivePage;
DatenGrid.Name:='Daten'+Rows1[0,I];
DatenGrid.Align:=ALClient;
DatenGrid.Visible:=true;
DatenGrid.ColCount:=5;
DatenGrid.RowCount:=5;
DatenGrid.FixedCols:=0;
DatenGrid.Cells[0,1]:=TabSheet.Name;
end;
Main.PlanungMB1.Maschinen.ActivePageIndex:=0;
PlanungMBUnit.TreeviewRefresh(Main.PlanungMB1.Fertigungsbereich);
TabSheetwechsel: (KLAPPT NICHT)
Delphi-Quellcode:
procedure TPlanungMB.FertigungsbereichMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var Node : TTreeNode;
Sheet:TTabSheet;
begin
Node := (Sender as TTreeview).GetNodeAt(X, Y);
if Assigned(Node) then
begin
Sheet := Main.PlanungMB1.Maschinen.FindComponent(Node.Text) as TTabSheet;
if Assigned(Sheet) then
Maschinen.ActivePage := Sheet;
end;
end;
Ich bin ratlos...
Gruß
Ykcim