Tri-state checkboxes
Moderators: Hacker, petermad, Stefan2, white
Tri-state checkboxes
There is a difference in the way that tri-state checkboxes work between 32 and 64 bit versions.
Example: Commands > Search > Advanced > Attributes > Click an attribute
32bit: mixed -> unchecked -> checked -> mixed -> ...
64bit: mixed -> checked -> unchecked -> mixed -> ...
The 32bit version is the one the is the same as previous TC versions.
Example: Commands > Search > Advanced > Attributes > Click an attribute
32bit: mixed -> unchecked -> checked -> mixed -> ...
64bit: mixed -> checked -> unchecked -> mixed -> ...
The 32bit version is the one the is the same as previous TC versions.
Shouldn't be a Lazarus-Delphi inconsistency. It looks like a difference between 32 and 64 bit compiler versions or something similar. Funny...MVV wrote:It is bad that Lazarus doesn't follow Delphi here.
- Wanderer -
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Normally using latest TC on:
x32: WinXPx32 SP3 (very rarely nowadays).
x64: Clients/Servers - Win10/Win11 and Win2K16 to Win2K22, mainly Win10 though.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Normally using latest TC on:
x32: WinXPx32 SP3 (very rarely nowadays).
x64: Clients/Servers - Win10/Win11 and Win2K16 to Win2K22, mainly Win10 though.
I thought they were both Lazarus?!?! I suppose Christian has confirmed what you say. I'd appreciate a link to the relevant topic.MVV wrote:wanderer, don't forget that TC8x32 is still compiled with Delphi 2 while TC8x64 is compiled with Lazarus x64.
- Wanderer -
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Normally using latest TC on:
x32: WinXPx32 SP3 (very rarely nowadays).
x64: Clients/Servers - Win10/Win11 and Win2K16 to Win2K22, mainly Win10 though.
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Normally using latest TC on:
x32: WinXPx32 SP3 (very rarely nowadays).
x64: Clients/Servers - Win10/Win11 and Win2K16 to Win2K22, mainly Win10 though.
Christian wrote many times that TC8x32 is still in Delphi, you may use forum search.
Also, you may compare EXE size of TC7x32, TC8x32 and TC8x64. TC8x64 size is doubled due to Lazarus.
At least, you may compare linker versions in PE headers of files. TC7x32 and TC8x32 have linker version 2.25 while TC8x64 has version 2.44.
Also, you may compare EXE size of TC7x32, TC8x32 and TC8x64. TC8x64 size is doubled due to Lazarus.
At least, you may compare linker versions in PE headers of files. TC7x32 and TC8x32 have linker version 2.25 while TC8x64 has version 2.44.
Last edited by MVV on 2011-09-29, 10:29 UTC, edited 2 times in total.
Confirmed.
I took me some time to realize this, I thought my keyboard was getting flunky. I use to remove archive and other attributes on text-files containing notes of stuff I plan on doing once I have finished the tasks therein. I do this quite often, and I do it all with the keyboard rather fast (1.1 seconds) sometimes without looking at the screen; mark files with insert, ALT-F -> Enter -> Space ->Tab -> Space -> Tab ->Space -> Tab -> Space -> Tab -> Space -> Enter
Suddenly because of the change in the tri-state behaviour I've started to set attributes on files where I intended to remove them...
I hope this can be fixed somehow...
I took me some time to realize this, I thought my keyboard was getting flunky. I use to remove archive and other attributes on text-files containing notes of stuff I plan on doing once I have finished the tasks therein. I do this quite often, and I do it all with the keyboard rather fast (1.1 seconds) sometimes without looking at the screen; mark files with insert, ALT-F -> Enter -> Space ->Tab -> Space -> Tab ->Space -> Tab -> Space -> Tab -> Space -> Enter
Suddenly because of the change in the tri-state behaviour I've started to set attributes on files where I intended to remove them...

I hope this can be fixed somehow...

- ghisler(Author)
- Site Admin
- Posts: 50479
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Unfortunately this happens inside the Lazarus library - I haven't had the time yet to find a solution.
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
It seems that we need to patch following piece of code:
It is in lcl\interfaces\win32\win32callback.inc file.
We need to change else Flags := BST_CHECKED to else Flags := BST_UNCHECKED because it is standard for Windows.
Code: Select all
if (Flags <> BST_CHECKED) or not (lWinControl is TRadioButton) then
begin
if (Flags=BST_CHECKED) then
Flags := BST_UNCHECKED
else
if (Flags=BST_UNCHECKED) and
TCustomCheckbox(lWinControl).AllowGrayed then
Flags := BST_INDETERMINATE
else
Flags := BST_CHECKED;
//pass 0 through LParam to force sending LM_CHANGE
Windows.SendMessage(lWinControl.Handle, BM_SETCHECK,
Windows.WPARAM(Flags), 0);
end;
We need to change else Flags := BST_CHECKED to else Flags := BST_UNCHECKED because it is standard for Windows.

- ghisler(Author)
- Site Admin
- Posts: 50479
- Joined: 2003-02-04, 09:46 UTC
- Location: Switzerland
- Contact:
Yes, exactly - in Delphi I could just override the "Toggle" method. This is used in Lazarus too, but only for hotkeys! So when you switch the language to English and press Alt+A in the attributes dialog, the order is like in the 32-bit version...
Author of Total Commander
https://www.ghisler.com
https://www.ghisler.com
Confirm fixed tri-state order in 8.0β4.
Flint's Homepage: Full TC Russification Package, VirtualDisk, NTFS Links, NoClose Replacer, and other stuff!
Using TC 11.03 / Win10 x64
Using TC 11.03 / Win10 x64