![]() |
TPageControl: nach schliesen geht nicht mehr viel :/
hi,
also mein problem ist das ich beim schliesen der Tabsheets zwar wieder neue öffnen kann aber eben funktionen wie copy & past oder OpenDialog nicht mehr funktionieren :( Der Teil zum schliesen:
Delphi-Quellcode:
procedure TForm1.ToolButton15Click(Sender: TObject);
begin PageControl1.Pages[PageControl1.ActivePageIndex].free; end; Der Teil zum Öffnen:
Delphi-Quellcode:
procedure TForm1.NewTabsheet;
begin INC (pagecount); SetLength (pages,pagecount); SetLength (edits,pagecount); pages[pagecount-1] := TTabSheet.Create(PageControl1); pages[pagecount-1].PageControl := PageControl1; pages[pagecount-1].Caption := 'Neu Datei'; edits[pagecount-1] := TSynEdit.Create(pages[pagecount-1]); edits[pagecount-1].Align := alClient; edits[pagecount-1].Gutter.ShowLineNumbers := true; edits[pagecount-1].Parent := pages[pagecount-1]; PageControl1.ActivePageIndex := PageControl1.pagecount-1; end; eine funktion die nach schliesen nicht geht:
Delphi-Quellcode:
procedure TForm1.Kopieren1Click(Sender: TObject);
begin edits[PageControl1.ActivePageIndex].CopyToClipboard; end; |
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Hmm.. dein Ansatz ist interessant.
Über TLists und Containerklassenklassen zu gehen wäre einfacher, aber mit einer simplen Modifikation sollte dein Ansatz auch Funktionieren. Statt
Delphi-Quellcode:
solltest du
PageControl1.ActivePageIndex
Delphi-Quellcode:
verwenden, dann sollte es deinem Willen entsprechend funktionieren.
PageControl1.Pages[PageControl1.ActivePageIndex].Tag
|
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Zitat:
|
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Wenn du es nur beim schliessen gesetzt hast, ist das kein Wunder. Du must es überall ersetzen.
|
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Zitat:
|
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Moin Red Dragon,
was mir auffällt: Beim Schliessen korrgierst Du Dein Pages Array nicht. Das enhält dann ja einen ungültigen Eintrag. Wozu dient das überhaupt? Im PageControl ist ja schon ein TabSheet Array enthalten. Öffnen könntest Du ja so machen:
Delphi-Quellcode:
Schliessen dann so wie gehabt,allerdins solltest Du noch prüfen, ob überhaupt noch ein Tabsheet da ist, das geschlossen werden könnte.
procedure TForm1.NewTabsheet;
var tsWork : TTabSheet; begin tsWork := TTabSheet.Create(PageControl1); tsWork.PageControl := PageControl1; tsWork.Caption := 'Neu Datei'; with TSynEdit.Create(tsWork) do begin Align := alClient; Gutter.ShowLineNumbers := true; Parent := tsWork; end; PageControl1.ActivePageIndex := PageControl1.pagecount-1; end; Funktionen wie kopieren so:
Delphi-Quellcode:
procedure TForm1.Kopieren1Click(Sender: TObject);
var cmpWork : TComponent; iIndex : integer; begin for iIndex := 0 to PageControl1.Pages[PageControl1.ActivePageIndex].ComponentCount-1 do begin if PageControl1.Pages[PageControl1.ActivePageIndex].Components[iIndex] is TSynEdit then begin (PageControl1.Pages[PageControl1.ActivePageIndex].Components[iIndex] as TSynEdit).CopyToClipboard; break; end; end; end; |
Re: TPageControl: nach schliesen geht nicht mehr viel :/
hmmm also chris einen unterschieb macht das leider auch net kommt immer noch der gleiche fehler ob ich das mit deinem source mache oder mit dem den ich nutze :/ ich hab mir schon überlegt das garnicht zu schliesen sondern nur optisch hervorzurufen in dem ich einfach das teil auf visible := flase stelle nur witzige weise taucht das wieder auf wenn ich nen anderen tab anklicke...
|
Re: TPageControl: nach schliesen geht nicht mehr viel :/
Moin Red Dragon,
ich kann das Problem nicht nachvollziehen. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz