unit uCargaEDI; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, jpeg, ComCtrls, StdCtrls, JvExComCtrls, JvAnimate, pngimage, XPMan, ImgList; type TIconoEstado = (ieOK, ieMAL, ieNada); TfCargaEDI = class(TForm) Label13: TLabel; JvAnimate1: TJvAnimate; Button1: TButton; TimerCuentaAtrasCerrar: TTimer; ListView1: TListView; Image1: TImage; Bevel1: TBevel; TimerCuentaAtrasCargar: TTimer; XPManifest1: TXPManifest; ImageList1: TImageList; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure TimerCuentaAtrasCerrarTimer(Sender: TObject); procedure TimerCuentaAtrasCargarTimer(Sender: TObject); private FNumCargasError : Integer; FNumCargasOK : Integer; FCuentaAtras : Integer; procedure OnLoadSuccess(Sender: TObject); procedure OnLoadError(Sender : TObject); procedure AnadirMensaje(const aMensaje : String; Icono : TIconoEstado = ieNada); procedure LanzarCargas; public { Public declarations } end; var fCargaEDI: TfCargaEDI; implementation {$R *.dfm} uses uCargarFicheros, uDataModuleBase; procedure TfCargaEDI.FormShow(Sender: TObject); begin FNumCargasOK := 0; FNumCargasError := 0; TimerCuentaAtrasCargar.Enabled := True; end; procedure TfCargaEDI.OnLoadError(Sender: TObject); begin Beep; AnadirMensaje((Sender as TCargarFicherosThread).Nombre + ': ' + (Sender as TCargarFicherosThread).ErrorText, ieMAL); FNumCargasError := FNumCargasError + 1; if (FNumCargasError = 2) or ((FNumCargasError = 1) and (FNumCargasOK = 1)) then begin JvAnimate1.Visible := False; JvAnimate1.Active := False; TimerCuentaAtrasCerrar.Enabled := True; end; end; procedure TfCargaEDI.OnLoadSuccess(Sender: TObject); begin Beep; AnadirMensaje((Sender as TCargarFicherosThread).Nombre + ': Ficheros cargados', ieOK); FNumCargasOK := FNumCargasOK + 1; if (FNumCargasOK = 2) or ((FNumCargasError = 1) and (FNumCargasOK = 1)) then begin JvAnimate1.Visible := False; JvAnimate1.Active := False; TimerCuentaAtrasCerrar.Enabled := True; end; end; procedure TfCargaEDI.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfCargaEDI.FormCreate(Sender: TObject); begin FCuentaAtras := 5; FNumCargasError := 0; FNumCargasOK := 0; end; procedure TfCargaEDI.Button1Click(Sender: TObject); begin Close; end; procedure TfCargaEDI.AnadirMensaje(const aMensaje: String; Icono : TIconoEstado = ieNada); var AItem : TListItem; begin AItem := ListView1.Items.Add; case Icono of ieOK : AItem.ImageIndex := 1; ieMAL : AItem.ImageIndex := 0; else AItem.ImageIndex := -1; end; AItem.Caption := TimeToStr(Now); AItem.SubItems.Add(aMensaje); end; procedure TfCargaEDI.LanzarCargas; begin if not dmBase.HayConexion then begin JvAnimate1.Visible := False; JvAnimate1.Active := False; AnadirMensaje('No se encuentra el servidor', ieMAL); TimerCuentaAtrasCerrar.Enabled := True; end else begin JvAnimate1.Active := True; AnadirMensaje('Cargando ficheros de ventas'); TCargarVentasThread.Create('CABVEN.TXT', 'LUGVEN.TXT', 'ARTVEN.TXT', OnLoadSuccess, OnLoadError); AnadirMensaje('Cargando ficheros de inventario'); TCargarInventarioThread.Create('CABINV.TXT', 'LININV.TXT', 'CANTINV.TXT', OnLoadSuccess, OnLoadError); end; end; procedure TfCargaEDI.TimerCuentaAtrasCerrarTimer(Sender: TObject); begin Button1.Enabled := True; TimerCuentaAtrasCerrar.Enabled := False; if FCuentaAtras = 0 then Close; Button1.Caption := 'Cerrar (' + IntToStr(FCuentaAtras) + ')'; Update; Application.ProcessMessages; FCuentaAtras := FCuentaAtras - 1; TimerCuentaAtrasCerrar.Enabled := True; end; procedure TfCargaEDI.TimerCuentaAtrasCargarTimer(Sender: TObject); begin TimerCuentaAtrasCargar.Enabled := False; Update; LanzarCargas; end; end.