问题标签 [tframe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1970 浏览

delphi - 在哪里释放动态分配的 TFrame 组件的对象?

我有一个包含TFrame. TFrame包含一个ComboBox动态填充的。每个ComboBox条目都有一个关联的对象。到调用重写的析构函数时,已经清除TFrame了 中的项目,而没有释放它们的关联对象。ComboBox无论我ComboBox在设计器视图中将表单放在表单上,​​还是使用 nil 或TFrame作为其所有者在代码中动态创建它,都会发生这种情况。我目前使用包含的OnDestroy事件TForm来调用包含的清理过程TFrame

有没有更好的方法不需要TFrame容器的显式过程调用?理想情况下,动态添加到的对象应该在哪里ComboBox被释放?

0 投票
2 回答
1194 浏览

delphi - 使用 TFrame,我如何像在 TForm 中一样正确访问 TCanvas 属性?

我需要在运行时在框架 Canvas 上绘制,就像使用普通表单一样,但由于某种原因,他们决定不将 Canvas 属性添加到框架中,即使 TCustomFrame 和 TCustomForm 都来自处理 Canvas 的同一个父类.

我已经让它工作到我可以通过覆盖 PaintWindow 过程来绘制一些东西的部分,但我似乎仍然无法在运行时使用 Canvas 属性,就好像我错过了一大块代码一样。

这是我到目前为止所做的:

我假设我没有正确分配句柄或错过了一些绘画事件?

0 投票
3 回答
2343 浏览

delphi - 如何访问 TFrame 的画布?

使用:Delphi XE2、VCL 32 位应用程序、Windows 8

我正在尝试将框架的背景绘制到面板上(我正在使用 TJvPanel,因为它公开了 OnPaint 事件),这是框架的子控件。

在阅读了这篇文章并将画布添加为字段后,我仍然没有成功。

调用 ShowAddReceiptPanel 后,它应该在前景面板上绘制框架的 (TfrmMyFrame) 窗口内容,其中包含所有控件(包括网格和页面控件),在通过 ProEffectImage 方法处理后,灰度化,而是显示一个不透明的白色背景。我错过了什么吗?

这是我的代码:

0 投票
2 回答
3182 浏览

delphi - 如何释放动态创建的帧?

在 Delphi 2010 中......我有一个表格。表单的左侧是 Treeview。它显示了一个多层次的层次结构。假设有 5 种不同类型的数据,类型 A、B、C、D 和 E。在表单的右侧,我有一个面板,我将在其中创建一个 TFrame。如果我在 Treeview 中单击类型为“A”的数据元素,我会在表单右侧创建一个显示 tFrame 'A' 的 TFrame。基本上,我正在展示我的 TreeView 的各种层次结构的详细信息。5 种类型的数据中的每一种都使用不同类型的 TFrame。虽然我可以动态创建 TFrame,但我很难知道在哪里以及如何删除/释放 TFrame?

我是否创建一个显示前一个 TFrame 类型的变量?删除 TFrame 的正确方法是什么?是 TFrame.Free 吗?请记住,我可能需要创建框架 A、自由框架 A、创建框架 B、自由框架 B、创建框架 A(再次)等...

我已经尝试过一些类似的东西......

虽然这似乎有效,但这会导致奇怪的行为(它导致按钮消失)。这也意味着我需要将所有 5 种类型的 TFrame 定义为全局变量。

任何和所有的想法表示赞赏。

谢谢,

GS

0 投票
1 回答
2422 浏览

forms - Delphi - 如何从该表单上的 TFrame 中关闭表单?

在 Delphi 2010 中,我正在创建一个表单,然后创建一个 TFrame,将 TFrame.Parent 分配给该表单,然后以模态方式显示该表单。工作正常...框架有一个 DBNavigator、一个字段 DBFields 等。当用户点击发布/保存时,我想自动关闭表单。我已经尝试了一些东西,例如 Close、Action = caFree、(DBNav.parent.parent) as TForm.Free 等,但似乎没有任何效果。我如何 - 从 TFrame 中关闭表单?

创建这个东西的代码是......

谢谢,

GS

0 投票
1 回答
2355 浏览

delphi - firemonkey 在运行时销毁帧

为了灵活性,不同的框架(如可见的“模块”,可以由用户一起构建 - 仪表板)应在 firemonkey 表单上创建和销毁(其中一些是两次或更多)

在 vcl 中,由于资源而破坏控件或框架很容易:

但是如何在 firemonkey 中做(强制)这个?(“Free”只导致“object.release”,并没有破坏控件,因为似乎还有其他引用 - 但保存一帧的变量仅用于“create”和“free”)

0 投票
1 回答
1363 浏览

delphi - Delphi XE5,如何将包中定义的框架放入组件调色板

2件事是我的问题

1) a 在包中定义了一个 TMyframe=class(TFrame) ,但该框架未在框架调色板中列出。因此,我使用几种方法从设计时包中注册了我的类,这些方法似乎都没有做我想要的。(RegisterCOmponent、RegisterClass 和 RegisterCustomModule)

