问题标签 [delphi-10.2-tokyo]
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 - 在 FMX TabControl 样式中查找错误
I am trying to track down a problem with the Jet style on Tab Control whereby when the tab is selected it goes white and the Icon disappears. 问题只出在 iOS 下的 10.2 Tokyo。
如何以 FMX 样式处理诸如“关闭”或“选择”之类的事件?如果我打开样式设计器,我可以看到“tabitemcustom”的样式。我可以看到选项卡是如何组合在一起的,但我看不到它是如何在其替代状态下定义的。
delphi - “ReportMemoryLeaksOnShutdown”在 Delphi 10.2 Tokyo 中不起作用?
似乎该设置ReportMemoryLeaksOnShutdown := true
在使用 Delphi 10.2 Tokyo 创建的程序中没有任何影响(我在 Windows 和 Linux 程序中尝试过)。即使有明显的内存泄漏,也不会报告任何内容。
有人可以证实这一点吗?还有其他方法可以检查 Linux 程序中的内存泄漏吗?在 Windows 上,我可以使用 madExcept。
------------------ 编辑 2 ------------------
在 Delphi 10.2ReportMemoryLeaksOnShutdown := true
中,似乎只适用于未标记为控制台应用程序的程序。一旦我注释掉该行{$APPTYPE CONSOLE}
,我就会收到所需的错误消息(当我在 Windows 上运行程序时)。
------------------ 编辑 1 ------------------
这是请求的示例:
要在 Linux 上强制内存泄漏,请注释掉[Weak]
声明中带有属性的行TChild
。为 Windows 编译时会出现内存泄漏,因为不支持 ARC。
当我使用 Delphi XE 编译和运行代码时,会出现一条消息,指出存在内存泄漏:
当我使用 Delphi 10.2 为 Windows 编译和运行时,什么也没有出现。[Weak]
在我注释掉TChild
.
vcl - 在最终用户设计时在 VCL delphi 中设计时移动组件
好的,所以我目前正在创建一个基于 vcl 的程序。用户将在 vcl 中添加删除调整大小移动标签图像备忘录等用户如何在最终用户设计时在组件中平滑地移动调整大小增加减少高度宽度?我应该使用外部软件包还是可以内置?
delphi - 德尔福 10.2 FTP SSL
这是我的程序
我TIdFTP
在 Delphi 2007 和 Delphi 10.2 Berlin 中使用组件。
对于 Delphi 2007,程序连接到 FTP。但是,对于 Delphi 10.2,程序会给出错误“无法加载 SSL 库”。
在这两种情况下,我都在 exe 文件目录中包含ssleay32.dll
和libeay32.dll
文件
delphi - Delphi FMX,如何验证 TStringGrid 中的输入?
有没有办法验证 Delphi FMX TStringGrid 中的输入?
例如:
- 如果你需要单元格只接受数字。
- 如果你需要单元格接受特殊格式的文本。
- 如果你想阻止单元格使用特定的字符。
windows - 除了 ICON_BIG,如何让 Delphi 10.2 Tokyo 荣誉 ICON_SMALL(窗口标题栏图标)?
如何在 Delphi 10.2 Tokyo 中实现以下目标:我需要 Delphi 不仅自动设置大图标,还自动设置每个窗口的大图标和小图标。对于某些表单和 TApplication,我需要有机会在运行时更改图标。我希望无需修改即可完成此操作VCL.Forms.pas
(小图标显示在窗口标题栏中,位于窗口标题左侧)。
中有一个功能TCustomForm
:
不幸的是,Delphi 只设置了大图标句柄,例如,这里有一个引用VCL.Forms.pas
:
如您所见,上面的代码只设置了大图标句柄,但我还需要设置小图标句柄,因为我使用的 .ICO 文件包含不同的大小图标图像。
让我简要总结一下大图标和小图标之间的区别,因为即使是 Microsoft 文档也几乎没有提及它。以下是主要区别:
小图标图像显示在窗口标题栏上。
如果任务栏较粗,则在 Windows 任务栏(通常位于屏幕底部)中显示大图标图像;当您按 Alt+Tab 时,也会显示大图标图像。
有关大小图标的更多信息,请参阅https://blog.barthe.ph/2009/07/17/wmseticon/ 。
Delphi 通过仅设置大窗口句柄,有效地淘汰了替代图像,以在窗口标题上显示较小的图标。如果只给出大图标而不给出小图标,Windows 会将图像从大图标重新采样到小图标,质量会变差,并且会丢失更小、更简单的图像的主要思想。
请参阅由sanyok提供的示例图片。左列,标记为 v7.4.16 是使用代码编译的程序的屏幕截图,该代码设置了ICON_BIG
和ICON_SMALL
. 右列,标记为 v7.4.16.22 是来自同一程序的屏幕截图,它没有明确设置小图标和大图标,而只是分配TIcon
给一个表单,然后 Delphi 使用其标准代码只分配大图标,因此 Windows 标题栏中的图像由 Windows 从大图标调整大小。您可能会看到由于标准的 Delphi 行为,质量变得多么糟糕。
过去,我将接口部分的GetIconHandleVCL.Forms.pas
从静态更改为虚拟,将其更改function
为procedure
并添加两个参数:
因此 VCL.Forms.pas 中的后续代码如下所示:
是否可以在不修改的情况下轻松完成此操作VCL.Forms.pas
?
我确实通过修改 VCL 单元在 Delphi 2007 中解决了该问题,但由于以下原因,我无法再修改 Delphi 10.20 Tokyo 中的 VCL 单元:
VCL 单元编译,但是,当我编译我的应用程序时,我得到“内部错误:AV0047C6C7-R000004CC-0”,不管目标目标(Win32/Win64;调试/发布),请参阅https://quality.embarcadero。 com/browse/RSP-18455 - 错误号(地址)的第一部分不同,但第二部分 - R000004CC-0 - 始终相同。
我必须手动将(TObject)添加到不从任何类继承的每个类中;否则我会生成一个在基类中找不到的
Create
错误Destroy
。在以前版本的 Delphi 中,简单地编写class
没有任何祖先隐式继承它TObject
,但是当我dcc32
使用dcc32 -Q -M -$D- -$M+
命令行选项从命令行编译代码时,会发生此错误,Create
或者Destroy
在基类中找不到此错误。
这是我过去加载图标的方式:
此代码可以进一步改进:硬编码大小的 32x32 和 16x16 可以更改,如https://blog.barthe.ph/2009/07/17/wmseticon/GetSystemMetrics(SM_CXICON)
建议的那样,对于
GetSystemMetrics(SM_CYICON)
大图标GetSystemMetrics(SM_CXSMICON)
和GetSystemMetrics(SM_CYSMICON)
对于小图标。
因此,每个表单本质上都是调用LoadIconPair
然后通过覆盖的procedure GetIconHandle(var Big, Small: HICON); override;
.
所以问题如下:
是否可以让 Delphi 轻松设置小图标和大图标而无需修改
VCL.Forms.pas?
(这是主要问题) - 对于某些表单和 TApplication,我需要有机会在运行时更改图标-时间。;如果没有,如何在 Delphi 10.2 Tokyo 下将修改后的源 VCL 单元添加到您的应用程序中,其中修改了单元的接口部分?是否有任何说明或官方指南?如果有人设法做到这一点,你是如何做到的?您是否从 GUI IDE 编译它们?还是使用命令行 dcc32/dcc64?还是使用 msbuild?还是其他?您是否还必须手动将(TObject)添加到不从任何类继承的类中以避免
Create
或Destroy
在基类中找不到错误?
更新#1:在 VCL.Forms.pas 设置后再次设置图标不是一个完整的解决方案:我们还必须注意应用程序图标,而不仅仅是表单图标;除此之外,VCL.Forms.pas 无论如何都会设置图标,但只有ICON_BIG
,我们必须再次设置图标,这次设置大小。您是否知道我们如何修补 VCL.Forms.pas 以在设置ICON_SMALL
大图标时添加设置,所以我们只修补该implementation
部分,并会调用一些消息,甚至 WM_USER+N 来请求图标句柄表单,我们的 TForm 的后代将实现这个消息处理程序?
更新 #2: TApplication 和 TForm 在图标方面具有相似的接口,但 TApplication 是 TComponent 的后代,它们没有窗口句柄,并且分别没有消息处理程序。我们可以用 TForm 做的,我们不能用 TApplication 做。
更新#3:我已经实施了一个解决方案,它混合了kobik在他的帖子中提出的建议和Sertac Akyuz在他后来的帖子中提出的建议。还要感谢在评论中做出贡献的其他人。我已经编译了程序并将其提供给了 beta 测试人员,他们已经确认问题已得到解决,图标现在看起来不错,并且通过计时器更改图标在 TApplication 中的图标动画也可以正常工作。谢谢你们!
delphi - TFDQuery 和 SQLite:字段类型不匹配,预期:LargeInt 实际:WideString
使用 Delphi 10.2、SQLite 和 Teecharts。我的 SQLite 数据库有两个字段,使用以下命令创建:
我使用带有以下 SQL的TFDQuery
调用来访问表:qryGrpahRuntime
使用 Delphi IDE 中的字段编辑器,我可以添加两个持久字段,分别为TheDate
aTDateTimeField
和.DeviceTotal
TLargeIntField
我在程序中运行此查询以创建我在设计时创建的 TeeChart。只要查询返回一些记录,这一切都有效。但是,如果没有请求日期的记录,我会收到一条EDatabaseError
异常消息:
qryGrpahRuntime:字段“DeviceTotal”的类型不匹配,预期:LargeInt 实际:Widestring
我已经在网上搜索了大量关于如何防止在空查询中出现此错误的解决方案,但我发现的任何东西都没有运气。据我所知,当没有数据返回时,SQLite 默认为宽字符串字段。我曾尝试在查询中使用 CAST,但似乎没有任何区别。
如果我删除持久字段,则查询将在空返回集上毫无问题地打开。但是,为了在 IDE 中使用 TeeChart 编辑器,看来我需要持久字段。
有没有办法可以使用持久字段进行这项工作,或者我是否必须丢弃持久字段,然后在运行时添加 TeeChart 系列?
delphi - Delphi FMX RAD Studio Tokyo 10.2 TDateEdit 选择器选择时访问冲突
自版本东京以来,如果我从 TDateEdit-Picker 中选择一个日期......同时关闭选择器,但仅在某些应用程序中,我会遇到访问冲突。RAD Studio Berlin 之前工作正常。组件以编程方式创建:
在工作应用程序中,我能够调试 FMX.DateTimeCtrls,在错误应用程序中,本单元禁用断点。引发的异常在 $C0000005 类中。
任何想法都是有原因的......
macos - 元素中缺少必需的属性“包含”
我正在法国实习,我正在 RAD Studio 10.2 Tokyo 中使用 FireMonkey 开发 Delphi 多平台应用程序。我的实习导师安装了一台 Mac mini 来测试我在 Mac OSX 上的应用程序。
每次我在这个平台(OSX32)上构建时,它第一次工作,然后我得到这个错误
消息:“C:\Users\rgibassier\AppData\Roaming\Embarcadero\DEV\19.0\MacOSX10.12.4.sdk”。
我可以通过擦除文件并用我保留的尚未损坏的旧副本替换它来临时修复它。
有任何想法吗?