Ver Mensaje Individual
  #2  
Antiguo 29-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Debes indicarle al TListView que vas a realizar modificaciones o inserciones masivas de Items:

Eso se hace con los metodos BeginUpdate y EndUpdate de la clase TListItems (propiedad Items de los TListView). Basicamente lo que hace es demorar todas las actualizaciones visuales hasta que se llame a EndUpdate. La estructura general es la siguiente:

Código Delphi [-]
procedure ...
var
  ListItem: TListItem;
begin
  ListView.Items.BeginUpdate;
  try
    bucle for/while/ etc
    begin
      // crear el ListItem y setear propiedades segun corresponda
      ListItem := ListView.Items.Add;
      ListItem.Caption := 'blabla';
      ListItem.SubItems.Add('blabla');
      // etc
    end;
  finally
    ListView.Items.EndUpdate;
  end;
end;

El try-finally asegura que se invoque siempre en ultima instancia el metodo EndUpdate. De omitirse ese llamado, el ListView nunca se actualiza.

Es importante notar que por cada BeginUpdate que se invoque, se debe emparejar con un EndUpdate. Es decir, los BeginUpdate se pueden "anidar", asi que despues es necesario "deshacerlos", uno por uno, con un EndUpdate
Responder Con Cita