[lazarus] Bugs in TCustomListBox

Karl Brandt pascalive at bol.com.br
Sun Dec 29 10:31:16 EST 2002


Mattias Gaertner wrote:

>On Sat, 28 Dec 2002 18:59:03 -0200
>Karl Brandt <pascalive at bol.com.br> wrote:
>
>  
>
>>  While trying to implement the ListBox/ComboBox under win32 i found 
>>some bugs In TCustomListBox code:
>>
>>(1)   Some time ago, Martin Smat found that the wrong Items object was 
>>being sent through LM_SORT message (TCustomListBox.UpdateSorted).
>> The problem is that the FItems is created as TExtendedStringList  and 
>>the interface expects a interface list type. The current solution is 
>>wrong because CNSendMessage(LM_GETITEMS, Self, nil) returns a new 
>>instance of the interface list and not the current list (see LM_GETITEMS).
>>
>>procedure TCustomListBox.UpdateSorted;
>>var AMessage : TLMSort;
>>begin
>>  if not HandleAllocated then exit;
>>  with AMessage do begin
>>    Msg:= LM_SORT;
>>   --> List:= TObject(Pointer(CNSendMessage(LM_GETITEMS, Self, nil)));
>>    IsSorted:= FSorted;
>>  end;
>>  CNSendMessage(LM_SORT, Self, @AMessage);
>>end;
>>
>>In CreateHandle,if  UpdateSorted is called after FItems is converted to 
>>a interface list type then we could just send FItems to the interface; 
>>To win32 is necessary that UpdateSelectionMode also come after the 
>>conversion;  
>>    
>>
>
>Applied.
>
>  
>
Thanks

>
>  
>
>>(2)  In LM_SETBORDER message (gtk and win32) there's a explicit typecast 
>>that may be wrong:
>>      (..) 
>>      If (TControl(Sender).fCompStyle = csListBox) Or 
>>(TControl(Sender).FCompStyle = csCListBox) Then
>>            Begin
>>              If -> TListBox(Sender)<-.BorderStyle = 
>>TBorderStyle(bsSingle) Then
>>    (..)
>>   If  the control is TCListBox the type cast is wrong. It's not causing 
>>errors, but i thing that should be corrected.
>>   I propose to make the BorderStyle property public in TCustomListBox 
>>so we can typecast to TCustomListBox and not to TListBox.
>>   BTW is there any problem to make the Sorted property public in 
>>TCustomListBox?
>>This would  facilitate the implementation of Sorted under win32.
>>    
>>
>
>I changed that (but didn't test a win32 compilation). 
>  
>
I updated and it's OK(with the ListBox code and the crash).
But, how about  property Sorted  being public in TCustomListBox?
This will make easier/faster to get this property working under win32.
Is there any problem with this?

>Mattias
>
>  
>








More information about the Lazarus mailing list