[64] Ugly dialogs
Moderators: Hacker, petermad, Stefan2, white
[64] Ugly dialogs
Some dialogs look ugly in TCx64:
Screenshot
Some controls now overlap. BTW bottom part of Associate dialog is not erased and displays garbage.
Screenshot
Some controls now overlap. BTW bottom part of Associate dialog is not erased and displays garbage.
- Vochomurka
- Power Member
- Posts: 816
- Joined: 2005-09-14, 22:19 UTC
- Location: Russia
- Contact:
Confirmed on Win7x64, TC8x64 with a clean ini.BTW bottom part of Associate dialog is not erased and displays garbage
Single user license #329241
PowerPro scripts for Total Commander
PowerPro scripts for Total Commander
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Christian, also please check Sync tool window. Checkbox 'Only selected' overlaps 'Compare' button, also width of 'Show' groupbox should be slightly increased (buttons are almost at its right end). Checkbox 'Empty directories' slightly overlaps upper checkbox text too.
And MRT window also have a bug: upper/lowercase combobox overlaps its bounding groupbox.
And another issue that possibly causes second separator not to be drawn: if you hover button '\' (on drive combo bar) by mouse, its left border is cropped.
And MRT window also have a bug: upper/lowercase combobox overlaps its bounding groupbox.
And another issue that possibly causes second separator not to be drawn: if you hover button '\' (on drive combo bar) by mouse, its left border is cropped.
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Problems from screenshot in first post are fixed except last one, also other ones are still exist:
Also in toolbar settings dialog 'Small icons' checkbox overlays groupbox.
Beta2 screenshot
BTW bottom part of Associate dialog is not erased and displays garbage.
And new one in Sync dialog: label '(in main window)' has too little height and its text is cut.And MRT window also have a bug: upper/lowercase combobox overlaps its bounding groupbox.
And another issue that possibly causes second separator not to be drawn: if you hover button '\' (on drive combo bar) by mouse, its left border is cropped.
Also in toolbar settings dialog 'Small icons' checkbox overlays groupbox.
Beta2 screenshot
Last edited by MVV on 2011-09-23, 10:32 UTC, edited 1 time in total.
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
I'm sorry, the association dialog is a Lazarus bug, I can't fix that easily.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Ah, I just noticed that problem is in LCLComboBox window that has child ComboLBox...
Maybe you may disable integral height for that combobox? It seems that Lazarus tries to set size for ComboLBox but it has no style LBS_NOINTEGRALHEIGHT so Windows resizes it to fit integral number of lines. Try to disable property IntegralHeight for this listbox.
Maybe you may disable integral height for that combobox? It seems that Lazarus tries to set size for ComboLBox but it has no style LBS_NOINTEGRALHEIGHT so Windows resizes it to fit integral number of lines. Try to disable property IntegralHeight for this listbox.

This is new problem that I noticed in TCx64.Also in toolbar settings dialog 'Small icons' checkbox overlays groupbox.
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
I thought about that too, but there is no such option, probably because it's not portable.Maybe you may disable integral height for that combobox?

Any idea why the background below the fitted combobox isn't transparent and using the color of the background?
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Actually I saw property IntegralHeight for listbox in Lazarus (I mentioned it above), so you should check its value. If LCLCComboBox is standard Lazarus object, it is a Lazarus bug that it doesn't synchronize properties of that object and nested ComboLBox object.
I think it is not using color of background, Lazarus just doesn't erase and redraw it because it thinks that all is ok there (it thinks thatLCLCComboBox window have no visible space that is not covered by child windows). That's why that part of window always have contents of screen that was at that place last (if you open another window above TC window and then close/minimize it, that rectangle will keep part of that window).
I think it is not using color of background, Lazarus just doesn't erase and redraw it because it thinks that all is ok there (it thinks thatLCLCComboBox window have no visible space that is not covered by child windows). That's why that part of window always have contents of screen that was at that place last (if you open another window above TC window and then close/minimize it, that rectangle will keep part of that window).
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Yes, the listbox has it, but not the combobox. 
Seems like the Lazarus developers never tried this open combobox, just the dropdown combobox. I could hack the library to turn off the integral height. But TC used that since the beginning, so I would prefer to fix that drawing bug...

Seems like the Lazarus developers never tried this open combobox, just the dropdown combobox. I could hack the library to turn off the integral height. But TC used that since the beginning, so I would prefer to fix that drawing bug...
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Actually I see that ComboLBox window have no style CBS_NOINTEGRALHEIGHT but it should have it.
Which component library you've used in Lazarus? Where can I find theese LCL* controls to play with them? My Lazarus component panels contain only T* objects.
Which component library you've used in Lazarus? Where can I find theese LCL* controls to play with them? My Lazarus component panels contain only T* objects.
Last edited by MVV on 2011-09-24, 07:39 UTC, edited 1 time in total.
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
I have used the exe installer of the current 64-bit snapshot. It creates folder "Lazarus" with all the component sources in subdir "lcl":
http://www.hu.freepascal.org/lazarus/
I'm using the one with Free Pascal 2.44. The 2.5 branch seems to completely mess up 16-bit WideChar string handling.
http://www.hu.freepascal.org/lazarus/
I'm using the one with Free Pascal 2.44. The 2.5 branch seems to completely mess up 16-bit WideChar string handling.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
I tested it a bit. Unfortunately Windows doesn't allow to set CBS_NOINTEGRALHEIGHT style after combo box is created (I didn't expect that). But it seems that Lazarus does drawing itself, that's why we see rectangle that is not redrawn.
So there are some ways to fix it:
1. Set this style on combo box creation (another Lazarus patch) - best way;
2. Erase gap yourself (you need to catch erase background messages);
3. Slightly resize combobox to make its height intregral, it will hide gap on most systems - easiest way.
I've subclassed standard TComboBox in my local module and got perfect result:
LCL calls this procedure just before window creating to set window parameters including styles. Params.Style must be modified after inherited CreateParams execution.
Now I can set any desired combobox height using TMyComboBox objects instead of TComboBox because I have disabled integral height.
So there are some ways to fix it:
1. Set this style on combo box creation (another Lazarus patch) - best way;
2. Erase gap yourself (you need to catch erase background messages);
3. Slightly resize combobox to make its height intregral, it will hide gap on most systems - easiest way.
I've subclassed standard TComboBox in my local module and got perfect result:
Code: Select all
//interface
uses
..., LCLType;
type
TMyComboBox = class(TComboBox)
procedure CreateParams(var Params: TCreateParams); override;
end;
//implementation
procedure TMyComboBox.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style OR CBS_NOINTEGRALHEIGHT;
end;
Now I can set any desired combobox height using TMyComboBox objects instead of TComboBox because I have disabled integral height.
- ghisler(Author)
- Site Admin
- Posts: 50856
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Thanks, I will use that as a workaround for the time being. I have slightly modified it:
Btw, I'm still getting a small white line below the combobox.
Code: Select all
if Style=csSimple then
Params.Style := Params.Style OR CBS_NOINTEGRALHEIGHT;
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com