问题标签 [jvcl]
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 - 数字编辑控件,内部带有平面按钮,没有计算器
我正在用 RAD Studio 编写一个 C++ 项目,但这也适用于 Delphi。
我需要一个编辑控件,其中用户只能输入浮点数(2 个小数位)并且可以通过单击编辑控件本身内的按钮(实际图标)来恢复原始值(取自变量,此处不重要)。
这就是我所做的,使用TJvCalcEdit
来自 JEDI 库。
控制定义:
单击按钮时调用的方法:
问题:在此方法结束时,控件下方会出现一个计算器弹出窗口,需要用户执行操作。我不希望这种情况发生,因为我正在以编程方式更改值。我猜这是一个默认值,因为这样的按钮是用来触发计算器的。此外,您看到的值 (255) 没有小数点,只有在计算器关闭后才会显示。
那么,我可以禁用此行为吗?或者有人可以建议我使用另一种控件(标准、开源或免费)的解决方案吗?
delphi - 如果我以非管理员用户身份运行安装程序失败,如何安装 JVCL 包
我用的是Win7。我已经在我的 Delphi XE 中安装了 Jedi VCL 组件并且它工作正常。但是,如果我尝试将 XE 作为另一个用户帐户(没有管理员权限)运行,JVCL 组件不会出现在工具面板中,而我需要以客户端用户身份运行才能使用安装为的 RxLib 工具和组件客户端用户。
有没有办法以管理员用户身份安装或使用 Jedi VCL 组件?
请帮帮我...
如果我以普通用户身份运行 bat 文件,出现的错误消息是:
预先感谢。
delphi - 如何使用 TJvAppIniFileStorage 在 INI 文件中添加新部分
我有一个用 Delphi XE 编写的数据库应用程序项目,并使用 dbExpress 连接到 MySQL 数据库。我使用 JVCL 网格组件来显示数据集中的记录。如果我可以使用另一个 JVCL 组件来执行 FormStorage,它会更有效。
有人建议我使用TJvFormStorage
和TJvAppIniFileStorage
用于表单存储。我在这个项目上有很多表单,所以我需要在我的 INI 文件中添加新部分来存储表单大小值,但我不知道如何使用 TJvAppIniFileStorage 来做到这一点。
TJvAppIniFileStorage 只是提供 DefaultSection() 方法,这意味着它只能修改和写入一个声明为默认值的部分。
任何人都可以向我描述如何使用 JVCL 的 TJvAppIniFileStorage 添加新部分?
提前致谢。
delphi - 为什么 TJvFormStorage 不能正确存储表单位置?
我有一个名为fmTest
. 如果程序终止,我使用JVCL TJvFormStorage将表单位置、表单大小和表单位置存储在 INI 文件中。
但是,如果我尝试在运行时将 windows 控件拖到底部,直到它只在任务栏附近看到标题部分,然后我释放它并终止程序,程序fmTest
启动时不会在该位置启动再次。
有人建议我使用StoredProps
andStoredValues
方法,TJvFormStorage
但我真的不明白如何使用这些方法。
为什么 TJvFormStorage 不能正确存储表单位置?有什么方法可以正确存储表单位置TJvFormStorage
吗?
提前致谢。
delphi - 释放包含 TJvAppDBStorage 的数据模块会在 TComponent.RemoveNotification() 中引发访问冲突
我有一个无法释放的数据模块(听起来很有趣)。无论我是尝试手动销毁它,还是让另一个组件(甚至Application
)为我完成它,我都会得到一个带有此堆栈跟踪的 AV:
这个数据模块包含一堆TADOxxx
组件,加上两个TJvDataSource
、一个TApplicationEvents
、一个TClientDataSet
和一个TJvAppDBStorage
。它的代码只包含打开 ADO 连接、向表中写入一些记录、运行一些查询等(没有什么不寻常的)。除了我上面提到的之外,它不拥有任何其他组件。我很困惑这个虚假的电话是从哪里来RemoveNotificaion()
的。有任何想法吗?
更新
删除后TJvAppDBStorage
,我可以销毁数据模块。这是组件的属性:
有人用过JvAppDBStorage
吗?这是正常和预期的行为吗?
delphi - 读取 Windows 事件日志
我想从 Windows EventLog 中读取事件。我发现了两个机会:WMI 和 API-Commands。但目前我使用 JEDI VCL (JVCL) 中的 JvNTEventLog 组件(也许它使用 API,我不知道)。但我有一些麻烦。例如命令“JvLog.EventRecord.Computer”应该向我显示计算机名。这适用于安全日志(John-PC 说),但在系统日志和应用程序日志中它只是空的。但相反,在安全日志中显示“uditing”的“JvLog.EventRecord.Source”在系统日志中显示了我的计算机名,但被切断了。现在是“n-PC”。我也无法阅读“JvLog.EventRecord.Message”。在系统和应用程序日志中它是加密的。“JvLog.EventRecord.EventString”也被加密了,安全日志中的乐队看起来只是混合和有线。那么直接使用 API 命令会更容易吗?还是我应该使用 WMI 方法?
谢谢 :)
multithreading - Delphi:是否应该“不暂停”创建线程?
我一直在尝试追踪 Jedi VCL 中的内存泄漏JvHidControllerClass.pas
,我在源历史记录中遇到了这种变化:
旧版本:
当前版本:
根据经验,我发现如果您创建一个未挂起的线程:
然后线程立即开始运行。在这种情况下,它将尝试访问尚未初始化的对象:
立即尝试填充Report
并访问该对象Device
。问题是它们还没有被初始化;这些是线程开始后的下一行:
我意识到这是一种竞争条件;并且用户在生产中遇到崩溃的可能性非常低,因此离开赛车崩溃可能是无害的。
但我走远了吗?我错过了什么吗?是否调用:
不启动线程并立即运行?这真的是(故意)添加到 JVCL 中的竞争条件回归吗?有什么秘密吗
这使它成为正确的代码:
?
在被误叫而被烧毁后
我已经将它归档在我的脑海中,因为它永远不会正确。让线程立即启动(当您必须初始化值时)是否有任何有效用途?
delphi - 由于 jcl 要求,jcvl 无法正常工作
我正在尝试手动安装delphi xe2 JCL
。jvcl
我已经按照指示安装了 JCL,它似乎安装没有问题。现在我尝试加载 JVCL 包 16 ,它打开 delphi 并开始加载库,当它到达绝地代码库 MPL1.1 时,我开始收到如下错误
这不是唯一一个我得到很多生病的帖子,以防万一它有帮助
等...如果您需要,我可以添加休息。
但是每个 - 都是它自己的对话框,带有 [ignore][cancel][ignore all]
现在,在我按 Ignore 50 次后,它最终会加载项目,当我尝试为 JVCl 包构建所有项目时,它说找不到所需的包 jcl。
在图书馆路径中我有
在浏览路径中我有
在 DCU 调试路径中我有
delphi - 在 TJvWizard 中以编程方式设置 Segoe UI Light
我正在使用一个TJvWizard
组件,我想将其标题标题字体设置为使用 Segoe UI Light。在我的表单OnCreate
方法中,我正在执行以下操作:
此代码正确设置字体大小,但字体不会更改为 Segoe UI Light,而是继续使用父字体(即 Segoe UI。)
作为一种解决方法,我这样做了:
这可以解决问题,但对我来说它闻起来很有趣。另外,我不知道分配是如何工作的。它是否保留参考?我应该保持f.Free
线路吗?
编辑:作为附加信息,我安装了带有这些字体的相当新版本的 Office 2013。我还观察到我无法在其他应用程序中选择 Segoe UI Light,例如 InkScape。
此外,在 Delphi 属性编辑器中,我可以使用字体选择对话框来选择它,但名称“Segoe UI Light”没有出现;相反,我必须选择 Segoe UI 并在字体样式列表中选择 Light 样式。
此外,使用下拉列表选择字体名称也不起作用:
所以,我认为这与我拥有的字体版本和一些扩展属性有关(实际上,在我的 Fonts 文件夹中我只能看到 Segoe UI,打开它会打开 10 个窗口。)
我仍在寻找解决方法(这听起来可能是相关的,但他们没有遵循它)