ibm-midrange - 在 AS400 中显示新窗口时如何删除上一个窗口
问题描述
我正在尝试从不同的显示文件显示窗口。即使在提供 RMVWDW 之后,新窗口也会与前一个窗口重叠。当从多个显示文件显示窗口时,RMVWDW 是否工作?当从不同的显示文件显示窗口时,在显示新窗口时删除前一个窗口的解决方案是什么?
解决方案
因此,在没有更好地描述问题的情况下,让我尝试描述正在发生的事情。我写了一些最小的程序来提供帮助。
首先,我们有一个显示文件,其中只有一个全屏记录和一个窗口。该窗口将覆盖全屏记录。
DSPF1
A R RECORD1
A 3 19'Base display record'
A 20 18'Base Display Record'
A R W01 WINDOW(7 15 10 50)
A 5 14'Window in DSPF1'
相关程序 PGM1
**free
dcl-f dspf1 workstn;
dcl-pr pgm2 ExtPgm('PGM2');
end-pr;
write record1;
exfmt w01;
pgm2();
*inlr = *On;
return;
同时显示记录 1 和 w01,并等待按下命令键。注意显示屏上的两条记录。
用户按下回车键并调用 PGM2。以下是显示文件和程序的来源。注意显示文件源中的 ASSUME 关键字。这可以防止在打开此显示文件时从显示中删除以前的显示文件。
DSPF2
A R W02 WINDOW(9 20 10 50)
A RMVWDW
A 5 14'Window 1 from DSPF2'
A R W03 WINDOW(4 5 10 50)
A RMVWDW
A 5 14'Window 2 from DSPF2'
A R DUMMY ASSUME
A OVERLAY
A 1 2' '
DSPF2 的程序是 PGM2。
**free
dcl-f dspf2 workstn ignore(dummy);
exfmt w02;
exfmt w03;
*inlr = *On;
return;
这将在 DSPF2 中显示第一个窗口,等待命令键按下,然后从 DSPF2 中删除第一个窗口并显示 DSPF2 中的第二个窗口。
当你按下回车时,你会得到:
再次输入结束这两个程序。
请注意,来自 DSPF1 的窗口不会被 PGM2 删除。ASSUME 关键字在 DSPF2 打开时保持 PGM1 的显示。DSPF1 在 DSPF2 处于活动状态时暂停,因此您不能在 DSPF2 处于活动状态时删除该窗口,除非您从 DSPF2 中省略 ASSUME 关键字。但是如果你省略了 ASSUME 关键字,当 DSPF2 打开时,整个显示将被删除。
我想如果您在调用程序 2 之前重写没有窗口的屏幕,您可能能够从 DSPF1 中删除窗口,但是您必须DFRWRT(*NO)
在 DSPF1 上进行设置,否则写入将不足以更新屏幕。
推荐阅读
- swiftui - 可调整大小的 UITextView 的 sizeThatFits 在 UIViewRepresentable 中给出了错误的大小
- android - Android:有没有办法在 textView 中使用 autoSize 而不会破坏单个单词?
- javascript - 如何在Angular 9+中使用outerHtml?
- python - 我不再有对齐问题,但是,当我打印出我的 X 和 O 时,它们旁边会有一个 0。有谁知道不同的解决方案?
- javascript - Highcharts 动态更新 x 轴类别
- c# - 设置播放器 go.transform.position 不改变位置
- excel - 使用 Visual Basic 将 PDF 插入 Excel
- javascript - 我可以覆盖导入到父级的祖父级方法吗?
- java - 如何使用 KafkaConsumer java SDK 使用来自 AWS MSK 集群的事件表单?
- django - 在 Django 模板中应用本地时区