gpt4 book ai didi

delphi - 如何提高Delphi框架的使用

转载 作者:行者123 更新时间:2023-12-03 14:33:46 25 4
gpt4 key购买 nike

我在 Delphi 中使用框架已有多年,它们是 VCL 最强大的功能之一,但标准使用它们似乎存在一些风险,例如:

  1. 很容易意外地移动或编辑框架宿主窗体上的框架子组件,而没有意识到您正在对框架进行“调整” - 我知道这不会影响原始框架代码,但通常不会你想要什么。

  2. 使用框架时,您仍然会接触到其子组件以进行可视化编辑,即使该框架已有多年历史且不应触摸。

所以我开始思考......

  1. 有没有一种方法可以对组件进行“分组”,从而“锁定”它们的位置?这对于成品表格和框架很有用。通常,其他开发人员向我返回的代码中仅更改了表单边界,甚至他们并没有打算进行任何更改。

  2. 有没有办法将框架及其组件变成单个 Delphi 组件?如果是这样,框架内部将被完全隐藏,其可用性将进一步提高。

我对任何想法都感兴趣...

布莱恩。

最佳答案

将框架注册为组件可以解决 1. 和 2. 问题:

  1. 当您将该框架控件放在窗体或其他框架上时,框架上的组件将被锁定
  2. 您将获得一个可以直观设计的组件(实际上是:控件)

但是:有一些问题(可以解决,请参阅文章链接),其中最重要的是这个:

当您将组件放在框架上,然后将该框架作为组件放到 Delphi 窗体或框架上时,这些组件将在结构 Pane 中可见。

问题在于,由于它们在结构 Pane 中可见,因此您可以删除它们,从而导致访问冲突。

解决这个问题的技巧为not forget the 'sprig' .
我从Ray Konopka中学到了宝贵的教训。期间DelphiLive 2009年。

由于该类(class)非常有值(value),所以我写了一个blog post上面有详细的描述。

重要部分是这一小段代码(更多详细信息请参阅博客文章):

procedure RegisterFramesAsComponents(const Page: string; const FrameClasses: array of TFrameClass);
var
FrameClass: TFrameClass;
begin
for FrameClass in FrameClasses do
begin
RegisterComponents(Page, [FrameClass]);
RegisterSprigType(FrameClass, TComponentSprig);
end;
end;

希望这有帮助。

--杰罗恩

关于delphi - 如何提高Delphi框架的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com