Gehirnakrobatik rund um TPageControl

Rund um die LCL und andere Komponenten
charlytango
Beiträge: 1130
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 »

Ring frei zur nächsten Runde.

Ich hab die Demo mal aufgeräumt und sauberer strukturiert.
Es gibt nun 4 Arten von Beispielgruppen wie Formulare in Tabs eingebaut werden können.
Da sind dann noch einige Themen offen, dass aber das Ankern nicht wirklich funktioniert, nervt. Vermutlich bin ich da zu blöd.

Doch ich schaffe es nicht den Tabbar auf der rechten Seite gegen das (blaue) Panel rechts zu verankern.
In der *.LFM steht zwar drin dass der Anker gesetzt ist

Code: Alles auswählen

    AnchorSideLeft.Control = Owner
    AnchorSideTop.Control = Owner
    AnchorSideRight.Control = pnlTabsButtons 
das wird aber geflissentlich ignoriert und beim Verändern des Fensters bleibt der TabBar unbeeindruckt.

Bevor man die anderen Themen angehen kann, muss das erst mal passen
THX
Dateianhänge
JvTabBarDemo_PageList.zip
(47.05 KiB) 75-mal heruntergeladen

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

Die PageList muss oben an die Unterseite der TabBar angrenzen: --> PageList markieren und im Anchor-Editor bei "Top Anchoring" den unteren Button markieren. Und weil der obere Border space 32 ist, ist nun die Pagelist zu weit von der TabBar entfernt --> auf 0 (oder gewünschten Abstand von ein paar Pixeln) ändern --> Screenshot "pagelist_anchors.png"

Die TabBar soll bis zum pnlTabsButtons reichen. Daher muss der rechte Anker der TabBar durch pnlTabsButtons definiert sein (das hast du schon), der linke Ausrichtungsbutton muss markiert sein ("TabBar VOR pnlTabsButtons", auch richtig). Was noch fehlt, ist den Anker überhaupt zu aktivieren: Enabled = true. --> Screenshot "tabbar-anchors.png

Im Anhang außerdem noch das komplette genauso überarbeitete Projekt.
Dateianhänge
pagelist_anchors.png
pagelist_anchors.png (26.17 KiB) 1475 mal betrachtet
tabbar-anchors.png
tabbar-anchors.png (25.84 KiB) 1475 mal betrachtet
jvtabbar_2025-06-14.zip
(47.7 KiB) 144-mal heruntergeladen

charlytango
Beiträge: 1130
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 »

hatte es genauso eingestellt.
Habe es noch mehrmals so eingestellt und kompiliert.
Auch mit "Clean up and Build".

Beim vergrößern des Fensters bleibt der Tabbar links und das blaue Panel rechts.
Der Tabbar wird also NICHT größer

Edit:
Laz 4.1, 3.4
Win 10

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

charlytango hat geschrieben: Sa 14. Jun 2025, 16:11 hatte es genauso eingestellt.
Nein, hast du nicht. Zumindest nicht in der Version, die du hochgeladen hast.
Dateianhänge
tabbar-anchors-orig.png
tabbar-anchors-orig.png (26.05 KiB) 1442 mal betrachtet

charlytango
Beiträge: 1130
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 »

das klingt wie ein Hintertreppenwitz ;-)

1 - ich habe ein testprojekt mit Panels beigelegt (test_anchor_panels.zip), in dem ich die Anker so gesetzt habe wie im anderen Projekt auch ==> funktioniert wie erwartet

2 - ein zweites Testprojekt liegt bei (test_anchor_JvTabbar.zip) in dem nur der Tabbar und ein Panel sind. Gleiches anchoring, aber kein Erfolg, das klappt nicht. Beweis für Anchor-Dialog liegt auch bei.
anchor.png
anchor.png (25.26 KiB) 1427 mal betrachtet
aus irgend einem Grund scheint das mit dem JvTabBar nicht zu klappen ???
Dateianhänge
test_anchor_JvTbbar.zip
(94.83 KiB) 149-mal heruntergeladen
test_anchor_panels.zip
(94.8 KiB) 140-mal heruntergeladen

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

charlytango hat geschrieben: Sa 14. Jun 2025, 21:01 2 - ein zweites Testprojekt liegt bei (test_anchor_JvTabbar.zip) in dem nur der Tabbar und ein Panel sind. Gleiches anchoring, aber kein Erfolg, das klappt nicht. Beweis für Anchor-Dialog liegt auch bei.
Aber jetzt ist das rechte Anker-Häkchen wieder nicht gesetzt. Verwendest du denn nicht die aktuelle Version? Ich hatte am 11. Juni 15:30 geschrieben, dass die Anchors-Eigenschaft nicht published war und das dann geändert. Wenn Anchors nur public ist, wird der Wert nicht in der lfm-Datei gespeichert - das wäre eine Erklärung. Also bitte: Hole dir die aktuelle Version von https://sourceforge.net/p/lazarus-ccr/s ... PageComps/ (oder schreibe zu den published Properties von TJvTabBar zumindest den Eintrag "property Anchors;" und übersetze die IDE neu).
Zuletzt geändert von wp_xyz am Sa 14. Jun 2025, 23:02, insgesamt 1-mal geändert.

charlytango
Beiträge: 1130
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 »

Danke für deine geduldige Hilfe.

Was mcih die ganze Zeit gefuchst hat war, dass ich alles genauso getan habe wie du empfohlen hast - ohne Erfolg.

