Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mit TreeView Pages vom PageControl wechseln

  Alt 9. Dez 2011, 10:59
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
Patrick
  Mit Zitat antworten Zitat