indy发送邮件时如何显示进度?

hmf9 2002-05-23 01:35:47
onwork事件里的aworkcount大概是总的BYTE,那么已发送的BYTE在那个属性里?

...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmfdemo 2002-06-05
  • 打赏
  • 举报
回复
INDY问题多多,我已解决,大部分分数收回
classy 2002-05-23
  • 打赏
  • 举报
回复
我分析过源代码,不过我迷失了方向。

TIdSMTP = class(TIdMessageClient)
TIdMessageClient = class(TIdTCPClient)
TIdTCPClient = class(TIdTCPConnection)
TIdTCPConnection = class(TIdComponent)
TIdComponent = class(TIdBaseComponent)

OnWork,OnWorkBegin是TIdBaseComponent的东西

procedure TIdComponent.BeginWork(AWorkMode: TWorkMode; const ASize: Integer =
0);
begin
Inc(FWorkInfos[AWorkMode].Level);
if FWorkInfos[AWorkMode].Level = 1 then
begin
FWorkInfos[AWorkMode].Max := ASize;
FWorkInfos[AWorkMode].Current := 0;
if assigned(OnWorkBegin) then
begin
OnWorkBegin(Self, AWorkMode, ASize);
end;
end;
end;

procedure TIdComponent.DoWork(AWorkMode: TWorkMode; const ACount: Integer);
begin
if FWorkInfos[AWorkMode].Level > 0 then
begin
Inc(FWorkInfos[AWorkMode].Current, ACount);
if assigned(OnWork) then
begin
OnWork(Self, AWorkMode, FWorkInfos[AWorkMode].Current);
end;
end;
end;

如果OnWordBegin的AWorkCountMax不是总字节数和OnWord的AWorkCount不是
发送的字节数的话,那就没办法了。
hmf9 2002-05-23
  • 打赏
  • 举报
回复
现在我知道onwork事件里的aworkcount其实是已发送的字节数,但是总的字节数不知如何获得?在ONWORKBEGIN里有一个aworkcountmax本来应该是总字节,可是这个值始终为0。
另外关于进度条我知道如何设置,只是不知道如何获得max值而已。各位看清楚再回答,解决我另外给50分
hmf9 2002-05-23
  • 打赏
  • 举报
回复
晕,你这也叫回答?整个一个牛头不对马嘴
lxpbuaa 2002-05-23
  • 打赏
  • 举报
回复
用已经接受的文件长度除以文件总长度,然后乘以进度条的最大长度。最后设置进度条的当前位置为这个数。


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
I.Desire := '加不加分随你';
—————————————————————————————————


       

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