📄 unittransfer.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 + -