PageControl mit Registerkarten zur Laufzeit erstellen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von 400kmh »

Hallo,

kann mir jemand erklären, mit welchen Befehlen man ein Pagecontrol zur Laufzeit erstellt und Registerkarten hinzufügt?

Die Logik dahinter habe ich anscheinend noch nicht verstanden, denn was ich bisher ausprobiert habe, funktioniert nicht.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von Scotty »

Das geht, wenn man ein TTabSheet erzeugt und dessen Eigenschaft PageControl entsprechend setzt. Zum Beispiel:

Code: Alles auswählen

with TTabSheet.Create(self) do
begin
  PageControl:=PageControl1;
  Caption:='Test';
end;

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von 400kmh »

Scotty hat geschrieben:Das geht, wenn man ein TTabSheet erzeugt und dessen Eigenschaft PageControl entsprechend setzt. Zum Beispiel:

Code: Alles auswählen

with TTabSheet.Create(self) do
begin
  PageControl:=PageControl1;
  Caption:='Test';
end;
Hm, bei folgendem Code erscheint zwar keine Fehlermeldung, aber das erzeugte Fenster ist leer:

Code: Alles auswählen

unit test2;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ComCtrls;
 
type
 
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
  public
  end; 
 
var
  Form1: TForm1;
 
implementation
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TTabSheet.Create(self) do
  begin
    PageControl:=PageControl;
    Caption:='Test';
  end;
end;
 
initialization
  {$I test2.lrs}
 
end.
Was fehlt noch?

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von Scotty »

400kmh hat geschrieben:

Code: Alles auswählen

PageControl:=PageControl;
Was fehlt noch?
Da muss der richtige Name deines TPageControl's hin.

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von 400kmh »

Scotty hat geschrieben:
400kmh hat geschrieben:

Code: Alles auswählen

PageControl:=PageControl;
Was fehlt noch?
Da muss der richtige Name deines TPageControl's hin.
Also so z.B.?

Code: Alles auswählen

var
  Form1: TForm1;
  PageControl1: TPageControl;
 
implementation
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TTabSheet.Create(self) do
  begin
    PageControl:=PageControl1;
    Caption:='Test';
  end;
end;
Da tut sich immernoch nichts.

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von felix96 »

Guck, mal unter "{Laz-Verzeichnis}\examples" nach, da gibts irgendwo ein Beisiel!
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von Socke »

Du musst natürlich zuerst das PageControl erstellen (oder im Designer auf das Formular packen):

Code: Alles auswählen

TMyForm = class(TForm)
  FThisPageControl: TPageControl;
end;
// ...
// im Constructor oder OnCreate
begin
  FThisPageControl := TPageControl.Create(Self);
  FThisPageControl.Parent := Self;
  with TTabSheet.Create(Self) do
  begin
    PageControl := FThisPageControl;
    Caption := 'Hallo';
  end;
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

400kmh
Beiträge: 100
Registriert: Do 25. Mär 2010, 04:03

Re: PageControl mit Registerkarten zur Laufzeit erstellen

Beitrag von 400kmh »

Socke hat geschrieben:Du musst natürlich zuerst das PageControl erstellen (oder im Designer auf das Formular packen):

Code: Alles auswählen

TMyForm = class(TForm)
  FThisPageControl: TPageControl;
end;
// ...
// im Constructor oder OnCreate
begin
  FThisPageControl := TPageControl.Create(Self);
  FThisPageControl.Parent := Self;
  with TTabSheet.Create(Self) do
  begin
    PageControl := FThisPageControl;
    Caption := 'Hallo';
  end;
end;
Danke. Jetzt funktioniert es.

Antworten