![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProgressBar [D7, XP]
17.10.2006 © (2006-10-17 20:52:00)Есть код:
procedure TForm1.Button2Click(Sender: TObject);
var
fs:TFileStream;
begin
ClientSocket1.Host:=Edit2.Text;
ClientSocket1.Active:=true;
fs:=TFileStream.Create(Edit1.Text,fmOpenread);
try
fs.Position:=0;
ClientSocket1.Socket.SendText('Size:'+IntToStr(fs.Size)+#0);
ClientSocket1.Socket.SendStream(fs);
finally
end;
end;
Как сюда добавить ProgressBar???
Сергей М. (2006-10-18 09:12:00) [1]
> 17.10.2006 (17.10.06 20:58) [3]
> знать сколько Файла отправлено
type
TMyFileStream = class(TFileStream)
private
FOnReadProgress: TNotifyEvent;
protected
procedure Read(var Buffer; Count: Longint): Longint; override;
public
property OnReadProgress: TNotifyEvent read FOnReadProgress write FOnReadProgress;
end;
...
procedure TMyFileStream.Read;
begin
Result := inherited Read(Buffer, Count);
if Assigned(FOnReadProgress) then
FOnReadProgress(Self);
end;
..
procedure TForm1.DoReadProgress(Sender: TObject);
begin
ProgressBar.Position := TStream(Sender).Position;
ProgressBar.Update;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fs:TFileStream;
begin
..
fs:=TFileStream.Create(Edit1.Text,fmOpenread);
fs.OnReadProgress := DoReadProgress;
..
ProgressBar.Min := 0;
ProgressBar.Max := fs.Size;
ProgressBar.Position := 0;
ClientSocket1.Socket.SendStream(fs);
..
end;
Anatoly Podgoretsky (2006-10-18 00:24:00) [2]А у ClientSocket1.Socket есть функция обратного вызова, если есть, то задача тривиально, если нет то передавай блоками фиксировано размера.
17.10.2006 (2006-10-17 20:58:00) [3]Это надо для того чтобы знать сколько Файла отправлено
Ketmar (2006-10-17 20:53:00) [4]объявить переменную, создать экземпляр. непонятно, правда, зачем.
Kolan (2006-10-17 20:53:00) [5]
procedure TForm1.Button2Click(Sender: TObject);
var
fs:TFileStream;
ProgressBar: TProgressBar;
Так?