从头开始创建一个图形库 - 页 10

 
Aliaksandr Hryshyn:

在我的例子中,"丛林 "并不比一般的复杂:一个显示窗口(表格的可见区域),一个全尺寸的窗口,所有的单元格必须适合,它将在主窗口内滑动,行和单元格的窗口,加上滚动(一个以条形为界限的滑动器)。相对定位的约束由属性决定。只有对滑块来说,有必要拦截对象的移动事件,并且已经纠正了"全尺寸窗口 " 的位置。这都是由虚拟窗口完成的,我们需要把视觉部分栓在上面,如果没有视觉部分,就会有线条的窗口和全尺寸的窗口。对于可编辑的单元格,做一个输入字段(这是一个自定义的字段),所有其他的东西将由引擎处理 - 它将为每个单元格获得正确的事件(鼠标事件,重绘,移动).....这些都是可能性,但也有几个想法可以在窗口过多的情况下提高性能(大型列表、表格、几千个窗口)。

你来吧.....和我们谈谈。:)))

如果你会注意到,这个主题是从我的众包gui主题演变而来的,我在那里展示了一种标记语言和visi编辑器。一些论坛用户认为他们可以在他们的图书馆中更好更漂亮地复制一切。这个话题在4页之后就消停了。而且它仍然在那里。而你在这里,像他们一样,谈论 "一千个窗口"......总之,最后要做。)))))

好运。))))
 
我将稍稍描述一下表格。

1.一个单元格是表格中 最简单的元素,由三个对象组成:标签、文本和图标。

2.有几种类型的单元格:列标题、行标题和里面的单元格。将它们分开是很重要的,因为标题单元格携带着关于行/列的信息(基本上是它们的属性)。这样就可以更容易地与桌子一起工作。

3.每个普通的单元格都有一个参数,它的值被输出,但有的单元格只有文本,没有参数。这是一种不同的类型。

3.单元格的属性应该可以有选择地配置:如整行、一列或整个表格。

4.标题单元的属性应单独配置。

5.该表必须 "能够 "适应其他元素,如:复选框、弹出式列表等。甚至滑块、进度条和单选按钮。

6.必须对表格进行优化,只重绘数值有变化的单元格,而不是所有的单元格。

7.如果放置在有限的视野中,表格应该滚动。

8.工作台可能有部分滚轮。

9.表格的列可以改变其宽度。

10.表可以是动态的,当行数没有预先确定的时候。

11.该表应该是可排序的。

12.表格应该能够整体上色,或者通过选定的行/列上色。

上帝禁止在简单的矩形和文本上制作表格,因为这样的 "单元格 "不是元素,这是个死胡同。

我有这些东西的实施。尽管不是完美的一切....但它们可以工作,而且很好。

桌子绝对是最复杂的元素之一。最复杂的,涉及许多机制和不同的解决方案。
 
这就是那张桌子)))。我记得阿纳托利是第一个在画布上这样做的人。他有一个艰难的时期...许多事情他实施得非常好,人们可能会感到嫉妒。
 
Реter Konow:
这就是那张桌子)))。我记得这是阿纳托利第一次在画布上完成的。他有一个艰难的时期...他把许多事情实施得非常好,人们可能会嫉妒。

我们不使它看起来漂亮,而是使它具有功能性。慢慢地,我在做正确的对象,而且方法与其他解决方案不同。任何对象都可以放在表格单元中。我在引擎中加入了对kanvas的支持,所以事实证明kanvas和普通矩形都被使用。附上一个演示。

可以在左上角的空白处进行拖放。


附加的文件:
Test_v_grid.ex5  517 kb
 
Aliaksandr Hryshyn:

我们不使它看起来漂亮,而是使它具有功能性。慢慢地,我在做正确的对象,而且方法与其他解决方案不同。任何对象都可以放在表格单元中。我在引擎中加入了对kanvas的支持,所以事实证明kanvas和普通矩形都被使用。附上一个演示。

可以在左上角的空白处进行拖放。


不错,不错...

批评第一。

从概念上讲,它是一个大的窗口,还是几个小的窗口塑在一起?遗憾的是,窗户没有可移动性。机械工作有点奇怪,有更多的东西需要考虑。我没有找到任何方法将任何东西放入单元格,它们不是互动的。到目前为止,没有任何有效的控件,甚至没有一个简单的按钮或复选框。从结构上看,窗口没有精心设计--没有框架,没有最小化或放大的按钮,没有平均图标...。即使不执行它们的功能,为了装饰性,也值得把它们放进去,因为否则,就不清楚我们在看什么了。当然...非常原始。

赞美。

尽管有不足之处,但我看到了很多进步和潜力。当然,如果你有足够的耐心和力量,最后可能会有事情发生。那么,人才无疑是有的)。


P.S. 对滚动(尽管很蹩脚)和尽管有限,但 "橡胶 "的窗台感到满意。:)))

P.S.S. 对不起,子窗口是可以移动的!一开始没有搞清楚。当然,移动空间受到严重限制,但仍...
 
另一个好处是:"A "标签(谁知道为什么)是互动的!这已经是一件好事了。
 

不幸的是,我的窗口在加载后并没有按照它们应该有的位置定位。


试图把它们放在中央是不成功的。
 
Реter Konow:

不错,不错...

批评第一。

从概念上讲,它是一个大的窗口,还是几个小的窗口塑在一起?不幸的是,窗户没有流动性。机械工作有点奇怪,有更多的东西需要考虑。我没有找到任何方法将任何东西放入单元格,它们不是互动的。到目前为止,没有任何有效的控件,甚至没有一个简单的按钮或复选框。从结构上看,窗口没有精心设计--没有框架,没有最小化或放大的按钮,没有平均图标...。即使不执行它们的功能,为了装饰性,也值得把它们放进去,因为否则,就不清楚我们在看什么了。当然...非常原始。

赞美。

尽管有不足之处,但我看到了很多进步和潜力。当然,如果你有足够的耐心和力量,最后可能会有事情发生。那么,人才无疑是有的)。


P.S. 对滚动(尽管很蹩脚)和尽管有限,但 "橡胶 "的窗台感到满意。:)))

P.S.S. 对不起,子窗口是可以移动的!一开始没有搞清楚。当然,移动空间受到严重限制,但仍...

这里所有的窗口(一般、单元、滚动、滚动的滑块....) 都有相同的工作原理,只是属性不同,只在视觉表现上有区别,也有不可见的窗口,因此玻璃的可视化可以放在任何窗口中,甚至在滑块或红色小方块中,都没有区别。

单元中的眼镜与指标中的眼镜是互动的(眼镜本身在滴答图和标题上的移动,垂直价格的移动),只有滚动轮的事件是由表格的右滚动处理的。

这个表格将作为一个基本的视觉元素,用于创建不同的列表和表格,单元格内放置什么并不重要,你可以有不同的对象,甚至是同一个表格。

 
Реter Konow:
另一个好处是:"A "标签(谁知道为什么)是互动的!这已经是一件好事了。

你有没有测试过 翻滚器的指示器?这是一个用于自动价格滚动的开/关开关

 
Aliaksandr Hryshyn:

你有没有测试过 翻滚器的指示器?是自动滚动价格的开/关开关

是的,滚筒本身和滴答指示器都做得很好。他们的投诉量最少。你是自己写的还是从别的地方借的?