Das zeigt aber dass man sich selber ins Knie schießen kann. Mit verlässlichem Tunnelblick habe ich eins ausgeblendet:
wp_xyz hat geschrieben: Sa 14. Jun 2025, 22:30 und übersetzte die IDE neu
Merci vielmals !!!

.. dann auf zu neuen Taten, ich befürchte da wirst du mich so schnell nicht los ggg ;-)
Jetzt sind noch eine Handvoll Aufgaben zu lösen und dann noch das Finetuning

charlytango
Beiträge: 1130
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 »

Soweit klappt das ganz gut.
Nun denn, dann die nächste Herausforderung:

Ich habe die Möglichkeit eingebaut, dass man x Tabs von links nicht schließen/löschen kann. Zweck ist es, zb ein oder mehrere Suchseiten immer offen zu lassen damit man von dort andere Tabs öffnen kann.

Das klappt gut, wenn ich im OnCloseQuery der Tabbar abfrage ob ein Tab kleiner als x gelöscht werden soll. Passt.

Nun gibt es aber auch die Möglichkeit einen Tab mit der Maus zu verschieben. Jetzt wäre es unsinnig, dass man dem Benutzer erlaubt, den Tab zwischen die gesperrten Tabs zu verschieben.
Als Event habe ich da in der nur jvTabbar1.OnTabMoved.

Ich bekomme auch nicht heraus wohin der Tab verschoben werden soll, und auch nicht woher er kommt, um das Verschieben ggfs ablehnen zu können.

Wenn für diese Funktion allzu viele Klimmzuge nötig wären, würde ich sie erstmal abschalten, aber wenn sie schon möglich ist wäre es fein.
Dateianhänge
JvTabBarDemo_PageList.zip
(92.74 KiB) 91-mal heruntergeladen

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

Die aktuelle Version von TJvTabBar hat ein neues Event OnTabMoving. Das hat den Tab, vor den der aktuelle Tab verschoben werden soll, als Parameter (der aktuell zu verschiebende Tab ist TabBar.SelectedTab). Und mit dem Parameter AllowMove kann man dann das Verschieben verhindern.

Code: Alles auswählen

procedure TMainForm.JvTabBarTabMoving(Sender: TObject; DestTab: TJvTabBarItem;
  var AllowMove: Boolean);
begin
  AllowMove := DestTab.Index <> 0;  // Do now allow to move current tab before the 1st tab.
end;

charlytango
Beiträge: 1130
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 »

Bin erstaunt und begeistert -- Works Like A Charme.
Danke für den Zauberspruch

Für Interessierte: der aktuelle Stand liegt bei inklusive der nötigen Files zur JVCL
Dateianhänge
JvPageComps.zip
(53.7 KiB) 100-mal heruntergeladen
JvTabBarDemo_PageList.zip
(92.84 KiB) 100-mal heruntergeladen

charlytango
Beiträge: 1130
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 »

Habe da doch noch etwas zum Thema "Verschieben" gefunden.

Ist es möglich auch den Source-Tab, also den der verschoben werden soll in die Eventprozedur zu integrieren?
Es sollen ja nicht nur keine Tabs in den gesperrten Bereich hinein geschoben werden, es darf ja auch kein Tab aus dem gesperrten Bereich entfernt werden können.

Code: Alles auswählen

procedure TMainForm.JvTabBarTabMoving(Sender: TObject; SourceTab: TJvTabBarItem;
 DestTab: TJvTabBarItem;  var AllowMove: Boolean);
Wenn ich das anders verhindern kann, wäre das auch ok.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6909
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Gehirnakrobatik rund um TPageControl

Beitrag von af0815 »

@charlytango Brauche ich die Files JvPageComps.zip, wenn ich mir immer den aktuellen Stand von der Lazarus-ccr direkt hole/auschecke ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Gehirnakrobatik rund um TPageControl

Beitrag von wp_xyz »

charlytango hat geschrieben: So 10. Aug 2025, 09:14 Ist es möglich auch den Source-Tab, also den der verschoben werden soll in die Eventprozedur zu integrieren?
Es sollen ja nicht nur keine Tabs in den gesperrten Bereich hinein geschoben werden, es darf ja auch kein Tab aus dem gesperrten Bereich entfernt werden können.
Also eigentlich kann man keinen Tab verschieben ohne dass er ausgewählt ist. Daher ist der zu verschiebende Tab bereits bekannt als JvTabBar.SelectedTab.
af0815 hat geschrieben: So 10. Aug 2025, 10:41 Brauche ich die Files JvPageComps.zip, wenn ich mir immer den aktuellen Stand von der Lazarus-ccr direkt hole/auschecke ?
Ich schreibe die Änderungen immer gleich in das CCR-Repository. Wenn du dich also von dort bedienst, hast du immer das Neueste. Nur bis OPM aktualisiert wird, kann eine Weile dauern (es kann ja sein, dass eine Änderung Probleme gemacht hat und ich sie rückgängig machen muss - das tue ich lieber in der Entwicklerversion auf SVN als im Release auf OPM)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6909
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Gehirnakrobatik rund um TPageControl

Beitrag von af0815 »

Danke, ich habe es mir gedacht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

charlytango
Beiträge: 1130
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 das ZIP nur dazu gelegt falls jemand nicht ans Repo kann oder will

Antworten