如何解决如何在DM脚本中自动向下滚动文本框
考虑以下示例对话框(以下代码)。
其中包含一个TextBox
。文本更改后,文本框将立即更新。文本每0.5秒更改一次,由另一个线程调用。 (文本是您所用语言的当前日期。)如上图所示,滚动条位于最顶部。但是,这乍一看妨碍了用户获得最新状态。用户必须手动向下滚动并保持鼠标单击,否则文本框将再次跳至开始位置。
如何更改此行为?我希望用户始终看到最后添加的文本。因此,换句话说:如何设置滚动条的位置?
注意:我考虑过在前面插入新文本。但这是不直观的。对话框显示测量状态。每个步骤都需要分别进行几个状态更新。因此,要么为每个插入顶部的步骤创建“块”。但是随后无法显示实际发生时的状态更新(我强烈希望避免),因为我必须先创建该块。或者,我可以将每行添加到顶部,这看起来非常混乱(我已经尝试过了),因为顺序完全很奇怪。
string text = "";
number running = 1;
number update_task;
class UpdateThread : Thread{
void RunThread(object self){
while(running){
text += "It is Now " + FormatTimeString(GetCurrentTime(),34) + "\n";
sleep(0.5);
}
}
}
class ExampleDialog : UIFrame{
void update(object self){
TagGroup field = self.lookupElement("textBox");
if(field.TagGroupIsValid()){
self.SetTextElementData("textBox",text);
field.Dlginvalid(1);
self.validateView();
}
}
object init(object self){
TagGroup dlg,dlg_items,field;
dlg = DLGCreateDialog("Example",dlg_items);
field = DLGCreateTextBox(100,10,10000);
field.Dlgidentifier("textBox");
dlg.DLGAddElement(field);
update_task = AddMainThreadPeriodicTask(self,"update",0.1);
self.super.init(dlg);
return self;
}
}
alloc(UpdateThread).StartThread();
alloc(ExampleDialog).init().pose();
running = 0;
RemoveMainThreadTask(update_task);
解决方法
我不认为您追求的功能目前在GMS(3.4.2)中已经存在,但是我可以肯定地理解为什么拥有它会很有用。
您可能要考虑通过Gatan的软件发行报告表将其添加为功能请求。
,使用TextBox.appendText()
方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。