- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在线发布了此内容:Show
form from DLL in TScrollBox
我想做的是在 Delphi TScrollBox
中调用并显示一个表单。不像 Show
或 ShowModal
示例但不包含任何 DLL:
Form1.Parent:= ScrollBox;
Form1.Show;
我如何使用内部有表单的 DLL 中的示例
谁能举个例子吗?
问候,
最佳答案
您不能在 DLL 和主机可执行文件之间传递 Delphi 对象。这是因为对象只能在创建它们的模块中进行操作。现在,如果您使用运行时包,您就能够摆脱该限制。
您可以从创建并显示表单的 DLL 中导出一个函数。该函数可能如下所示:
function ShowMyForm(ParentWindow: HWND): Pointer; stdcall;
请注意,您无法将父级作为 Delphi 对象传递,原因与我上面描述的完全相同。
您也不能指定表单的父级是可执行文件中的控件。所以你必须传递父窗口的句柄。
实现如下:
function ShowMyForm(ParentWindow: HWND): Pointer; stdcall;
var
Form: TMyForm;
begin
Form := TMyForm.CreateParented(ParentWindow);
Form.Show;
Result := Pointer(Form);
end;
你可以这样调用它:
Form := ShowMyForm(ScrollBox.Handle);
您还需要提供一个函数来在完成后销毁表单:
procedure DestroyMyForm(Form: Pointer); stdcall;
begin
TMyForm(Form).Free;
end;
并且您需要注意窗口的重新创建。如果重新创建主窗口,则需要手动重新创建子窗体。
简而言之,您正在尝试的事情相当脆弱。如果我是你,我会寻找不同的方法。
关于delphi - 在 TScrollBox 中显示 DLL 中的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912393/
我正在尝试创建一个具有平坦边框的 TScrollBox,而不是丑陋的“Ctl3D”边框。 这是我尝试过的,但边框不可见: type TScrollBox = class(Forms.TScroll
我在 TScrollBox 上放置了各种框架。滚动时,它们正在正确滚动。现在我想添加一个保持在固定位置的位图。我尝试了一个与 TScrollBox 具有相同父级(TPanel)的 TImage。即使使
我遇到了一个小问题。我动态生成一些控件并将它们放置在 TScrollbox 组件上。但我注意到,如果滚动框可见,用户可以清楚地看到正在创建和放置的每个控件。所以看起来很多工作正在完成,而且进展缓慢。
我想生成 TScrollBox 全部内容的图像。就像截图一样。即使所有内容不在可见屏幕区域内。 最佳答案 每个 TControl 后代都有一个 Perform 方法,您可以使用它来使其执行,就好像它正
我创建了一个派生自 TScrollbox 的自定义滚动框,它的工作原理相同,只是当在客户区域中拖动滚动条之外时它会滚动。 我现在的问题是,当鼠标位于 CustomScrollbox 内的按钮或面板上时
我有一个带有 TScrollBox (Align := alClient) 的简单的相当大的表单,并在 TScrollBox 上放置了一些控件。如果用户更改表单大小,TScrollBox 将显示和隐藏
这似乎是一个非常简单的问题,但我无法让滚动框显示滚动条,这让我发疯。 情况是这样的。我需要在表单的一部分中显示可变数量的帧。显示这些框架的区域可以通过 TSplitter 或通过调整表单大小来调整大小
我创建了一个 TScrollBox。我已经在按钮单击时动态添加了标签和编辑框。为了设置组件的位置,我使用了组件的高度、宽度、左侧、顶部属性。但是当添加 5 个组件后滚动条出现在屏幕上时,下一个组件的位
我创建了一个在 Canvas 上具有油漆覆盖的组件,我想设置最小宽度和高度的限制。当宽度或高度小于限制时,滚动条应该出现在侧面,就像滚动框一样,也可以滚动。 我选择 TCustomControl 是因
我正在尝试做简单的事情:在 TScrollBox 后代上添加 Canvas 属性。我已阅读this article 但我的 ScrollBox 后代根本无法在 Canvas 上绘制。有人可以告诉我,出
我正在制作一个从 TScrollBox 派生的自定义组件,它显示存储在字符串属性中的图像文件的缩略图。它工作得很好,直到滚动框在运行时调整大小。我尝试重写 Risize 方法,但是当我在运行时向组件添
我在线发布了此内容:Show form from DLL in TScrollBox 我想做的是在 Delphi TScrollBox 中调用并显示一个表单。不像 Show 或 ShowModal 示
我需要找到 TScrollBox 的整个大小(也称为“逻辑区域”) - 与通过 Width 和 Height 属性(或 ClientWidth ClientHeight)获得的可见区域相反。 我想在
我有一个 TScrollBox,它的 RichEdit 比滚动框大,因此两侧滚动条都出现在滚动框中。然后我有一个调用 RichEdit.SetFocus 的函数 DoTask。 当我向下滚动到想要查看
我正在使用父 FMX.Layouts.TScrollBox 来缩放和平移子 TLayout。一旦 TLayout 大于 TScrollBox,就可以进行平移。 我想要 TScrollBox 的(左上角
我正在使用 TImage 控件制作一个基于 TScrollingWinControl(以及从 TScrollBox 复制的代码)的简单控件。我在某种程度上可以进行缩放,但它不一定会缩放到焦点 - 滚动
我是一名优秀的程序员,十分优秀!