2)最大的问题,因为Delphi不“知道”我的框架,它被作为一个常规组件处理,当内联使用它时,其中定义的(子)对象在表单资源中显示为“对象”而不是“继承” ' 导致稍后创建表单时“对象 blahblah 已存在”。同样的行为发生在 IDE 的表单设计器中。当我将这个框架单元从我的运行时组件包移动到主模块(我的“内核”bpl)时,对象/继承的问题就消失了,一切似乎都正常工作。可能是因为知道如何解决“TMyCustomFrame”。

所以......我如何在一个包中定义框架并在设计时在表单中使用它们(在其他包或exe中),而不会破坏我的表单资源。

使用 XE5、Update1、VCL

(我会想出一些简单的例子,同时我已经想要这个问题了)

TIA

0 投票
1 回答
609 浏览

delphi - 如何让 TFrame 的 OnResize 事件在第一次出现时发生?

我有一个放置在表单上的框架。我希望在表单上放置一些此框架的实例。

它有一个带有 2 列的绘图网格,在 OnResize 事件中,我使第二列扩展到可用空间的末尾。这适用于手动调整窗体大小并将框架对齐设置为 alTop 的情况。但是当表单第一次出现时,即使 FrameResize 被调用,它也没有任何效果。(尽管当我在其上设置断点时它确实具有预期的效果)。

所以,我现在正在做的是从表单 OnShow 处理程序中调用 FrameResize,但这很难看。框架应该能够在没有表单帮助的情况下正确显示。

有任何想法吗?我确实尝试过覆盖 SetParent,但这没有用。使用 Xe2。

TIA 标志

0 投票
0 回答
1348 浏览

delphi - 创建自定义 TFrame 后代作为组件

我在 stackoverflow 上阅读了许多关于扩展 TFrame 以拥有自己的已发布属性的文章。

我基本上遵循了约翰·托马斯的方法

在这里重复代码:

新的框架组件很好地显示在组件托盘上。我可以将新框架添加到表单并工作。

但是我需要将我的新框架作为一个独立单元使用,例如由 file->new->other->vcl 框架创建

我将所有框架都创建为单独的单元,然后在需要时插入表格。

我的新 MyFrame 应该怎么做?

0 投票
1 回答
1215 浏览

delphi - 当 TcxPageControl 托管在 TFrame 中时,添加到 TcxTabSheet 的组件不会在运行时显示

我正在构建一个TFrame包含TcxPageControl. 这个想法是将框架拖放到表单上,然后我可以添加特定于该表单的页面。

这很好用,我可以通过设计器成功添加页面,并在运行时出现这些标签页。但是,问题是任何组件都掉到了“TcxTabSheet不”上。

如果我在框架本身上添加一个页面(即基本框架,而不是放在表单上的那个)并在上面放置组件,那些显示。但是,如果我将组件从表单中拖放到同一页面上,它们不会。

我显然在这里遗漏了一些东西,但我原以为页面控件可以像在任何形式上一样工作(不管它是否从 a 浮出水面TFrame),但显然它似乎有些东西不喜欢。

这是一个错误还是我做的不对?

注意 - 我正在使用“添加到调色板”选项将框架添加为组件,因为我想显示TPageControl属性(以防万一)