问题标签 [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.
delphi - 在哪里释放动态分配的 TFrame 组件的对象?
我有一个包含TFrame
. TFrame
包含一个ComboBox
动态填充的。每个ComboBox
条目都有一个关联的对象。到调用重写的析构函数时,已经清除TFrame
了 中的项目,而没有释放它们的关联对象。ComboBox
无论我ComboBox
在设计器视图中将表单放在表单上,还是使用 nil 或TFrame
作为其所有者在代码中动态创建它,都会发生这种情况。我目前使用包含的OnDestroy
事件TForm
来调用包含的清理过程TFrame
。
有没有更好的方法不需要TFrame
容器的显式过程调用?理想情况下,动态添加到的对象应该在哪里ComboBox
被释放?
delphi - 使用 TFrame,我如何像在 TForm 中一样正确访问 TCanvas 属性?
我需要在运行时在框架 Canvas 上绘制,就像使用普通表单一样,但由于某种原因,他们决定不将 Canvas 属性添加到框架中,即使 TCustomFrame 和 TCustomForm 都来自处理 Canvas 的同一个父类.
我已经让它工作到我可以通过覆盖 PaintWindow 过程来绘制一些东西的部分,但我似乎仍然无法在运行时使用 Canvas 属性,就好像我错过了一大块代码一样。
这是我到目前为止所做的:
我假设我没有正确分配句柄或错过了一些绘画事件?
delphi - 如何访问 TFrame 的画布?
使用:Delphi XE2、VCL 32 位应用程序、Windows 8
我正在尝试将框架的背景绘制到面板上(我正在使用 TJvPanel,因为它公开了 OnPaint 事件),这是框架的子控件。
在阅读了这篇文章并将画布添加为字段后,我仍然没有成功。
调用 ShowAddReceiptPanel 后,它应该在前景面板上绘制框架的 (TfrmMyFrame) 窗口内容,其中包含所有控件(包括网格和页面控件),在通过 ProEffectImage 方法处理后,灰度化,而是显示一个不透明的白色背景。我错过了什么吗?
这是我的代码:
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
forms - Delphi - 如何从该表单上的 TFrame 中关闭表单?
在 Delphi 2010 中,我正在创建一个表单,然后创建一个 TFrame,将 TFrame.Parent 分配给该表单,然后以模态方式显示该表单。工作正常...框架有一个 DBNavigator、一个字段 DBFields 等。当用户点击发布/保存时,我想自动关闭表单。我已经尝试了一些东西,例如 Close、Action = caFree、(DBNav.parent.parent) as TForm.Free 等,但似乎没有任何效果。我如何 - 从 TFrame 中关闭表单?
创建这个东西的代码是......
谢谢,
GS
delphi - firemonkey 在运行时销毁帧
为了灵活性,不同的框架(如可见的“模块”,可以由用户一起构建 - 仪表板)应在 firemonkey 表单上创建和销毁(其中一些是两次或更多)
在 vcl 中,由于资源而破坏控件或框架很容易:
但是如何在 firemonkey 中做(强制)这个?(“Free”只导致“object.release”,并没有破坏控件,因为似乎还有其他引用 - 但保存一帧的变量仅用于“create”和“free”)
delphi - Delphi XE5,如何将包中定义的框架放入组件调色板
2件事是我的问题
1) a 在包中定义了一个 TMyframe=class(TFrame) ,但该框架未在框架调色板中列出。因此,我使用几种方法从设计时包中注册了我的类,这些方法似乎都没有做我想要的。(RegisterCOmponent、RegisterClass 和 RegisterCustomModule)
2)最大的问题,因为Delphi不“知道”我的框架,它被作为一个常规组件处理,当内联使用它时,其中定义的(子)对象在表单资源中显示为“对象”而不是“继承” ' 导致稍后创建表单时“对象 blahblah 已存在”。同样的行为发生在 IDE 的表单设计器中。当我将这个框架单元从我的运行时组件包移动到主模块(我的“内核”bpl)时,对象/继承的问题就消失了,一切似乎都正常工作。可能是因为知道如何解决“TMyCustomFrame”。
所以......我如何在一个包中定义框架并在设计时在表单中使用它们(在其他包或exe中),而不会破坏我的表单资源。
使用 XE5、Update1、VCL
(我会想出一些简单的例子,同时我已经想要这个问题了)
TIA
delphi - 如何让 TFrame 的 OnResize 事件在第一次出现时发生?
我有一个放置在表单上的框架。我希望在表单上放置一些此框架的实例。
它有一个带有 2 列的绘图网格,在 OnResize 事件中,我使第二列扩展到可用空间的末尾。这适用于手动调整窗体大小并将框架对齐设置为 alTop 的情况。但是当表单第一次出现时,即使 FrameResize 被调用,它也没有任何效果。(尽管当我在其上设置断点时它确实具有预期的效果)。
所以,我现在正在做的是从表单 OnShow 处理程序中调用 FrameResize,但这很难看。框架应该能够在没有表单帮助的情况下正确显示。
有任何想法吗?我确实尝试过覆盖 SetParent,但这没有用。使用 Xe2。
TIA 标志
delphi - 创建自定义 TFrame 后代作为组件
我在 stackoverflow 上阅读了许多关于扩展 TFrame 以拥有自己的已发布属性的文章。
我基本上遵循了约翰·托马斯的方法
在这里重复代码:
新的框架组件很好地显示在组件托盘上。我可以将新框架添加到表单并工作。
但是我需要将我的新框架作为一个独立单元使用,例如由 file->new->other->vcl 框架创建
我将所有框架都创建为单独的单元,然后在需要时插入表格。
我的新 MyFrame 应该怎么做?
delphi - 当 TcxPageControl 托管在 TFrame 中时,添加到 TcxTabSheet 的组件不会在运行时显示
我正在构建一个TFrame
包含TcxPageControl
. 这个想法是将框架拖放到表单上,然后我可以添加特定于该表单的页面。
这很好用,我可以通过设计器成功添加页面,并在运行时出现这些标签页。但是,问题是任何组件都掉到了“TcxTabSheet
不”上。
如果我在框架本身上添加一个页面(即基本框架,而不是放在表单上的那个)并在上面放置组件,那些显示。但是,如果我将组件从表单中拖放到同一页面上,它们不会。
我显然在这里遗漏了一些东西,但我原以为页面控件可以像在任何形式上一样工作(不管它是否从 a 浮出水面TFrame
),但显然它似乎有些东西不喜欢。
这是一个错误还是我做的不对?
注意 - 我正在使用“添加到调色板”选项将框架添加为组件,因为我想显示TPageControl
属性(以防万一)