TPagecontrol unsichtbar machen
-
- Beiträge: 216
- Registriert: Mo 13. Jan 2025, 12:11
TPagecontrol unsichtbar machen
Hallo Leute,
ich wollte auf einer Form mehrere Seiten installieren mit TPagecontrol. Es sollte aber nicht sichbar sein. Ich wollte oben mehrere Buttons machen das wenn ich auf einen Button klicke z.B. mit der Page3 das es dorthin springt und alles anzeigt. Wie könnte man das verwirklichen? Grüße.
ich wollte auf einer Form mehrere Seiten installieren mit TPagecontrol. Es sollte aber nicht sichbar sein. Ich wollte oben mehrere Buttons machen das wenn ich auf einen Button klicke z.B. mit der Page3 das es dorthin springt und alles anzeigt. Wie könnte man das verwirklichen? Grüße.
Re: TPagecontrol unsichtbar machen
Das bessere Control dafür ist das TNotebook, weil es gar keine Tabs hat und somit selbst nicht sichtbar ist, auch kein Rand. Verwende den Objekt-Baum über dem Objekt-Inspektor um zwischen den Seiten hinundher zu wechseln. Im Code kannst du mit NoteBook.PageIndex die sichtbare Seite auswählen.
Siehe beigefügtes einfaches Beispielprojekt
Siehe beigefügtes einfaches Beispielprojekt
- Dateianhänge
-
notebook_demo.zip
- (2.37 KiB) 46-mal heruntergeladen
Zuletzt geändert von wp_xyz am Mi 7. Mai 2025, 23:02, insgesamt 2-mal geändert.
-
- Beiträge: 216
- Registriert: Mo 13. Jan 2025, 12:11
Re: TPagecontrol unsichtbar machen
Kann das Beispiel nicht öffnen,- fehlt die lpr Datei.wp_xyz hat geschrieben: Mi 7. Mai 2025, 19:45 Das bessere Control dafür ist das TNotebook, weil es gar keine Tabs hat und somit selbst nicht sichtbar ist, auch kein Rand. Verwende den Objekt-Baum über dem Objekt-Inspektor um zwischen den Seiten hinundher zu wechseln. Im Code kannst du mit NoteBook.PageIndex die sichtbare Seite auswählen.
Siehe beigefügtes einfaches Beispielprojekt

Re: TPagecontrol unsichtbar machen
Grrrr... Das passiert, wenn's pressiert... - Ich habe den Anhang im vorigen Post gegen das vollständige Projekt ausgetauscht.Andy Nightingale hat geschrieben: Mi 7. Mai 2025, 20:50Kann das Beispiel nicht öffnen,- fehlt die lpr Datei.wp_xyz hat geschrieben: Mi 7. Mai 2025, 19:45 Das bessere Control dafür ist das TNotebook, weil es gar keine Tabs hat und somit selbst nicht sichtbar ist, auch kein Rand. Verwende den Objekt-Baum über dem Objekt-Inspektor um zwischen den Seiten hinundher zu wechseln. Im Code kannst du mit NoteBook.PageIndex die sichtbare Seite auswählen.
Siehe beigefügtes einfaches Beispielprojekt![]()
-
- Beiträge: 216
- Registriert: Mo 13. Jan 2025, 12:11
Re: TPagecontrol unsichtbar machen
Das ist ja cool.- genau das meinte ich .- vielen Dankwp_xyz hat geschrieben: Mi 7. Mai 2025, 23:03Grrrr... Das passiert, wenn's pressiert... - Ich habe den Anhang im vorigen Post gegen das vollständige Projekt ausgetauscht.Andy Nightingale hat geschrieben: Mi 7. Mai 2025, 20:50Kann das Beispiel nicht öffnen,- fehlt die lpr Datei.wp_xyz hat geschrieben: Mi 7. Mai 2025, 19:45 Das bessere Control dafür ist das TNotebook, weil es gar keine Tabs hat und somit selbst nicht sichtbar ist, auch kein Rand. Verwende den Objekt-Baum über dem Objekt-Inspektor um zwischen den Seiten hinundher zu wechseln. Im Code kannst du mit NoteBook.PageIndex die sichtbare Seite auswählen.
Siehe beigefügtes einfaches Beispielprojekt![]()

