Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
General
»
NiceGrid freezes when resizing column by mouse
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
YM Player
by
TRon
[
Today
at 02:32:16 am]
How single procedure ends...
by
Marion
[
Today
at 01:57:43 am]
Python4Lazarus Undefined ...
by
Grew
[
Today
at 01:57:41 am]
ct2laz - convertor betwee...
by
Sharfik
[
Today
at 01:26:03 am]
StringGrid colored rows d...
by
wp
[December 02, 2024, 11:21:00 pm]
Amigo programming languag...
by
maurog
[December 02, 2024, 11:19:44 pm]
[SOLVED] How to document ...
by
korba812
[December 02, 2024, 10:49:39 pm]
AVRPascal – free code edi...
by
ackarwow
[December 02, 2024, 10:18:22 pm]
storing string
by
Remy Lebeau
[December 02, 2024, 09:46:56 pm]
How do you know wich vers...
by
Warfley
[December 02, 2024, 08:32:11 pm]
Unable to find file "date...
by
Cumberland
[December 02, 2024, 08:27:29 pm]
Common File Dialogs Have ...
by
rvk
[December 02, 2024, 07:33:14 pm]
Developing a Kernel Modul...
by
nicolap
[December 02, 2024, 05:37:05 pm]
LazMapView - adding a sca...
by
alpine
[December 02, 2024, 05:26:28 pm]
[SOLVED] Howto use a DEFI...
by
tintinux
[December 02, 2024, 04:55:13 pm]
ZDataset.Locate + loParti...
by
tintinux
[December 02, 2024, 04:47:48 pm]
Strange memory allocation...
by
MathMan
[December 02, 2024, 03:40:40 pm]
Best UI to adopte while d...
by
marcov
[December 02, 2024, 02:42:45 pm]
Random SnowFlakes:
by
Boleeman
[December 02, 2024, 12:24:18 pm]
AY_FLY Library
by
Thaddy
[December 02, 2024, 11:50:21 am]
Hustle - A simple task ma...
by
MarkMLl
[December 02, 2024, 11:37:20 am]
How much would it hamper ...
by
Thaddy
[December 02, 2024, 11:36:24 am]
Lazarus MDI application.
by
Fred vS
[December 02, 2024, 11:25:21 am]
Linking question
by
Khrys
[December 02, 2024, 10:23:13 am]
CudaText Editor (written ...
by
AlexTP
[December 02, 2024, 10:16:27 am]
« previous
next »
Print
Pages: [
1
]
Author
Topic: NiceGrid freezes when resizing column by mouse (Read 943 times)
chrv
Jr. Member
Posts: 68
NiceGrid freezes when resizing column by mouse
«
on:
September 23, 2023, 06:44:11 pm »
Hello everyone,
I'm using a TNiceGrid in my current project.
At runtime, when resizing a NiceGrid column with the mouse, my app freezes. It doesn't happend if changing column width by code.
Is this a known issue?
See attached code
Logged
Win32 Laz 2.0.12 FPC 3.2.0 AND Laz 3.4 FPC 3.2.2
wp
Hero Member
Posts: 12457
Re: NiceGrid freezes when resizing column by mouse
«
Reply #1 on:
September 23, 2023, 07:21:47 pm »
I confirm the issue, never saw it before. It happens in the show/hide scrollbar procedure.
«
Last Edit: September 23, 2023, 07:44:09 pm by wp
»
Logged
wp
Hero Member
Posts: 12457
Re: NiceGrid freezes when resizing column by mouse
«
Reply #2 on:
September 23, 2023, 08:00:35 pm »
In TNiceGrid.Recalculate there are two calls to "SetScrollbar". The hang occurs aways when the provided offset (FHorzOffset, FVertOffset) is 0. The following modification fixes the issue for me:
Code: Pascal
[Select]
[+]
[-]
procedure
TNiceGrid
.
Recalculate
;
...
FHorzOffset
:
=
Max
(
0
,
Min
(
FHorzOffset
,
FMaxHScroll
)
)
;
FVertOffset
:
=
Max
(
0
,
Min
(
FVertOffset
,
FMaxVScroll
)
)
;
if
FHorzOffset <>
0
then
// <--- ADDED
SetScrollBar
(
SB_HORZ
,
FMaxHScroll
,
FHorzOffset
,
SIF_POS
or
SIF_RANGE
)
;
if
FVertOffset <>
0
then
// <--- ADDED
SetScrollBar
(
SB_VERT
,
FMaxVScroll
,
FVertOffset
,
SIF_POS
or
SIF_RANGE
)
;
AllWidth
:
=
Min
(
ClientWidth
,
BodyWidth
+
FixedWidth
)
;
...
Please test, if this has any side-effects.
Logged
jamie
Hero Member
Posts: 6733
Re: NiceGrid freezes when resizing column by mouse
«
Reply #3 on:
September 23, 2023, 08:26:40 pm »
shouldn't the SetScrollbar exit and do nothing on zero offset? I mean if that is a general function, it could cause issues for other code?
«
Last Edit: September 23, 2023, 08:29:05 pm by jamie
»
Logged
The only true wisdom is knowing you know nothing
chrv
Jr. Member
Posts: 68
Re: NiceGrid freezes when resizing column by mouse
«
Reply #4 on:
September 23, 2023, 10:32:07 pm »
@wp : It works for me. THANKS
Logged
Win32 Laz 2.0.12 FPC 3.2.0 AND Laz 3.4 FPC 3.2.2
wp
Hero Member
Posts: 12457
Re: NiceGrid freezes when resizing column by mouse
«
Reply #5 on:
September 23, 2023, 11:12:41 pm »
jamie made me think about it again. I don't know, maybe it's not correct. The issue is that Recalculate calls SetScrollbar and this triggers WMSize for whatever reason I don't understand. And WMSize has Recalculate again in its handler...
I think that most of these Windows-like messages may have been fixes in the early days of Delphi, but now in Lazarus they usually are not required any more and at places they are even harmful. Therefore I tested to remove the WMSize handler and to replace it by the Lazarus counterpart DoOnResize - and now the issue is gone (even without the "if FHorzOffset <> 0").
I also noticed that the mouse wheel is not working and fixed it in the same way (use DoMouseWheel rather than WMMouseWheel). And I tweaked mouse wheel support a bit: normal scrolling now is by 1 row, and when the CTRL key is pressed during scrolling it is by 5 rows.
To get the new version I'd recommend to download the snapshot zip file from
https://sourceforge.net/p/lazarus-ccr/svn/HEAD/tree/components/nicegrid/
(or to use SVN).
Logged
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
General
»
NiceGrid freezes when resizing column by mouse
TinyPortal
© 2005-2018