Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ListView en modo virtual (https://www.clubdelphi.com/foros/showthread.php?t=53963)

byfali 05-03-2008 18:36:11

ListView en modo virtual
 
Hola amigos, alguien sabe porque al rellenar el ListView en el evento ListView1Data como muestro a cuntinuacion me incrementa los numeros de una variable integer de dos en dos.?



var
Form16: TForm16;
i : integer;

implementation

procedure TForm16.FormCreate(Sender: TObject);
begin
ListView1.OwnerData:=True;
ListView1.Items.Count:=100;

procedure TForm16.ListView1Data(Sender: TObject; Item: TListItem);
begin

inc(i);
Item.Caption:=IntToStr(i);

end;

Mick 05-03-2008 18:51:28

--------------------

Mick 05-03-2008 18:58:49

El evento se llama cuando cualquier item tiene que redibujarse en pantalla, asi que no puedes asignar los valores a los items dentro de ese evento, confiando en que se llame solo una vez por elemento y que ademas se llamen en el orden correcto.

Por ejemplo si el listview estuviese "medio" tapado por algun otro control o ventana verias que el evento solo seria llamado para aquellos elementos "visibles".

Mejor iinicializa todos los elementos del listview con un bucle en el oncreate del form por ejemplo.

Saludos

byfali 05-03-2008 19:08:32

Gracias por tu respuesta Nick

Lo que intento es llenar el ListView con los bytes de un archivo y este metodo es el mas rapido cuando el archivo es muy grande.
El problema es lo que he comentado antes, me muestra los bytes de dos en dos.
Ejemplo:

BYTES (BIEN) BYTES (EN LISTVIEW)
------------- ---------------------
125 125
200 254
254 14
95 100
14
36
100

La muestra de codigo anterior era para simplificar. Adjunto parte de lo que tengo hecho.

procedure TForm16.ListView1Data(Sender: TObject; Item: TListItem);
var
byte:Integer;
begin

byte:= LeerByte;
Item.Caption:=IntToStr(byte);

end;

LeerByte es una funcion que lee los bytes del archivo.


La franja horaria es GMT +2. Ahora son las 10:14:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi