Hola, desarrollando una agenda en mi Delphi 2005 (Win32) me ocurre lo siguiente:
1. Creo una Nueva Aplicación VCL.
2. En el Form1 agrego un TListView1.
3. Hago que <Unit1.pas> sea:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i, registros : Integer;
iStr : String;
Lista : TStringList;
begin
registros := 100-1;
ShowMessage('Creando lista de datos ''file.lst'', espere...');
with TStringList.Create do
try
for i:=0 to registros do
begin
iStr := IntToStr(i+1);
Add('Nombre de Contacto ' + iStr);
Add(DateToStr(Now+i));
Add('Email_' + iStr + '@hotmail.com');
Add('Tel. de Contacto ' + iStr);
Add('Comentarios');
end;
SaveToFile(ExtractFilePath(Application.ExeName) + 'file.lst');
finally
Free;
end;
ShowMessage('Actualizando Propiedades de ListView1, espere...');
ListView1.ViewStyle := vsReport;
ListView1.Align := alClient;
ListView1.Columns.Add.Caption := 'Nombre';
ListView1.Columns.Add.Caption := 'Nacimiento';
ListView1.Columns.Add.Caption := 'Correo';
ListView1.Columns.Add.Caption := 'Telefono';
ListView1.Columns.Add.Caption := 'Comentarios';
ShowMessage('Llenando los Items en ListView1, espere...');
Lista := TStringList.Create;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName) + 'file.lst');
for i:=0 to (Lista.Count div 5)-1 do
with ListView1.Items.Add do
begin
Caption := Lista[i*5];
SubItems.Add(Trim(Lista[i*5+1]));
SubItems.Add(Trim(Lista[i*5+2]));
SubItems.Add(Trim(Lista[i*5+3]));
SubItems.Add(Trim(Lista[i*5+4]));
end;
end;
end.
4. 'Así como está' el código, al mostrar 100 registros lo hace de manera normal.
5. Si agrego un XPMan en la sección 'uses' y ejecuto el programa, me doy con la NO grata sorpresa que con la barra de desplazamiento, se producen unos destellos como si fuera una actualización muy lenta del ListView1. ¿Hay alguna forma de evitar esto con XPMan activo?
6. Lo dicho en el paso 5 ocurre si compilamos el código 'así como está' pero cambiando el número de registros a 19000, es decir, sin usar XPMan pero con una gran cantidad de registros se obtiene lo mismo que en el paso 5.
7. Con 19000 registros tarda el 'proceso de llenado' del ListView1... pero, ¿porqué tarda ese mismo tiempo al cerrarse la aplicación?
Gracias de antemano.
- GaaK -