类似的事件可能不会发生,一次或多次.如果事件发生,应通知用户.可能有几种类型的事件.
我不确定方案是否清晰,但也许一些代码会有所帮助:
伪代码:
begin //Execute computing process// repeat Set a flag if an incIDent occurs Set another flag if another incIDent occurs until done //Show message to user// if AnyFlagIsSet then ShowPrettyMessagetoUser end;
可执行的DELPHI代码:
program Test;{$APPTYPE CONSolE}uses SysUtils,StrUtils;var i: Integer; tmpFlags: Array[1..4] of Boolean; tmpMessage: String; tmpChar: Char;begin Randomize; repeat //Initialization// for i := 1 to 4 do tmpFlags[i] := False; //Will insIDent occur?// for i := 0 to 5 do begin if (Random(10) = 0) then tmpFlags[1] := True; if (Random(10) = 0) then tmpFlags[2] := True; if (Random(10) = 0) then tmpFlags[3] := True; if (Random(10) = 0) then tmpFlags[4] := True; end; //Show message// tmpMessage := ''; if tmpFlags[1] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '',#13#10+#13#10) + 'IncIDent 1'; if tmpFlags[2] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '',#13#10+#13#10) + 'IncIDent 2'; if tmpFlags[3] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '',#13#10+#13#10) + 'IncIDent 3'; if tmpFlags[4] then tmpMessage := tmpMessage + IfThen(tmpMessage <> '',#13#10+#13#10) + 'IncIDent 4'; Writeln('----------'); Writeln(tmpMessage); Writeln('----------'); Writeln; Write('Again? (Y/N) '); Readln(tmpChar); until tmpChar <> 'y';end.
当然,迭代中的代码在现实生活中是非常复杂的.
消息也提供了更多信息,甚至可以格式化和多行.
所以…
是否有可用于此的最佳实践或模式?
任何处理这个的Delphi组件?
伪代码:
procedure DoSomething(Log : TStrings);begin//...Log.Add ('Some hint.');//...Log.Add ('Some error happened.');//...end;DoSomething (Log);if (Log.Count > 0) then LogListBox.Items.AddStrings (Log);
对于格式化或多行消息,您可以将HTML字符串存储在字符串列表中,并使用可以显示HTML格式文本的组件来显示消息.
编辑:如果你不想重复的消息,只需这样做
Log.Duplicates := dupIgnore;总结
以上是内存溢出为你收集整理的delphi – 向用户显示累积的消息全部内容,希望文章能够帮你解决delphi – 向用户显示累积的消息所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)