Lazarus
Programming => General => Topic started by: jptferreira on May 23, 2019, 10:52:48 pm
-
When porting the code from linux to a windows installation all works great but the TPageControl doesn't show correctly under windows.
Because I selected to the the tabs on the left side, on linux it shows great with the tabs horizontal. On Windows it shows vertically and with the too and that makes it harder to read. At the same time it ruins the layout because it adjust the pagecontrol content.
Any hint on why this happens? Is there any workaround to have the windows layout to be kept the same as linux?
Thanks! ;)
-
are you referring to the "TEXT" in the tabs not being horizontal ?
-
Not just the text, even the tabs become vertical while on linux they are horizontal even if on the left, top or bottom.
Even just creating a new TPageControl and moving the tabs to the left will do that, instead of keeping the same orientation, it just changes to horizontal... I'm puzzled! Can be that I'm too tired and cannot see the most obvious! Thanks for your reply
:D
-
A picture says more than 1000 words ... :)
-
That problem has been around for a while now..
I fyou set the width of the tabs while they are vertical they kind of do the opposite of what you think.
it's how you think about it..
Think of the TABS as being rotated as you'll also notice the text is vertical, up for the left and down for the right.
The Tab widths and height rotate with it in their origination.
I believe this is how windows implements it..
-
Any hint on why this happens? Is there any workaround to have the windows layout to be kept the same as linux?
The pagecontrol is a control which depends strongly on the widget set. I checked several component packages but did not find a pagecontrol-like component in which the tabs can be moved to the left and the text remains horizontal. Maybe you can combine some kind of vertical menu component (such as JVCL's TOutlookbar, or maybe even a TListbox could be sufficient) with a TNotebook.
-
The TTabControl if set to LEFT, and with MULTILINE on, will cascade the Tabs down the side with text horizontal.
You can place this beside a TNoteBook and construct what you need.
TPageControl also has this however, the Multiline does not seem to have any effects when doing so?
-
A picture says more than 1000 words ... :)
Enjoy these 2000 words :)
-
Enjoy these 2000 words :)
:D
Interesting, I've never seen this kind of bug.
// That's not a standard XP Theme ... is it ???
-
// That's not a standard XP Theme ... is it ???
No, it is Crystal dlb 2.
-
When porting the code from linux to a windows installation all works great but the TPageControl doesn't show correctly under windows.
Because I selected to the the tabs on the left side, on linux it shows great with the tabs horizontal. On Windows it shows vertically and with the too and that makes it harder to read. At the same time it ruins the layout because it adjust the pagecontrol content.
Any hint on why this happens? Is there any workaround to have the windows layout to be kept the same as linux?
Thanks! ;)
Not just the text, even the tabs become vertical while on linux they are horizontal even if on the left, top or bottom.
Even just creating a new TPageControl and moving the tabs to the left will do that, instead of keeping the same orientation, it just changes to horizontal... I'm puzzled! Can be that I'm too tired and cannot see the most obvious! Thanks for your reply :D
A picture says more than 1000 words ... :)
Attached is the default behavior for Windows 7 and 10.
-
Any hint on why this happens? Is there any workaround to have the windows layout to be kept the same as linux?
The pagecontrol is a control which depends strongly on the widget set. I checked several component packages but did not find a pagecontrol-like component in which the tabs can be moved to the left and the text remains horizontal. Maybe you can combine some kind of vertical menu component (such as JVCL's TOutlookbar, or maybe even a TListbox could be sufficient) with a TNotebook.
Enjoy these 2000 words :)
:D
Interesting, I've never seen this kind of bug.
// That's not a standard XP Theme ... is it ???
Neither do I.
As wp said, I don't see it as bug, but as a simple different behavior between Windows and Linux's widget sets.
Maybe jptferreira should use other component to behave differently on Windows.
-
The TTabControl if set to LEFT, and with MULTILINE on, will cascade the Tabs down the side with text horizontal.
You can place this beside a TNoteBook and construct what you need.
It's not beautiful, but both TPageControl + TNotebook and TTabControl + TNotebook simulates the expected Linux behavior on Windows.
See attached first small sample.
-
The TTabControl if set to LEFT, and with MULTILINE on, will cascade the Tabs down the side with text horizontal.
You can place this beside a TNoteBook and construct what you need.
It's not beautiful, but both TPageControl + TNotebook and TTabControl + TNotebook simulates the expected Linux behavior on Windows.
See attached second small sample.
-
TPageControl also has this however, the Multiline does not seem to have any effects when doing so?
See default behavior on Windows for TPageControl.MultiLine on attached image.
-
This is not bug, but rather a specifics of underlying widget's implementation.
On gtk (and IIRC on qt too) there's a tab's close button feature, while windows lacks one, and this particular reason forced me to use custom-drawn control for my needs.
Such differences should be always taken into account, when dealing with cross-widgetset GUI apps.
-
This is not bug, but rather a specifics of underlying widget's implementation.
I agree.
On gtk (and IIRC on qt too) there's a tab's close button feature, while windows lacks one, and this particular reason forced me to use custom-drawn control for my needs.
If TPageControl on Windows had an "tab's close button", which is a recurrent issue, it would be an excellent feature instead of we always doing some sort of workaround to achieve it.
pagecontrol; tabsheet and close button
https://forum.lazarus.freepascal.org/index.php/topic,22678.0.html
[SOLVED] Pagecontrol and tabs
https://forum.lazarus.freepascal.org/index.php/topic,35434.0.html
TabSheet close / right click menu
https://forum.lazarus.freepascal.org/index.php/topic,27264.0.html
Disable individual tabsheets of pagecontrol
https://forum.lazarus.freepascal.org/index.php/topic,33386.0.html
How to implement a close button for a TTabsheet of a TPageControl
https://stackoverflow.com/questions/2201850/how-to-implement-a-close-button-for-a-ttabsheet-of-a-tpagecontrol
etc
https://www.google.com/search?client=firefox-b-d&q=lazarus+pagecontrol+close+tabsheet
Tab based Form error segmentation
https://forum.lazarus.freepascal.org/index.php/topic,36985.0.html
Tpagecontrol : Ttabsheet close button
https://forum.lazarus.freepascal.org/index.php/topic,8497.0.html
Custom Drawn Controls advances
https://forum.lazarus.freepascal.org/index.php/topic,15209.msg86690.html#msg86690
Dynamic GUI component - Help to understand
https://forum.lazarus.freepascal.org/index.php/topic,11731.msg59204.html#msg59204
TPageControl and close button
https://forum.lazarus.freepascal.org/index.php/topic,7952.0.html
Such differences should be always taken into account, when dealing with cross-widgetset GUI apps.
LCL should minimize those differences by implementing only the minimum features provided by all supported OSes or by extending some special features all OSes should have.
-
LCL should minimize those differences by implementing only the minimum features provided by all supported OSes or by extending some special features all OSes should have.
I don't think so. Not every program is written to be cross-platform!
The problem is that there is a "Restrictions" page in the Object inspector which lists the incompatibilities between widget sets and which should be respected when writing cross-platform applications. But the Restrictions page, as well as "View" > "Restriction browser", is so confusing that nobody knows and understands it (including myself).
-
LCL should minimize those differences by implementing only the minimum features provided by all supported OSes
LCL TPageControl in Lazarus has surprisingly poor functionality (especially for Windows). This is all the more surprising because TPageControl is the base component in Delphi. This is very regrettable. It also limits its use and forces you to look for other components to replace it.
@jptferreira
Try component ATTabs (you can install it from OPM) by Alextp (https://forum.lazarus.freepascal.org/index.php?action=profile;u=39659)
http://wiki.freepascal.org/ATTabs
-
I want to thank all for the replies. I'm almost done with the project and will then use ATTabs (just because of Windows :( ).
Best regards
JP