⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unittransfer.pas

📁 参照上兴、鸽子等源码编写编写出来的。 编译环境:Delphi7+SP+DP+indy9等控件
💻 PAS
字号:
unit UnitTransfer;

interface

  uses windows, SysUtils, Dialogs, ComCtrls, IdTCPServer, UnitFunciones;

  type TCallbackProcedure = procedure(Sender:Tobject) of object;

  type
   TDescargaHandler = class(TObject)
   public
   ProgressBar: TProgressBar;
   ListView: TListView;
   AThread:TIdPeerThread;
   Item: TListItem; //Item de la descarga
   Descargado: Int64;  //Datos descargados
   SizeFile: Int64;
   ultimoBajado: int64;
   Origen, Destino{目标}: AnsiString;
   Transfering : boolean;
   Finalizado: boolean;
   Status: String;
   cancelado: boolean;
   callback : TCallbackProcedure;
   es_descarga:boolean;
   constructor Create(PThread:TIdPeerThread; fname:AnsiString; TSize:integer;PDownloadPath:AnsiString; pListView:TListView; p_es_descarga:boolean);overload;
   procedure addToView;
   procedure TransferFile;
   procedure ResumeTransfer;
   procedure CancelarDescarga;
   procedure UploadFile;
   procedure Update;
   procedure UpdateVelocidad;
   private

  end;


implementation

constructor TDescargaHandler.Create(PThread:TIdPeerThread; fname:AnsiString; TSize:integer;PDownloadPath:AnsiString; pListView:TListView;p_es_descarga:boolean);
begin
Athread := pThread;
Origen := fname;
Destino := pDownloadPath;
SizeFile := TSize;
ListView := pListView;
transfering := false;
cancelado := false;
finalizado := false;
es_descarga := p_es_descarga;
ProgressBar := TProgressBar.Create(nil);
ProgressBar.Max := TSize;
if Athread <> nil then
  AThread.Synchronize(self.addToView)
else
  self.addToView;

end;

procedure TDescargaHandler.addToView;
var
  RectProg: TRect;
begin
item := ListView.items.add;
item.Caption := ExtractFileName(Origen);
Item.SubItems.Add('空闲');
Item.SubItems.Add(ObtenerMejorUnidad(self.SizeFile));
Item.SubItems.Add('0 Kb');
Item.SubItems.Add('');
Item.SubItems.Add('空闲');

if es_descarga then Item.ImageIndex := 38
else Item.ImageIndex := 36;

Item.Data := self; //apunta a un objeto tipo TDescargaHandler

RectProg := Item.DisplayRect(drBounds);
//Posicion izquierda de todo el item mas el ancho de la primera columna
RectProg.Left := RectProg.Left + ListView.Columns[0].Width;
//Posicion derecha de la progressbar mas el ancho de la columna donde est

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -