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

Reply via email to