#21 TControl.LVSort Может не все сделал, но так работает

closed-out-of-date
nobody
None
5
2008-03-13
2007-12-05
BohdanT
No

Может не все сделал, но так работает:

54260c54267,54273
< LVI.mask := LVIF_TEXT;
---
> {$IFDEF WINCE}
> LVI.lParam := Idx;
> LVI.mask := LVIF_TEXT+LVIF_PARAM;
> {$ELSE}
> LVI.mask := LVIF_TEXT;
> {$ENDIF}
>
54264a54278
>
54538a54553,54557
> {$ifdef wince}
> procedure UpdateIdx;
> var
> lVI:TLVItem;
> n:integer;
54539a54559,54572
> LVI.mask:=LVIF_PARAM;
> LVI.iSubItem:=0;
> LVI.iItem:=0;
> n:=COUNT;
> while n>0 do begin
> LVI.lParam:=LVI.iItem;
> Perform( LVM_SETITEM, 0, Integer( @LVI ) );
> Inc(LVI.iItem);
> Dec(n);
> end;
> end;
> {$endif wince}
> begin
>
54541,54542c54574,54577
< MsgOk('TControl.LVSort must be fixed!');
< Halt(6); // FIXME
---
> Perform(LVM_SORTITEMS, Integer(@Self), Integer( @CompareLVItems ) );
> UpdateIdx;

Discussion

  • jura
    jura
    2007-12-12

    Logged In: YES
    user_id=1226674
    Originator: NO

    Ты используешь поле LVIF_PARAM для хранения индекса элемента. Но это поле может использоваться в программе (и часто используется) для хранения каких-то данных и они будут потеряны в таком случе...
    Поэтому лучше реализовать сортировку самостоятельно с помощью процедуры SortData.

     
  • jura
    jura
    2008-03-13

    • status: open --> closed-out-of-date