- juelin
- Beiträge: 251
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: TPagecontrol unsichtbar machen
Hallo Andy,
ich habe Dir mal ein File gegeben. "Neues Projekt in Lazarus"
Du legst für jede Form ein Unit an.
In den Projekteinstellungen (Menü -> Projekt -> Projekteinstellungen)
verschiebst Du unter Formulare alle Formulare, die Du beim Programmstart nicht sehen willst nach links. Im Programm (Form1) ruft dann so ein Formular mit folgenden Befehle auf: (Beispiel Form1 ruft Form2 auf)
Wenn Du dann wiederzurück zur Ausgangsform willst rufst Du (Form2) folgende Befehle auf:
In Form1 in uses Unit2 einfügen.
In Form2 in uses Unit1 einfügen.
So ich hoffe es klappt bei Dir.
Gruß
Jürgen
ich habe Dir mal ein File gegeben. "Neues Projekt in Lazarus"
Du legst für jede Form ein Unit an.
In den Projekteinstellungen (Menü -> Projekt -> Projekteinstellungen)
verschiebst Du unter Formulare alle Formulare, die Du beim Programmstart nicht sehen willst nach links. Im Programm (Form1) ruft dann so ein Formular mit folgenden Befehle auf: (Beispiel Form1 ruft Form2 auf)
Code: Alles auswählen
Form1.Visible:=False;
Form2:=TForm2.Create(self);
Form2.ShowModal;
Code: Alles auswählen
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Cursor:=crDefault;
Form2.Refresh;
Action:=caFree;
Form1.Rueck; // Stellt in Form1 eventuell Daten wieder her (Label,Edit,Combobox......)
// auf jeden Fall: Form1.Visible:=True;
// Form1Rueck ist eine Procedure und muss in public stehen.
end;
In Form2 in uses Unit1 einfügen.
So ich hoffe es klappt bei Dir.
Gruß
Jürgen
-
- Beiträge: 1063
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: TPagecontrol unsichtbar machen
Wenn du damit eine Benutzerführung erstellen willst, empfehle ich dir das Packagage TDINotebook anzusehen. Ist über OPM installierbar.Andy Nightingale hat geschrieben: Mi 7. Mai 2025, 18:34 Hallo Leute,
ich wollte auf einer Form mehrere Seiten installieren mit TPagecontrol. Es sollte aber nicht sichbar sein. Ich wollte oben mehrere Buttons machen das wenn ich auf einen Button klicke z.B. mit der Page3 das es dorthin springt und alles anzeigt. Wie könnte man das verwirklichen? Grüße.
Egal ob TPagecontrol oder andere ähnliche Controls.
Wenn dies Seiten sehr umfangreich sind, wird das schnell mal unübersichtlich und kaum mehr in einer einzigen Unit handhabbar.
Stattdessen benutzt man so ein Pagecontrol/Notebook nur als "Umschalteinheit".
Die Inhalte der einzelnen Pages organisiert man dann entweder in einem TForm oder TFrame, erstellt sie zur Laufzeit und "klebt" sie in eine neue Page ein.
Es gibt somit keine "unsichtbaren" Pages sondern es existieren nur diejenigen die du aktuell anzeigen willst. Auch das Hin und her schalten von Daten entfällt.
TDINotebook kontolliert auch alle erzeugten Pages und Forms in einer Liste.
Wenn du mehr Info brauchst, melde dich einfach.
-
- Beiträge: 216
- Registriert: Mo 13. Jan 2025, 12:11
Re: TPagecontrol unsichtbar machen
Danke dir und Grüße nach Mannheimjuelin hat geschrieben: Do 8. Mai 2025, 10:45 Hallo Andy,
ich habe Dir mal ein File gegeben. "Neues Projekt in Lazarus"
Du legst für jede Form ein Unit an.
In den Projekteinstellungen (Menü -> Projekt -> Projekteinstellungen)
verschiebst Du unter Formulare alle Formulare, die Du beim Programmstart nicht sehen willst nach links.
Projekt2.jpg
Im Programm (Form1) ruft dann so ein Formular mit folgenden Befehle auf: (Beispiel Form1 ruft Form2 auf)Wenn Du dann wiederzurück zur Ausgangsform willst rufst Du (Form2) folgende Befehle auf:Code: Alles auswählen
Form1.Visible:=False; Form2:=TForm2.Create(self); Form2.ShowModal;
In Form1 in uses Unit2 einfügen.Code: Alles auswählen
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Form2.Cursor:=crDefault; Form2.Refresh; Action:=caFree; Form1.Rueck; // Stellt in Form1 eventuell Daten wieder her (Label,Edit,Combobox......) // auf jeden Fall: Form1.Visible:=True; // Form1Rueck ist eine Procedure und muss in public stehen. end;
In Form2 in uses Unit1 einfügen.
So ich hoffe es klappt bei Dir.
Gruß
Jürgen

