【发布时间】:2013-01-15 20:21:48
【问题描述】:
我使用服务器客户端组件,当在该组件的 TransferFile 事件中接收到文件时,我使用警报消息组件。所以我希望,如果用户单击警报消息,程序继续执行 TransferFile 事件中的代码以在单击按钮的情况下接受文件传输,或者在未单击按钮时退出程序。 请看下面的代码:
procedure TfrmReadFile.ServerReceiveEvent(Sender: TObject;
Client: TSimpleTCPClient; Event: TTOOCSEvent);
begin
if (Event is TTOOCSEventFileTransfert) then
begin
Alert.Show;
if Alert.OnAlertClick then
begin
with (Event as TTOOCSEventFileTransfert) do
if (dlgSaveFile.Execute) then
with TMemoryStream.Create do
try
Write(Content[1], Length(Content));
SaveToFile(dlgSaveFile.FileName);
finally
Free;
end;
end;
end;
end;
但是“如果 Alert.OnAlertClick then”是错误的
procedure TfrmReadFile.AlertAlertClick(Sender: TObject);
begin
end;
请帮我获取这些代码。
AlertMessage 是 TMS 组件之一,它没有 ShowModal,但它有我使用的 Alert.Show 程序。我想暂停执行代码,直到警报显示时间结束,如果用户不单击警报,则执行代码中止并且没有保存文件。
【问题讨论】:
-
你需要告诉我们这个警报组件是什么。您想在对话框显示时继续执行 TCP 代码吗?对话框是模态的吗?这个问题仍然很难理解。您必须对其进行编辑以使其更清晰。
-
Alert.ShowModal;如果 Alert.Modalresult=mrOk 那么... 将是您的本意,但 ReceiveEvent 会更准时发生。之前设置的标志将是一个更好的解决方案。
-
你需要一个状态机来实现你的程序逻辑。您使用的组件的事件应该调用一个改变状态机状态的方法,并且所有实际工作都应该作为状态机方法来实现。
-
亲爱的 Serg 请描述更多。谢谢