ctGUI (Tabbed GUI auf Basis JvTabBar)

Rund um die LCL und andere Komponenten
wp_xyz
Beiträge: 5301
Registriert: Fr 8. Apr 2011, 09:01

Re: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von wp_xyz »

Kann es sein, dass das mit der Tab-Wechsel-Blockierung zusammenhängt? Ich meine: Bevor man einen Tab schließen kann, muss dieser aktiv sein. Wenn aber der Tab-Wechsel unterbunden ist, dann kann man auch das "x" auf dem zu schließenden Tab nicht erreichen.

In deinem FullDemo-Programm gibt es einen Haufen Speicherlecks. Es fehlt der Finalization-Abschnitt der uPageManager-Unit mit "ThePM.Free".

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

wp_xyz hat geschrieben: So 12. Okt 2025, 12:51 Kann es sein, dass das mit der Tab-Wechsel-Blockierung zusammenhängt?
war auch meine Vermutung -- habe aber gerade wenig zeit, das zu debuggen.
Wird etwas Zeit brauchen.
wp_xyz hat geschrieben: So 12. Okt 2025, 12:51 In deinem FullDemo-Programm gibt es einen Haufen Speicherlecks. Es fehlt der Finalization-Abschnitt der uPageManager-Unit mit "ThePM.Free".
glaube ich sofort ;-(

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

ich fürchte, ich bin es nicht alleine.

Die Demo JvTabBar_PageList reagiert genau so wie meine Demo.

BeimClick auf das X wird JvTabBar1TabCloseQuery nicht oder nicht immer aufgerufen, demnach wird dann auch kein CanClose zurückgegeben

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

Re: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von wp_xyz »

Versuch mal die neue Version r9882

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

bin mit Testen noch nicht ganz durch, sieht gut aus, THX

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

also: Die Erlaubnis zum Verlassen des Tabs wird abgefragt und dann wird auch brav geschlossen.

Leider scheinen aktive (Selected) Tabs mit dem X nicht mehr zu schließen sein
Habe mit deiner Demo getestet (JvTabBar_PageList).
Demo öffnen -- Close Buttons checken

Tab Memo ist selected,
Direkt auf den Tab memo das x anklicken -- keine Reaktion
Wenn man das x eines anderen (also noch nicht selected) Tabs klickt, funktioniert es wie erwartet auch mit MessageDlg.

==> aktive Tabs lassen sich mit X nicht schließen

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

Re: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von wp_xyz »

Bist du sicher, dass du dir die aktuelle Version aus dem SVN gezogen hast? Da sollte genau das, was du beschreibst, behoben sein. (Beachte: "JvTabBar.SelectBeforeClose" sollte nicht auf True gesetzt sein, sonst brauchst du zwei Klicks)

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

Bin auf r9883.

Es geht hier erst einmal darum das Verlassen einer Seite zu verhindern.

Das erfolgt im JvTabBarTabSelecting (Sender ist der Source Tab und Item der Zieltab)
Wenn man durch eine checkbox (die in der eingedockten Seite abgefragt wird) verhindert dass ein Wechsel stattfinden darf, wird die Messagebox angezeigt und der Wechsel wird verhindert -- soweit alles ok.
Aber der Mauszeiger ändert sich in eine Art Verbotsschild.
Wenn ich mit diesen Verbotsschild-Mauszeiger über einen nicht selektierten Tab bewege, ändert er sich zu einem Pfeil mit Rechteck.
Klicke ich mit diesem Pfeil/Rechteck-Mauszeiger auf den Tab passiert etwas seltsames.

Es wird zwar JvTabBarTabSelecting mit den Messageboxen durchlaufen, TjvPagelist scheint richtig zu reagieren und wechselt nicht, aber der Tabbar wechselt auch nicht aber er verschiebt den Source Tab vor den ZielTab, eher wie bei einem Verschieben. Der Mauszeiger ist der gleiche wie beim Verschieben

Klicke ich aber nach dem Ersten (korrekterweise abgelehnten) Wechselversuch irgendwo hin (egal ob im Formular oder auch auf irgend ein beliebiges anderes Element das auch ein anderes Programm sien kann)
ändert sich der Mauszeiger wieder zu einem normalen Pfeil und alles läuft korrekt ab und funktioniert wie vor dem ersten Wechselversuch.
Der Mauszeiger ändert sich dann aber wieder auf das Verbotsschild.

Dein Testprogramm (demo JvTabBar_Pagelist) reagiert genau gleich, wenn man "Allow Tab Moving" anklickt. Nur die eine Option reicht schon für das seltsame Verhalten.
Offensichtlich denkt der TabBar, er wäre im Move-Modus, nimmt aber die Seite der Pagelist nicht mit

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

Re: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von wp_xyz »

Probier's mit r9884.

Beim Löschen eines Tabs, der nicht verlassen werden darf, kommen meiner Meinung nach zuviele Message-Boxen. Aber eigentlich sind das widersprüchliche Anforderungen, die Komponente kann nicht wissen, wie die Prioritäten sind. Daher bin ich der Meinung, dass der Programmierer selbst diesen Konflikt auflösen muss (erkennen, ob der zu löschende Tab gesperrt ist und entweder das Löschen wegen der Sperre verhindern. Oder die Sperre aufheben und nach dem Löschen den nächsten Tab markieren lassen).

Die am 13. Okt 2025, 12:37 gemachte Aussage "aktive Tabs lassen sich mit X nicht schließen" - ist da jetzt noch aktuell oder nicht?

charlytango
Beiträge: 1195
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: ctGUI (Tabbed GUI auf Basis JvTabBar)

Beitrag von charlytango »

Test mit r9884:

aktive Tabs lassen sich mit X schließen - passt
Der Mauszeiger wechselt nicht die Form wenn ein Verlassen eines Tabs abgelehnt wird - passt.
Daher wird auch sauber gewechselt und nicht mehr verschoben -- passt

soweit ich das bis jetzt überblicken kann, scheint r9884 stabiler zu sein als alle vorher.

Ich muss ctGUI noch rundlutschen und gebe dir Bescheid wenn ich noch etwas finde

THX

Antworten