【问题标题】:How does OpenEdge Progress-4GL work with ActiveX tabstrip component?OpenEdge Progress-4GL 如何与 ActiveX tabstrip 组件一起使用?
【发布时间】:2021-04-06 03:29:39
【问题描述】:

我想在我的 OpenEdge Progress-4GL 环境中使用 tabstrip,但我无法让它工作。

没问题:Progress 网站上有一个示例。”,您可能会说,而且确实在 this URL 上有一个 tabstrip 示例(您可能需要下载提到的“TabStrip_sample .zip"),其中一个列表视图放置在一个选项卡上,一个树视图放置在另一个选项卡上。 (不要害怕:压缩文件只包含源代码、位图和自动创建的*.wrx 文件,不会损害您的计算机)

现在的问题是:他们到底是怎么做到的?

在文件“dbtest.w”中,让我们在设计时查看两个选项卡(在调整 Listview 的大小之后):

很明显,所有组件都放在 TabStrip 组件上,因此选项卡和组件之间的链接应该在运行时完成(正如 URL 中提到的),但这里有一个问题:

代码中似乎没有任何事件处理程序 ON ... CFTabStrip 或任何内容。
CFTabStrip 的属性编辑器中提到的各个标签页的键(“Db_tbl”和“Db_sch”)或索引(1 和 2)在代码中无处可见。

谁能解释一下他们是怎么做到的?
提前致谢

【问题讨论】:

  • 您使用的是 11.6,似乎正在创建一个新的更新前端。如果是这样,我会跳过 AppBuilder 和 ActiveX 控件而只使用 .Net 控件。如果您想使用 Visual Designer(它确实有助于开始进行原型设计),您将需要使用 Progress Developer Studio for OpenEdge。此外,UI 小部件不应与数据库交互,而应至少使用一个额外的层 -> 请参阅使用 DataSet。
  • 很遗憾,我现在无法开始使用新的 IDE。
  • 您可以创建 .Net 小部件/无需/新的 IDE。使用可视化设计器创建小部件原型以查看使用了哪些类以及设置了哪些属性更加容易。要初步了解 Visual Designer,您可以下载 OpenEdge 评估套件 - knowledgebase.progress.com/articles/Article/P25497

标签: user-interface activex openedge progress-4gl tabpage


【解决方案1】:

“魔法”在PROCEDURE CFTabStrip.TabStrip.MouseDown 中,它检查水平位置 (x) 是否意味着第一个选项卡或右侧选项卡,然后隐藏/显示其中一个。

相当笨拙,但如果你看一下标题,这个例子是近 20 年前创建的,用于 Progress 8。

【讨论】:

  • 确实很笨拙,但用于 x 坐标的数字(小于 105 且大于 108)基于标签页的标题。我可以接受 3 作为标签页标题之间分隔符的硬编码宽度,但你知道计算标签页标题“长度”的函数吗(类似于length("Database tables") = 105)?
  • 我不确定 ActiveX 控件实际使用的是什么字体,但 GET-TEXT-WIDTH-PIXELS 方法应该可以为您提供一个起点。
猜你喜欢
  • 2017-07-18
  • 2012-03-19
  • 2018-03-14
  • 2014-03-19
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
相关资源
最近更新 更多