文章 "图形界面 I:库结构(第一章)" - 页 2

 
Vasiliy Sokolov:
很好。如果可能的话,请提供更多图形界面示例的图片。总的来说,这个话题非常有必要:很久以前就有必要开始记录标准库

也许我之前误解了问题。

我说的使用标准库中的类指的只是这类类:

也就是说,您可以使用这些类创建原始对象,获取并更改它们的属性。

但是(请允许我说明一下),我并没有使用标准库中用于创建图形界面的部分。这是一个完全独立的项目。

附注: 将会有大量的图片和示例(最详细的)。

 
Anatoli Kazharski:

我可能误解了之前的问题。

我说的使用标准库中的类指的只是这类类:

也就是说,您可以使用这些类创建原始对象,获取并更改它们的属性。

但是(请允许我说明一下),我并没有使用标准库中用于创建图形界面的部分。这是一个完全独立的项目。

附注: 将会有大量的图片和示例(最详细的)。

啊,现在我明白了。

您为什么决定不将您的项目建立在 MQ 图形用户界面库的基础上呢?也许扩展和深化会更容易些?

顺便说一句,我有自己的图形用户界面库,如果能比较一下概念,会很有趣。

 
Vasiliy Sokolov:

啊,我明白了。

你为什么决定不以 MQ 的图形用户界面库作为项目的基础?也许扩展和深化会更容易些?

顺便说一句,我有自己的图形用户界面库,比较一下概念会很有趣。

我在本文开头概述了我的想法。总之,要想做到这一点(在我看来),你应该从头开始这个项目

我认为,本系列的前 14 篇文章已经可以让您对概念进行适当的比较。这里有很多细微的差别,如果没有意识到这些差别,就不可能实现高质量。

 
是的,显然 2016 年将是界面之年 ))
 

构思的项目 既有趣又有用!我期待着您的文章发表!

谢谢......

 

下午好!

在熟悉创建的图书馆时,我有两方面的感受。一方面,我对该库的灵活性和柔韧性感到惊讶。我们所做的工作是巨大的,对此你当然可以说声 "谢谢"!

另一方面,某些要点的实现令人费解,因为它增加了创建新表格 的劳动强度。

例如,让我们来看看在图形上移动表格的函数。

在该函数中,有必要枚举所有已创建的窗体对象。为什么呢?因为所有创建的元素都放在表单本身的容器(数组)中。为什么需要在函数中枚举所有创建的元素?为什么不能在容器中循环更改所有元素的坐标呢?

这同样适用于其他方法。例如,在 Hide() 函数中,所有元素都是通过在表单元素中循环来隐藏的,而在 Delete() 函数中,所有元素都是单独列出的。不清楚。

这导致在表单中添加新元素时,必须记住所有需要指定每个新元素的标准函数。这非常不方便。元素的焦点也是如此。如果一个元素处于焦点状态,那么它的显示方式应根据创建时的算法进行更改,例如,对于基于图片的按钮,应指定图片 "BmpFileOn "和 "BmpFileOff"。您还可以为焦点设置其他属性:边框颜色、背景颜色、文字颜色、文字大小等。在这种情况下,无需将其写入焦点定义函数,只需遍历元素数组并根据 "焦点内"/"焦点外 "属性设置其属性即可。

折叠...

最初,库的设计方式是将表单折叠到页眉下(向上)。同时,页眉仍保留在表单所在的位置。我试图实现已创建表单的标准行为,即当窗口最小化时,窗口向下最小化,只保留页眉(在底部)。此外,我还试图实现表单的两种模式:"标准"、"最小化",当然还有 "最小化"。

在创建按钮的阶段,我就遇到了上述所有问题。而开发工作才刚刚开始....

我还认为,如果不是创建一个容器(数组)来存储创建的元素和对它们的操作,而是创建一个容器的层次结构,会更加通用。也就是说,为整个表单创建一个容器,允许您在表单上执行常见操作:移动、删除、隐藏等。这个容器应包括另外两个容器:标题元素容器和表单元素容器。还可以有第三个容器:地下室容器(如果有的话)。反过来,表单容器本身也可以包含用于在表单上放置元素的块容器。在这种情况下,例如,将表单最小化的结果应该是删除表单容器本身的元素并移动标题容器的元素。执行一般操作时,对容器本身执行操作。也就是说,如果表单本身被移动,那么整个表单(应用程序)的元素容器也会被移动。

希望作者能理解我的想法。:)

我再次重申:我们所做的工作是伟大的、有用的和信息丰富的。但任何脱离作者表述的步骤都会造成困难。当然,没有完全通用的解决方案。但是,库中的一些常用标准功能可以做到真正的通用。

阿列克谢

 
AlexBar3073:

......希望作者能理解我的观点.....。

我的观点很明确。谢谢。

该库仍在开发中。它远非最后一个版本,其中的许多部分还将进行优化和开发。

您可以在本文中下载最新版本(2016.11.20):GUI X:文本输入框、图片滑块和简单控件(第 5 版)。

 
Anatoli Kazharski:

我明白你的意思了。谢谢。

该库仍在开发中。它远非最新版本,其中的许多部分将得到优化和开发。

您可以在以下文章中下载最新版本(2016.11.20):GUI X:文本输入框、图片滑块和简单控件(第 5 版)。

我知道这不是最后一个。:)我下载了 mt4 的最新版本,并试图在上面构建界面。但我知道,如果没有使用 mt5 的特定机制,mt5 的库也可以在 mt4 下运行。

我希望我提出的这些意见和建议能在下一版程序库中得到反映,使其变得更加灵活和通用,同时从实际应用的角度来看也更加简单。在开发程序库的过程中,我们使用了 "级联 "的类继承机制,这与我提出的表单元素的形成机制相同,即容器的继承。子代不仅可以使用全局属性(整个表单应用),还可以使用父代的属性:锚点、可见性、移动等。:)

我会迫不及待地关注新文章的发布和库的开发。

阿列克谢

 
AlexBar3073:

我知道这不会是最后一次。:)我下载了最新的 mt4 库,并试图在此基础上构建界面。但我知道,如果没有使用 mt5 的特定机制,mt5 的库也可以在 mt4 下运行。

我不会开发 MT4 版本。只针对 MT5。

AlexBar3073

我希望我提出的这些意见和建议能在下一版库中得到反映,使其变得更加灵活和通用,同时从实际应用的角度来看也更加简单。

最初,很难说出什么。你可以从理论上考虑很长时间如何更好。一切都将在实际测试中见分晓。

 
Anatoli Kazharski:

我将不再开发 MT4 版本。只有 MT5 版本。

最初很难说清楚。您可以在理论上考虑很长时间如何更好。一切都将在实际测试中见分晓。

是的,我已经了解到不会开发 MT4 版本 - 这并不可怕。

不可否认,只有测试才能显示如何更好地构建一个库。但从 OOP 的角度来看,建议的方法最有可能得到实际应用。:)