-
- Beiträge: 216
- Registriert: Mo 13. Jan 2025, 12:11
Re: TPagecontrol unsichtbar machen
Super.- ich werde das mal runterladen und testen und mich wieder melden. Grüße und Dankecharlytango hat geschrieben: Do 8. Mai 2025, 14:24Wenn du damit eine Benutzerführung erstellen willst, empfehle ich dir das Packagage TDINotebook anzusehen. Ist über OPM installierbar.Andy Nightingale hat geschrieben: Mi 7. Mai 2025, 18:34 Hallo Leute,
ich wollte auf einer Form mehrere Seiten installieren mit TPagecontrol. Es sollte aber nicht sichbar sein. Ich wollte oben mehrere Buttons machen das wenn ich auf einen Button klicke z.B. mit der Page3 das es dorthin springt und alles anzeigt. Wie könnte man das verwirklichen? Grüße.
Egal ob TPagecontrol oder andere ähnliche Controls.
Wenn dies Seiten sehr umfangreich sind, wird das schnell mal unübersichtlich und kaum mehr in einer einzigen Unit handhabbar.
Stattdessen benutzt man so ein Pagecontrol/Notebook nur als "Umschalteinheit".
Die Inhalte der einzelnen Pages organisiert man dann entweder in einem TForm oder TFrame, erstellt sie zur Laufzeit und "klebt" sie in eine neue Page ein.
Es gibt somit keine "unsichtbaren" Pages sondern es existieren nur diejenigen die du aktuell anzeigen willst. Auch das Hin und her schalten von Daten entfällt.
TDINotebook kontolliert auch alle erzeugten Pages und Forms in einer Liste.
Wenn du mehr Info brauchst, melde dich einfach.
-
- Beiträge: 30
- Registriert: Mo 9. Okt 2023, 18:45
- OS, Lazarus, FPC: Windows + WSL / Linux Debian Rasbian OS (L 3.0.0 FPC 3.3.2)
- CPU-Target: 64Bit
- Wohnort: LK Ludwigsburg
Re: TPagecontrol unsichtbar machen
Hallo,
man kann die TabSheets eines PageControl alle unsichtbar machen bis auf eines.
Beispiel mache alle TabSheets unsichtbar :
blMode := false; unsichtbar
blMode := true; sichtbar
mit PageControl1.ActivePageIndex:=2; // [0,1,2]
kann man das Tabsheed Nr. 3 auf active setzen
Beispiel Code :
Viel Spass beim Test.
man kann die TabSheets eines PageControl alle unsichtbar machen bis auf eines.
Beispiel mache alle TabSheets unsichtbar :
blMode := false; unsichtbar
blMode := true; sichtbar
mit PageControl1.ActivePageIndex:=2; // [0,1,2]
kann man das Tabsheed Nr. 3 auf active setzen
Beispiel Code :
Code: Alles auswählen
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
{$IFDEF HASAMIGA}
athreads,
{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, unit1
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls,
Grids;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
PageControl1: TPageControl;
StringGrid1: TStringGrid;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure xClearPG(blMode : Boolean);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
xClearPG(false);
PageControl1.ActivePageIndex:=0;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=1;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=2;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
xClearPG(True);
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
xClearPG(false);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
xClearPG(false);
end;
procedure TForm1.xClearPG(blMode : Boolean);
Var
nCnt : Longint;
N : Longint;
begin
nCnt := PageControl1.PageCount;
For N:=0 To nCnt-1 do begin
PageControl1.Pages[N].TabVisible:=blMode;
end;
end;
end.
Viel Spass beim Test.