Scalabium Software

SMExport/SMImport suites
Knowledge for your independence'.
Home Delphi and C++Builder tips


#154: To exchange items in TListView

Today I want to describe how you may exchange some items in standard TListView. For example, you have 5 items and want to swap positions for first and third items

Problem that standard TListView component haven't such method and you must realize it yourself.

We remember that the standard way from old Pascal times (for numbers) is:

procedure Swap(X, Y: Integer);
var
  s: Integer;
begin
  s := X;
  X := Y;
  Y := X
end;

Something similar we can do with TListItem too.
But just to save all strings (caption+sub items) somewhere is not enough because TListItem class have a lot of other information (image indexes, pointer as Data, etc)

So correct way is to use Assign method:

procedure ExchangeItems(lv: TListView; const i, j: Integer);
var
  tempLI: TListItem;
begin
  lv.Items.BeginUpdate;
  try
    tempLI := TListItem.Create(lv.Items);
    tempLI.Assign(lv.Items.Item[i]);
    lv.Items.Item[i].Assign(lv.Items.Item[j]);
    lv.Items.Item[j].Assign(tempLI);
    tempLI.Free;
  finally
    lv.Items.EndUpdate
  end;
end;

So structure is a same as in our sample for Integer. All what we added are BeginUpdate and EndUpdate (just allow to reduce a flickering)

So if you want to exchange items in any ListView, just call this procedure...


Published: July 11, 2003

See also
 
Fast Document Viewer
Clarion Viewer
DBExport tools
DBISAM Viewer
SMExport suite
Paradox to MS Access converter
Mail parser (ActiveX)
Clarion to Text converter/a>
Protected Storage Viewer
SMDBGrid
 
 


Contact to webmaster

 

Borland Software Code Gear Scalabium Delphi tips

Copyright© 1998-2017, Scalabium Software. All rights reserved.
webmaster@scalabium.com

SMReport Autogenerated