Ver Mensaje Individual
  #19  
Antiguo 14-06-2006
Avatar de GaaK
GaaK GaaK is offline
Miembro
 
Registrado: oct 2005
Ubicación: Trujillo - Peru
Posts: 31
Reputación: 0
GaaK Va por buen camino
Codigo fuente Agenda

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
    { Private declarations }
  public
    { Public declarations }
  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 -
Responder Con Cita