Wie Reihenfolge der Pages in TNotebook ändern ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
1660
Beiträge: 10
Registriert: Do 19. Dez 2013, 10:35

Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von 1660 »

Hallo,

weiß jmd ob und wenn ja wie es möglich ist die Reihenfolge der Pages in einem TNotebook zu ändern ?

Ich möchte z.B. Page2 mit Page3 tauschen und dann auch Page2 über "Notebook1.PageIndex:= 2; " zeigen können.

Viele Grüße
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (3.86 KiB) 1398 mal betrachtet

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von m.fuchs »

Eine Änderung über eine Funktion in Lazarus habe ich seinerzeit auch nicht machen können. Allerdings habe ich auch mangels Interesse nicht weitergeforscht.

Als Workaround kannst du die .lfm-Datei zu deinem Form bearbeiten und die einzelnen Pages verschieben.

Aus

Code: Alles auswählen

object Form1: TForm1
  Left = 407
  Height = 536
  Top = 132
  Width = 757
  Caption = 'Form1'
  ClientHeight = 536
  ClientWidth = 757
  LCLVersion = '1.0.12.0'
  object Notebook1: TNotebook
    Left = 176
    Height = 226
    Top = 144
    Width = 336
    PageIndex = 0
    TabOrder = 0
    TabStop = True
	 object Page1: TPage
      object Button1: TButton
        Left = 108
        Height = 25
        Top = 73
        Width = 75
        Caption = 'Button1'
        TabOrder = 0
      end
    end
    object Page2: TPage
      object Button2: TButton
        Left = 127
        Height = 25
        Top = 77
        Width = 75
        Caption = 'Button2'
        OnClick = Button1Click
        TabOrder = 0
      end
    end
  end
end
 
wird dann

Code: Alles auswählen

object Form1: TForm1
  Left = 407
  Height = 536
  Top = 132
  Width = 757
  Caption = 'Form1'
  ClientHeight = 536
  ClientWidth = 757
  LCLVersion = '1.0.12.0'
  object Notebook1: TNotebook
    Left = 176
    Height = 226
    Top = 144
    Width = 336
    PageIndex = 0
    TabOrder = 0
    TabStop = True
    object Page2: TPage
      object Button2: TButton
        Left = 127
        Height = 25
        Top = 77
        Width = 75
        Caption = 'Button2'
        OnClick = Button1Click
        TabOrder = 0
      end
    end
	 object Page1: TPage
      object Button1: TButton
        Left = 108
        Height = 25
        Top = 73
        Width = 75
        Caption = 'Button1'
        TabOrder = 0
      end
    end
  end
end
 
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von Michl »

Ändern kannst Du diese wie folgt: im Formular mit einem Rechtsklick auf das TNotebook (wenn die zu verschiebende Page sichtbar ist) klicken und dort unter Z-Reihenfolge diese nach vorn oder hinten verschieben. Zur Laufzeit sind dann die Pages entsprechend über Page[Index] abrufbar. Allerdings werden die Pages im Objektinspektor nicht entsprechend angezeigt, sodaß mir eine eigene Logik bei vielen Pages sinnvoller erscheint.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von m.fuchs »

Michl: Das ändert bei mir (1.0.12) hingegen die Darstellung im Objektinspektor, aber nicht der Zuordnung von PageIndex.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von Michl »

m.fuchs hat geschrieben:Michl: Das ändert bei mir (1.0.12) hingegen die Darstellung im Objektinspektor, aber nicht der Zuordnung von PageIndex.
Das ist aber lustig, ich sitze gerade am Laptop und habe hier auch noch 1.0.12 und darauf getestet. Ist bei mir genau anders herum. Hast Du wirklich die Z-Reihenfolge nicht im Objektinspektor sondern in der Form mit einem Rechtsklick auf die Page geändert?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von m.fuchs »

Ich wusste nicht dass das einen Unterschied macht. Bringt aber auch nichts, es sei denn: ich speichere, schließe Lazarus und öffne das Projekt wieder.
So oder so erscheint mir das reichlich unhandlich und fehleranfällig. Da würde ich an der Reihenfolge lieber gar nichts machen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von Michl »

m.fuchs hat geschrieben:Bringt aber auch nichts, es sei denn: ich speichere, schließe Lazarus und öffne das Projekt wieder.
Das habe ich eben probiert. Das hat sogar den Vorteil, dass nach dem Schließen und wieder Öffnen von Lazarus sogar die Pages im Objektinspektor in der neu definierten Reihenfolge angezeigt werden (falls Du das meintest).

Man müsste den Objektinspektor nach Änderung der Z-Reihenfolge noch irgendwie updaten (evtl. ein Bugreport/Feature-Request dazu machen?)...
m.fuchs hat geschrieben:Da würde ich an der Reihenfolge lieber gar nichts machen.
+1
Michl hat geschrieben:... sodaß mir eine eigene Logik bei vielen Pages sinnvoller erscheint.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von wp_xyz »

TNotebook hat mich bei Delphi immer genervt wegen der komplizierten Handhabung (möglicherweise ist es hier bei Lazarus einfacher?). Praktischer ist ein TPageControl, bei dem man zur Laufzeit, z.B. im FormCreate-Ereignis, alle Tabs auf TabVisible = false schaltet. Zur Designzeit hat man aber die volle Funktionalität des PageControl.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wie Reihenfolge der Pages in TNotebook ändern ?

Beitrag von m.fuchs »

Das TNotebook ist aber randlos. Es gibt Fälle wo das wichtig sein könnte.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten