Gehirnakrobatik rund um TPageControl

Rund um die LCL und andere Komponenten
charlytango
Beiträge: 1138
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: Gehirnakrobatik rund um TPageControl

Beitrag von charlytango »

wp_xyz hat geschrieben: So 10. Aug 2025, 12:04 Daher ist der zu verschiebende Tab bereits bekannt als JvTabBar.SelectedTab
Klingt logisch. Muss ich heute Abend probieren

charlytango
Beiträge: 1138
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: Gehirnakrobatik rund um TPageControl

Beitrag von charlytango »

Hab ich einen Knoten in meinen Gehirnwindungen?

Code: Alles auswählen

procedure TMainForm.JvTabBar1TabMoving(Sender: TObject; DestTab: TJvTabBarItem;
  var AllowMove: Boolean);
//var
//  a,b:boolean;
begin
  //// Do now allow to move a tab FROM fixed Tabs.
  //a := JvTabBar1.SelectedTab.Index > piFixedTabs -1;
  //
  //// Do now allow to move a tab INTO fixed Tabs. - das klappt
  //AllowMove := DestTab.Index > piFixedTabs-1;
  //
  //AllowMove:= a and b;

  if JvTabBar1.SelectedTab.Index > piFixedTabs -1 then
    AllowMove:=false
  else
    AllowMove:= DestTab.Index > piFixedTabs-1;

end; 

Es lässt sich kein Tab in den fixierten Bereich schieben, aber es lässt sich ein Tab aus dem fixierten Tab in den offenen Bereich schieben.

Sehe ich den Wald vor lauter Bäumen nicht , oder ???

Sieben
Beiträge: 294
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Gehirnakrobatik rund um TPageControl

Beitrag von Sieben »

Yep, zunächst mal setzt du AllowMove auf False, obwohl du gerade noch geschrieben hast, dass diese Bedingung ein True zur Folge haben soll.

Code: Alles auswählen

  //a := JvTabBar1.SelectedTab.Index > piFixedTabs -1;
  //AllowMove:= a and b;

charlytango
Beiträge: 1138
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: Gehirnakrobatik rund um TPageControl

Beitrag von charlytango »

Sieben hat geschrieben: So 10. Aug 2025, 22:16 dass diese Bedingung ein True zur Folge haben soll.
Nein, soll sie nicht.

gegeben sind n Tabs auf den Tabreitern.
tablist.png
tablist.png (1.41 KiB) 678 mal betrachtet
die linken zwei sollen fix bleiben (Tab1 und Tab2) und weder nach rechts geschoben werden können (in den Bereich Tab3 bis Tab5) noch andere tabs in den Bereich der fixierten hineingeschoben werden können.

Dazu habe ich:
die Anzahl der fixierten Tabs: piFixedTabs
den Index des aktuell selektierten Tabs: JvTabBar1.SelectedTab.Index
den index des Zieltabs: DestTab.Index

AllowMove soll in allen erlaubten "Moves" true sein, und in allen nicht erlaubten Fällen false.

ich habe schon einige Varianten versucht und es gelingt mir immer irgendwie einen fixierten Tab aus der fixierten Zone heraus zu schieben

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

Ich denke, bei mir funktioniert's:

Code: Alles auswählen

procedure TForm1.JvTabBar1TabMoving(Sender: TObject; DestTab: TJvTabBarItem;
  var AllowMove: Boolean);
begin
  if (JvTabBar1.SelectedTab.Index in [0..1]) or (DestTab.Index in [0..1]) then
    AllowMove := false;
end; 
AllowMove muss man nicht auf true setzen, das ist ja der Standardwert, andernfalls würde das Verschieben ohne OnTabMoving-Handler nicht funktionieren, und das macht die Logik etwas einfacher.
Dateianhänge
jvTabBar_TabMoving.zip
(2.16 KiB) 97-mal heruntergeladen

charlytango
Beiträge: 1138
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: Gehirnakrobatik rund um TPageControl

Beitrag von charlytango »

Heureka -- wieder eine Kuh vom Eis-- THX

Antworten