Zitat von faber <[email protected]>:
I guess it is a win32 interface bug, because you wrote it
works on some windows and not on windows XP.
The calls are in lcl/interfaces/win32/win32wscontrols.pp
TWin32WSWinControl.ShowHide
Add there a debug line:
debugln(['TWin32WSWinControl.ShowHide ',dbgsname(AWinControl),'
',AWinControl.HandleObjectShouldBeVisible]);
Run it.
Is the stringgrid made visible there?
TWin32WSWinControl.ShowHide SR1:TStringGrid1 True - and I don't see
SR1
Thanks for testing.
but what I observed, sometime on good working WinXP there is also problem
with showing Arrow also, as example, that debug:
TWin32WSWinControl.ShowHide StopA:TButton False
TWin32WSWinControl.ShowHide :TStringGrid1 False
449-:-743 -1
449-:-743 -1
TWin32WSWinControl.ShowHide OptsR:TArrow True
TWin32WSWinControl.ShowHide SR1:TStringGrid1 True
don't show Arrow but show SR1.
But what's important, I observed that the problem occurs only when the order
of debug lines is wrong (on autosizing delayed). When I get that debug:
set sr1 to visible
449-:-743 -1
449-:-743 -1
TWin32WSWinControl.ShowHide SR1:TStringGrid1 True
TWin32WSWinControl.ShowHide :TStringGrid1 False
TWin32WSWinControl.ShowHide OptsR:TArrow True
TWin32WSWinControl.ShowHide StopA:TButton False
then everything is always ok.
Weird.
The order should not matter for the winapi. I hope some winapi expert
has seen something like this and can give some hint.
Maybe the SR1 is not at the right position.
In the unit lcl/interfaces/win32wscontrols.pp in procedure
TWin32WSWinControl.SetBounds after the line AdaptBounds you can add a
debugln:
debugln(['TWin32WSWinControl.SetBounds ',dbgsname(AWinControl),'
l=',IntfLeft,' t=',IntfTop,' w=',IntfWidth,' h=',IntfHeight,'
suppress=',suppressMove]);
Is SR1 getting the right bounds?
And during the testing, I got this error once:
set sr1 to visible
449-:-743 -1
449-:-743 -1
TWin32WSWinControl.ShowHide SR1:TStringGrid1 True
TWin32WSWinControl.ShowHide :TStringGrid1 False
TWin32WSWinControl.ShowHide TWin32WSWinControl.ShowHide
TWin32WSWinControl.ShowH
ide StopA:TButton False
TApplication.HandleException Disk Full
Either your disk was full or there is too much output so that there is
a congestion that windows can not handle fast enough. You are writing
the output to a file, don't you?
Mattias
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus