home *** CD-ROM | disk | FTP | other *** search
/ Softwarová Záchrana 3 / Softwarova-zachrana-3.bin / ArsClip / source.zip / UnitListBoxMover.pas < prev    next >
Pascal/Delphi Source File  |  2002-05-30  |  3KB  |  110 lines

  1. unit UnitListBoxMover;
  2.  
  3. //
  4. // corrected problems where moving an item would
  5. // delete associated objects or associate objects with
  6. // the wrong string
  7. //
  8. interface
  9. uses ComCtrls, Classes, Contnrs, StdCtrls;
  10.  
  11. procedure MoveSelectedUp(lv : TListBox);
  12. procedure MoveSelectedDown(lv : TListBox);
  13. procedure MoveSelectedTop(lv : TListBox);
  14. procedure MoveSelectedBottom(lv : TListBox);
  15.  
  16. implementation
  17.  
  18. procedure MoveSelectedUp(lv : TListBox);
  19. var i : integer;
  20. begin
  21.     lv.Items.BeginUpdate;
  22.     lv.Sorted := false;
  23.  
  24.     for i := 0 to (lv.Count - 1) do begin
  25.         if (lv.selected[i]) and (i <> 0) then begin
  26.             if (not lv.selected[i - 1]) then begin
  27.                 //s := lv.Items[i - 1];
  28.                 //lv.items[i - 1] := lv.items[i];
  29.                 //lv.items[i] := s;
  30.  
  31.                 lv.Items.Exchange(i-1, i);
  32.                 lv.selected[i] := false;
  33.                 lv.selected[i - 1] := true;
  34.  
  35.             end;
  36.         end;
  37.     end;
  38.     lv.items.endupdate;
  39. end;
  40.  
  41. procedure MoveSelectedDown(lv : TListBox);
  42. var i : integer;
  43. begin
  44.     lv.Items.BeginUpdate;
  45.  
  46.     lv.Sorted := false;
  47.  
  48.     for i := (lv.Count - 1) downto 0 do begin
  49.         if (lv.selected[i]) and (i <> lv.count - 1) then begin
  50.             if (not lv.selected[i + 1]) then begin
  51.                 //s := lv.Items[i + 1];
  52.                 //lv.items[i + 1] := lv.items[i];
  53.                 //lv.items[i] := s;
  54.                 lv.Items.Exchange(i+1, i);
  55.                 lv.selected[i] := false;
  56.                 lv.selected[i + 1] := true;
  57.             end;
  58.         end;
  59.     end;
  60.  
  61.  
  62.    lv.Items.EndUpdate;
  63. end;
  64.  
  65. procedure MoveSelectedTop(lv : TListBox);
  66. var i : integer;
  67. begin
  68.     lv.Items.BeginUpdate;
  69.  
  70.     //
  71.     // the trick here is to move unselected items to the top
  72.     //
  73.     for i := 0  to (lv.items.count - 1) do begin
  74.         if (lv.selected[i])  then begin
  75.             //s := lv.items[i];
  76.  
  77.             //lv.items.Delete(i);
  78.             //lv.items.insert(0, s);
  79.             lv.Items.Move(i,0);
  80.             lv.selected[0] := true;
  81.         end;
  82.     end;
  83.  
  84.     lv.Items.EndUpdate;
  85. end;
  86.  
  87. procedure MoveSelectedBottom(lv : TListBox);
  88. var i: integer;
  89. begin
  90.     lv.Items.BeginUpdate;
  91.  
  92.     //
  93.     // the trick here is to move unselected items to the top
  94.     //
  95.     for i := 0  to (lv.items.count - 1) do begin
  96.         if (not lv.selected[i])  then begin
  97.             //s := lv.items[i];
  98.             //lv.items.Delete(i);
  99.             //lv.items.insert(0, s);
  100.             lv.Items.Move(i, 0);
  101.             lv.selected[0] := false;
  102.         end;
  103.     end;
  104.  
  105.     lv.Items.EndUpdate;
  106. end;
  107.  
  108.  
  109. end.
  110.