问题标签 [tform]

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 投票
3 回答
1842 浏览

delphi - 在对象存储库中注册表单(自动,通过代码或任何其他方式)

我正在对我的表单进行一些自定义,因为我希望它们带有一些已发布的属性出现在 Object Inspector 上。我已经完成了简单的方法:创建表单,将其放在对象存储库中,创建一个包以将其注册到 RegisterCustomModule。

我想知道是否有人有办法以自动化的方式将它放在对象存储库中(我想简化它在其他机器上的安装)。

我用谷歌搜索,但要么没有人写过关于它的东西,要么我没有找到正确的关键字......

0 投票
5 回答
1462 浏览

delphi - 动态 Delphi 表单创建 - 确保正确处理鼠标消息

我有一个基于左侧树视图和右侧面板的应用程序布局。面板根据所选的树节点(一种“表单资源管理器”)托管不同的 TForm 类。一次只显示一个表单,它暴露了存储在其他地方的基础数据,并且在每个新的树节点单击时创建和销毁表单实例。

除了以下情况外,这一切都很好。单击表单上的一个按钮,该按钮启动一个需要一秒钟左右的操作。在此操作期间,可能会调用 Application.ProcessMessages。现在就在此操作实际完成之前,用户单击一个新的树节点。处理此 wmMousedown 消息会导致立即释放表单。动作代码然后返回到表单代码中发现 self 发生了变化并导致了 AV。

我的问题是,在我允许释放表单之前,有没有办法知道表单的消息已全部处理并完成?单击关闭按钮时,模态表单似乎会执行此操作,因为如果忙,它们会在关闭之前暂停...

谢谢布赖恩

0 投票
2 回答
1773 浏览

delphi - 覆盖 TForm 后代的默认显示行为 / SetVisible (Delphi VCL)

我想更改 TForm 后代的显示默认行为(例如,我不想将其自身显示在屏幕上,而是将其作为新标签页放在页面控件上)。如何做到这一点?我想使用标准方法(调用 Show 方法或设置 Visible 属性)来显示它,所以我尝试覆盖 SetVisible 方法。但是我发现 SetVisible 不能被覆盖,因为它是一个私有方法。任何建议在哪里覆盖它?谢谢。

0 投票
2 回答
1489 浏览

delphi - 在 SDI Delphi 应用程序中组织窗口

在 Delphi MDI 应用程序中,我可以使用TileCascade过程ArrangeIcons来组织我的子窗口,此方法仅在 FormStyle 属性设置为时有效,我如何fsMDIForm在一个中产生相同的效果SDI application,我的意思是我如何在中组织我打开的窗口非 MDI 应用程序?

0 投票
2 回答
1045 浏览

multithreading - Delphi - 创建一个在自己的进程中运行的控件

你好

我有一个使用专有数据集访问数据库的控件。该数据库是一个旧的 ISAM 基础数据库。

该控件使用后台线程来使用专有数据集查询数据库。

一个表单上会有几个这样的控件,每个都使用自己的线程来访问数据,因为它们都需要同时加载。

专有数据集通过显示一个 VCL TForm 通知用户正在打开的表被另一个用户锁定并且数据集正在等待释放锁来处理并发。

表单上有一个取消按钮,可以让用户取消锁定等待。

问题:

从线程中使用专有数据集时,如果显示锁定等待形式,应用程序将崩溃、挂起或给出一些错误。我怀疑这与 VCL 不是线程安全的有关。

我已经通过同步 Dataset.Open 解决了这个问题,但是这会阻止主线程直到 dataset.open 返回,这可能需要相当长的时间,具体取决于查询的复杂性。

我已经显示了一个模态进度条,让用户知道它正在发生的事情,但我不喜欢这个想法,因为用户将等待进度条完成。

专有数据集代码被编译到主应用程序中,即它不存储在单独的 DLL 中。在开发过程的这个阶段,我们不允许更改锁定的工作方式或是否显示表单,因为我们离发布太近了。

理想情况下,我希望 Dataset.open 在控制线程中运行,而不是使用主线程,但这似乎不太可能工作。

其他人可以建议解决方法吗?请。

0 投票
2 回答
1474 浏览

delphi - 使2个表格能够相互重叠?

我想要一个单独的表单,它与我的主表单“一起”显示,所以它不会与主表单重叠。

这是一个例子:例子

注意主程序如何与日志重叠?我无法弄清楚如何在 Delphi 中做到这一点。

谢谢!

0 投票
2 回答
926 浏览

delphi - 以另一种形式在主窗体中使用有关 DBGrid 的命令

我正在制作一个用于汽车零件店的简单程序。这是它的外观:链接

问题是左边的小窗口。在主窗口中双击 DBGrid 中的任何行时,应将其打开,并且应在 DBEdit 字段中显示所有选定项目的特征。如果单击“保存”按钮,则应将 DBEdit 字段中的更改保存到数据库中,否则应忽略更改。

通过使用以下代码双击 DBGrid 中的字段,我成功打开了另一个表单:

现在唯一的问题是如何让程序检测 DBGrid 中的哪一行被选中,然后在较小窗口的 DBEdit 字段中显示其内容。

谁能告诉我如何做到这一点,好吗?

谢谢!

0 投票
1 回答
4354 浏览

delphi - 当BorderStyle = bsNone时如何使TForm显示滚动条?

当它们的 BorderStyle 设置为 bsNone 时,即使 AutoScroll 为 True 并且某些子控件位置超过 ClientWidth/ClientHeight 值,TForms 通常也不会显示滚动条。

那么,即使它的 BorderStyle 设置为 bsNone,是否有任何方法/黑客“强制”TForm 显示滚动条(在需要时)?

0 投票
2 回答
4400 浏览

delphi - Delphi - 捕获具有当前焦点的窗口/窗体

我有一个包含许多 MDI 子项(以及非 MDI 表单)的 MDI 应用程序,并且想跟踪哪个表单当前处于激活状态并始终具有焦点。当用户在应用程序中从一种形式切换到另一种形式时,我想捕获窗口激活消息,并在后台将全局变量设置为处于活动状态的表单属性(此属性继承自基类)。我最初将代码放在基类的 OnActivate 事件处理程序中(我的应用程序中的所有表单都使用它),但我注意到这个事件并不总是被引发。有任何想法吗?

我正在使用 Delphi 2006 BDS。

0 投票
2 回答
752 浏览

delphi - Delphi:ActionList 的框架和状态 - 错误?

我在表单和框架上有一个动作列表(表单的一个单元在框架中实现)。

我在 Frame 中设置了 Form2.General.State:= asSuspended,但出现错误:未声明的标识符:'asSuspended'。

代码在 Form 中正常工作,但在 Frame 中不能正常工作。

为什么?

谢谢!!!