Cita:
te cuento que para la hora tengo una tabla con intervalos de tiempo con valores enteros
|
mmm, Usas Bases de datos para el resto del programa ?
Si Usas Bases de datos, es más facil crear un campo HoraInicio (de tipo Date) asociado a cada Pc
Si no Usas Bases de datos, acabo de mirar bien el tipo TlistItem y tiene una propiedad llamada
Data aqui se puede guardar un puntero a cualquier cosa, así que puedes crearte un puntero a un registro y guardar ahí la hora de inicio de cada Pc.
Para que veas como va. crea un programa nuevo, metele un Listview, un Boton y un timer con Interval a 1 seg.
Este es mi codigo.
Código:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type TInfo = record // Tipo Informacion
Hora : TDateTime;
end;
TpTInfo = ^TInfo; // Tipo Puntero al tipo Informacion
type
TForm1 = class(TForm)
Button1: TButton;
ListView1: TListView;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var H :TpTInfo;
begin
with ListView1.items.Add do
begin
Caption := 'PC3';
SubItems.Add('Ocupado');
SubItems.Add('');
New(H);
H^.Hora:=Now;
Data:= H;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
hora:TDateTime;
i : integer;
begin
with ListView1 do
for i:=0 to pred(items.count) do
if items[i].subItems[0] <>'Libre' then
begin
if Assigned(Items[i].data) then // me aseguro de que se ha creado el registro
begin
hora :=TpTinfo(Items[i].data)^.Hora;
items[i].SubItems[1] := FormatDateTime('hh:nn:ss', Now - Hora );
end;
end;
end;
end.
El ejemplo consiste en que cada vez que pulsas el boton se crea un nuevo elemento y aprovecha la propiedad Data para meter la hora en un registro asociado a cada elemento del Listview. En el registro TInfo podrías guardar toda la información que necesitaras.
Eso si. Todo lo que almacenas en Data, eres tú el que has de liberarlo antes de borrar algun elemento del listview.
Saludos, y espero que alguno de estos métodos te sirva.
_________________________________________________
Sugerencia: escribir el codigo fuente entre [ code] y [ /code] al postearlo en el foro. (sin el espacio que hay despues del corchete [, es mas facil leerlo)