[lazarus] Recreating ListBox/ComboBox handle in win32

Karl Brandt pascalive at bol.com.br
Tue Aug 26 17:23:52 EDT 2003


Mattias Gaertner wrote:

>>2) The properties could be set in LM_CREATE handling, so 
>>TWincontrol.RecreateWnd could be called. Now the cited properties are 
>>set after LM_CREATE, with LM_SETSORTED and LM_SETSELMODE which causes a 
>>endless loop calling RecreateWindow.
> 
> 
> Endless loop?
> Is the win32 intf checking, if MultiSelect and Sort are already set? A
> RecreateWnd should not result in an endless loop. It is an allowed
> operation. Especially as the VCL uses it a lot.

The problem is that UpdateSelection and updateSorted are called inside 
CreateHandle so this is the sequence:

LM_SETSORTED -> call RecreateWnd -> call CreateHandle - Send 
LM_SETSORTED -> call RecreateWnd -> call CreateHandle ...

This was my first try when i try to get selection yo work

> 
> 
>>This has a good side effect: now the handle are created three times for 
>>each ListBox(LM_CREATE,LM_SETSORTED,LM_SETSELMODE) and twice for each
>>combo. The problem is that should be defined at LCL that these features
>>should be checked/set at create handling.
>>This is the most viable
>>
>>3) Doesn't allow to change these properties at runtime under win32 ????
>>
>>4) Fix the problem in RecreateListControl. Volunteers, please.
> 
> 
> Why not fix LM_CREATE in the win32 intf to create a Handle with the correct
> flags and add some code to LM_SETxxx to check if RecreateWnd is needed?
> 

But if is needed to recreate the above problems will happen

> 
>>PS: not recreating the handles, makes the listboxes to be drawn (but 
>>works fine)incorrectly (Looks the same problem as TMemo), but it's not a 
>>new bug. It's a previous hidden bug. In the other side, allows the user 
>>to use the combobox at ObjectInspector :-)
> 
> 
> :{
> a phyrus victory
>
sorry but what's phyrus?

karl






More information about the Lazarus mailing list