Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Delphi_IT技术博客_编程技术问答 - 「Fatal编程技术网」

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

我对我的表单进行了一些自定义,因为我希望它们带有一些已发布的属性显示在对象检查器上。我已经完成了简单的方法:创建表单,将其放在对象存储库中,创建一个包以向RegisterCustomModule注册它 我想知道是否有人能够以自动化的方式将它放到对象存储库中,我想简化在其他机器上的安装 我在谷歌上搜索过,但要么没有人写过相关文章,要么我没有找到正确的关键词……既然没有人给出答案,让我告诉你,我会试试的 在存储库中注册表单之前,我会先到注册表导出Delphi分支的一个副本,然后注册并保存另一个副本,

Delphi 我如何监控/限制我的应用程序使用的网络流量?

我希望能够测量网络流量并加以限制 我正在寻找一些东西,让我知道在两次通话之间发送和接收了多少数据。此外,我希望能够限制我的应用程序的网络流量(输入和输出)。 类似于NetLimitor软件(很棒的应用!),但我可以从代码中控制它 您知道一些第三方组件可以执行此操作吗 这意味着要在datasnap 2009瘦客户端上使用。如果使用Indy,则使用该类。只需设置BitsPerSec属性 我的理解是DataSnap是基于Indy的。如果你指的是整个系统(而不是应用程序-有点不清楚),你可以看看。有De

Delphi Vista、inifiles和启动时运行奇怪。。。搞什么鬼

我制作的一个小应用程序出现了一些问题,我不明白问题出在哪里。该应用程序只是一个小小的文本面板时钟,位于第二个显示器的任务栏上方。通过inifile将设置保存在适当的appdata文件夹中,并正确保存规格,即X和Y位置、字体、字体样式等 我希望它在Windows启动时自动运行,所以昨天我只是拖动了一个快捷方式到Start | Programs | Startup文件夹。今天早上启动时,它加载到了正确的位置,然后在X-Y平面上快速地返回到0乘0。我看了一下文件,果然。。。它是Top=1133 Lef

Delphi IntraWeb表单是否可以按需同步?

场景:我有一个DelphiIntraWeb应用程序,它在屏幕上有一些编辑组件和按钮。在TIWEdit.OnAsyncExit和TIWButton.OnClick中设置了一个标志,应用程序中的另一个线程根据标志和一些其他应用程序数据设置按钮的启用属性 设置TIWButton.Enabled属性时,请求已经完成,下一次交互将被取消,因为IW发现内部表示和HTML表单不同步。它将重新同步,您必须再次单击 我想根据需要刷新屏幕 一个计时器可以发现两者是否同步并发出刷新,但在流量和计时方面存在缺陷。我可以

Delphi中的动态数组和指针 如何在Delphi中重写这个C++代码?< /P> int *intim = new int[imsize]; unsigned char *grays = new unsigned char[imsize]; int *intim2 = intim;

如何像这样递增指针: *(intim++) = x; 在Delphi中,您可以使用指针(如在C/C++中),但通常会尝试避免使用指针 代码看起来最像 uses Types; procedure Test(); var intim: TIntegerDynArray; grays: TByteDynArray; P: PInteger; i, s: Integer; begin // 'allocate' the array SetLength(intim

为什么';在Delphi的FindDialog中,我的光标不会变成沙漏吗?

我只是用以下方式打开我的FindDialog: FindDialog.Execute; 在FindDialog.OnFind事件中,我想将光标更改为沙漏,以便在大型文件中进行搜索,这可能需要几秒钟的时间。因此,在OnFind事件中,我执行以下操作: Screen.Cursor := crHourglass; (code that searches for the text and displays it) ... Screen.Cursor := crDefault; 搜索文本时,光标会正确

Delphi访问冲突分配局部变量

这似乎是世界上最简单的事情了,我已经准备好了 我有一个单位,看起来像这样 Unit myUnit; // ... //normal declarations //... Public //bunch of procedures including Procedure myProcedure; const //bunch of constants var //bunch of vars including myCounter:integer; Implementation Uses //(

如何在indy(Delphi)中阻止未知客户端

我有一个公共服务器(配置了indy 10)。一些未知的客户端正在发送数千条无内容消息,表示它将服务器的cpu使用率更改为50%。我的服务器上没有防火墙,因此我尝试使用以下代码阻止未知客户端: 这是一个与计时器配合使用的功能: var i, j: integer; begin IX2 := IX2 + 1; SetLength(ClientIPs, IX2); ClientIPs[IX2 - 1] := StrIP; j := 0; for i := low(ClientI

根据正在使用的套接字杀死Delphi应用程序

假设您有一个应用程序,该应用程序打开一个套接字端口用于通信目的。如何仅通过了解此应用程序的端口获取其路径 我想做netstat-b所做的事情。它列出了所有打开的套接字端口以及打开该套接字的应用程序 我正在使用Delphi2010。 通过知道哪个应用程序打开了哪个端口,我可以终止该应用程序 请注意,我需要的是delphi代码,而不是Dos命令或如何使用netstat的说明。Rafael,您可以使用该函数,该函数检索包含可用TCP连接列表的表 首先,您必须检查此函数返回的记录,并检查dwLocalP

Delphi 如何在TWebBrowser中捕获页面区域?

我正在尝试制作一个程序,该程序将制作站点上各个区域的屏幕截图,这些截图加载在TWebBrowser组件中 到目前为止,我只找到了“如何制作整个页面的屏幕截图”的解决方案,但我无法让它捕捉特定区域,它只是将页面向任何方向拉伸 我一直在使用上述网站中提供的代码 有没有一种方法可以修改代码,使它能够满足我的需要?我试过了,但失败了 如果有人能告诉我如何解决这个问题,我将不胜感激 谢谢您是否尝试过将sourceDrawRect设置为一个矩形,其顶部和左侧为负数,右侧和底部超过让viewobject绘制

Delphi中的记录方法和常量参数

看起来Delphi编译器在 涉及“方法记录” 由于之前没有试图滥用const惯例,我有点惊讶 要查找编译器接受的代码,请执行以下操作: type TTest = record Field : String; procedure Update; end; procedure TTest.Update; begin Field := Field + '+1'; end; procedure DoStuff(const t : TTest); b

Delphi 模块%s具有打开的子体或链接的模块。无法重新加载

我正在为我的阿拉伯语项目添加一种语言。当我更新资源DLL时,在继承了所有其他表单的一个基本表单中出现以下错误 我尝试将所有表单的OldCreateOrder设置为false,但错误仍然存在。我曾尝试在网上搜索这种错误,但没有成功 有人知道这个错误吗??顺便说一句,我使用的是Delphi6企业版 提前谢谢。我终于解决了这个问题 我无法找出IDE未能编译我的项目的原因,但外部翻译经理提供了帮助 我忘了将DRC文件添加到翻译管理器。因此,我的ResourceString没有自动加载 对于希望将应用程序

Delphi 使用ADO的具有预读功能的DBGrid

我正在使用ADO连接到SQLServer2005 我的TADODataSet选择了100万条记录。使用TDBGrid并将TADODataSet.CursorLocation设置为clUseServer有效。但是TDBGrid窒息了 如何选择100万条记录,避免分页,并且仍然能够在网格中显示记录,而无需将所有记录提取到客户端,让网格在上下滚动时读取 SQL enterprise manager可以执行查询并异步选择100万条记录,而不会出现任何问题(也是MS-ACCESS)。 为什么需要在网格中获

Delphi TIdFtp仅在第一次运行时导致列表越界错误

我有一个问题与以下代码剪贴 “启动我的程序”第一次运行此函数后,IdFtp.List命令会给出以下错误 消息为“列表索引超出范围(1)”的EListError 但在第二次运行时,不会发生错误 procedure TForm1.FinnaSkrar(FileFilter: string; FtpFiles : TStringlist); var i : Integer; begin try IdFTP1.List(FileFilter, False); except

在Delphi中使用LDAP或ADSI进行用户帐户管理

我们为大型医疗索赔处理组织和企业提供了大型交易处理系统(批处理)ERP解决方案。我们目前实施自己的用户帐户管理。i、 例如,具有适当权限/角色的用户可以创建、编辑或删除帐户,并根据需要分配权限和角色 每个用户都使用分配的帐户登录,并根据权限和角色分配对功能的访问权限 客户端询问我们是否支持LDAP或Active Directory,用户帐户是否在虚拟域控制器上管理,一旦登录,用户就不需要登录其他软件…例如,我们的 我一直在回顾LDAP协议和Active Directory服务接口 我只是想知道是

Can';t在Delphi 6应用程序中使用视频和音频(VFW)创建AVI文件

我正在尝试编写一个Delphi6应用程序,它可以获取视频和音频,并使用VFW服务将其写入AVI。我设法使视频流正常工作。在VLC或Windows Media Player中播放效果良好。但当我添加音频流并尝试播放输出AVI时,VLC播放器会抱怨AVI文件被破坏。它将播放文件,视频看起来很好,但没有音频。我尝试在写入视频流之前添加音频流,然后在写入视频流之后添加音频流。两者都不起作用 此外,如果我没有添加音频流,我可以在Windows资源管理器中右键单击输出AVI文件,在摘要选项卡中,我可以看到流

Delphi 使用idFTP上载文件

我正在尝试使用idFTP组件上载文件,并定义了我可以看到的基本属性: FTPClient.Host := tblFtpFTPHost.AsString; FTPClient.Username := tblFTPUsername.AsString; FTPClient.Password := tblFTPPassword.AsString; FTPClient.Port := tblFTPPort.AsInteger; 但是当我运行命令时- FTPClient.Co

Delphi &引用;降序;德尔福唱片公司?

我知道你不能从记录中得出任何东西,但我不知道如何用一句话来总结我的问题。如果需要,请编辑标题 我想在这里做的是创建一个泛型类型的数组,它可以是X个类型中的一个,数组将填充这些自定义类型(它们有不同的字段,这很重要)。简单的方法是只创建一个变量记录数组,每个变量都有自己的类型,但显然不能像这样重新声明标识符: GenericRec = Record case SubTypeName: TSubTypeName of type1name: (SubRec: Type1); typ

Delphi 如何确保某个“finalization”部分是最后执行的部分?

在我的Delphi 7项目中,我有许多带有定稿部分的单元 如何确保最后执行一些代码 我试图在.dpr文件中编写一个定稿部分,但它没有编译。关于中代码的定稿顺序有一个很好的解释-提问者想出了一个合理的方法来确保他的定稿有效-在项目的uses子句开始时添加模块,并确保相关模块不使用任何其他单元 编辑:将David Heffernan的补遗带到黑板上。中的代码定稿顺序有一个很好的解释-提问者想出了一个合理的方法来确保他的排序有效-在项目的uses子句开始时添加模块,并确保有问题的模块不使用任何其他单元

delphirest生命周期

为什么使用REST客户端连接,如果在服务器类上使用会话生命周期,它的行为类似于调用生命周期?请参阅文档:我不确定文档是否100%准确。我使用DataSnap创建了一个RESTWeb服务。它使用了会话生命周期,我能够为每个客户端连接维护会话变量——只要它们没有断开连接(例如,在每个请求之后)。会话变量工作正常。。。但是由TDSServerModule(或TPersistent或TComponent)的后代创建并由TDSServerClass“发布”的对象不是!我从来没有遇到过问题。如果您提供一个您

Delphi MainFormOnTaskbar&x2B;工具提示导致焦点窃取

我使用Delphi XE2构建了下面的代码。它创建Form1,Form1立即创建Form2的实例。当我按下Form2上的按钮时,会创建第二个Form2 现在,如果我将鼠标悬停在第二个最上面的Form2按钮上,等待工具提示出现,工具提示出现的那一刻,第一个Form2出现在前面,窃取焦点 只有当Application.MainFormOnTaskbar为True时,才会出现问题。它还依赖于从Form1的FormCreate方法创建的第一个Form2。如果我使用PostMessage() 我想知道为什

Delphi XE3:复杂预构建事件的问题

我们目前正在从Delphi XE切换到Delphi XE3,我们的预构建事件存在严重问题 我们的预构建活动如下所示: SubWCRev "<SVN-Path>" "<InputFile>" VersionInfo.rc brcc32 -foProject.res VersionInfo.rc SubWCRev”“”“VersionInfo.rc brcc32-foProject.res VersionInfo.rc (请注意,这两个命令显示在单独的行中;并且在

Delphi 使用TFrame,如何像在TForm中一样正确访问TCanvas属性?

我需要在运行时在frames画布上绘制,就像处理普通表单一样,但出于某种原因,他们决定不向帧添加Canvas属性,即使TCustomFrame和TCustomForm都来自处理画布的同一父类 我已经完成了可以通过重写PaintWindow过程来绘制一些东西的部分,但是我仍然无法在运行时使用Canvas属性,好像我缺少了一大块代码 以下是我到目前为止所做的: TCustomFrameEx = class(TCustomFrame) private FCanvas: TControlCa

在delphi中对对象检查器隐藏属性

我想做一个新组件。 如何在对象检查器中隐藏标题属性? 我使用TPanel作为祖先类。通过使用。在这个链接中,你可以找到一个完整的例子 LE:作为一个好的实践,您应该创建另一个类,即TCustomPanel的后代,并只发布您需要/想要的属性 使用TCustomPanel作为基类并发布所需的属性。谢谢它完全有用谢谢它完全有用一开始最好不要发布它。否则,组件的使用者仍可在运行时修改。最好按照kobik的建议从TCustomPanel中派生控件,并只发布所需的属性。是的,按照David和TLama的建议

Delphi接口通用函数返回TobjectList<;T>;

为什么这不起作用?我得到一个E2511类型参数'T'必须是类类型吗 type IBaseProvider<T> = Interface function GetAll: TObjectList<T>; end; type TCar = class(TInterfacedPersistent, IBaseProvider<TVehicle>) function GetAll: TObjectList<TVehicle>;

Delphi 如何使我的IE10工具栏与Windows 8.1上的IE11兼容?

我有一个用Delphi7编写的Internet Explorer工具栏(使用COM),在Windows7上的IE8-10和IE11中运行良好。但在IE11+Windows8.1中,它会自动禁用,并显示一条错误消息,表示它不兼容。在IE中禁用增强保护模式之前,无法重新启用 谷歌搜索我发现了这篇文章: 它说Win8.1上的IE11插件需要包含一个“AppContainer兼容标志”,但没有提供如何做到这一点的信息 我需要向工具栏中添加哪些Delphi代码,使其包含AppContainer兼容标志?

Delphi 如何创建实时递增值的滑块

我的任务是在Delphi(7或XE3)中为慈善机构创建一个在Windows下运行的程序。我想创建一个类似于iPhone屏幕亮度调节器的平滑滑块,只是它应该增加用户希望捐赠给慈善机构的钱的价值 主要目标是在用户拖动滑块时调整该值,而不是在用户释放滑块时更新该值 是否有具有此功能的内置组件 (注:我正在上高中的最后一年,如果能说得尽可能简单,我将不胜感激。)假设您正在为Windows开发VCL应用程序(Delphi 7和XE3都不是针对iPhone的),您可以使用标准的TTrackbar并在OnCh

Delphi 使用Deplhi XE2将文本插入新的Word 2010文件

我已经用Deplhi XE2编写了一个程序来创建一个新的Word文档(使用Word 2010和TWordApplication),插入文本,并将其保存为.doc文件和.pdf文件。 这两个单词的组成部分在表单上。 除了文本插入之外,其他一切都正常。当我打开文件后,事实上它们都是空的 procedure TForm1.btnGenerateClick(Sender: TObject); var sNewText: WideString; begin sNewText := 'Hello,

Delphi 从TStringList中删除空字符串

Delphi中是否有任何内置函数可以从TStringList中删除所有空字符串 如何循环列表以删除这些项目 要回答第一个问题,没有内置函数。手动循环很容易。这应该做到: for I := mylist.count - 1 downto 0 do begin if Trim(mylist[I]) = '' then mylist.Delete(I); end; 请注意,for循环必须反向遍历列表,从Count-1开始一直遍历到0,才能工作 Trim()的使用是可选的,这取决于是否要删

重写delphisoap响应

是否可以在SOAP Web应用程序中重写Delphi SOAP TwebreResponse? 或者(更好)重写响应的序列化 我需要从自定义序列化程序(我已经拥有)创建响应对象,并希望将此XML序列化传递给客户端。不确定这是否有帮助,但每当我需要修改SOAP响应的某些输出时,我都会这样做: 我使用的是DELPHI XE2,在我的webmodule所在的单元中,有一个HTTPSoapPascalInvoker1。 在ObjectInspector中,我创建了一个AfterDispatchevent

Rad Studio XE6能否与Delphi 2005一起安装?

我的电脑目前已安装Delphi 2005。Rad Studio XE6是否可以安装在同一台PC上而不会出现问题?或者,这是另一种情况吗?是的,每个安装都完全独立于另一个。唯一需要注意的是,文件关联只会指向一个版本——这将是最新的版本,除非在安装时禁用设置。可以。您可以并排安装所有版本,也可以按任意顺序安装,然后使用修复安装为特定版本设置扩展。另外一个警告是即时调试器,因为一次只能有一个JIT调试器处于活动状态。

Delphi 如何在单行或多行编辑控件中实现特殊指示符

我偶尔会遇到编辑控件的示例,这些控件有一个特殊的指示器来帮助用户,例如: 我希望能够在我自己的代码中实现类似的功能 屏幕碎片实际上来自TIBQuery Sql属性的属性编辑器,并不是我想要的(否则我只需查看IBX代码),因为一旦用户键入任何内容,它就会消失。还有一些地方,当用户键入某些内容时,指示器会移动以保持其位置,但不会替换插入符号,否则我会这样做 所以我的问题是,如何实现我试图描述的类型的特殊指示器,它可以在代码中定位和打开/关闭?我能想到的最简单的事情是,以某种方式临时向编辑控件的字符

Delphi 从命令行创建dproj

我想花几个小时创建一个批处理文件,在新计算机上为Delphi2010环境创建基本编译和部署设置。 我的部署过程使用msbuild,因此我想我需要dproj文件 任务这些文件没有签入我们的svn系统,通常是在第一次打开项目时由Delphi环境动态创建的(这就是我想在批处理文件中执行的操作…) 有什么线索可以通过命令行实现吗? 或者是否有任何工具能够做到这一点(我找到了dprojMaker,但是 google上的链接已断开…请将.dproj文件检查到svn中。这样,您就可以跟踪所做的任何更改,并应用

WebBrowser和Delphi 2007的OLE控件窗口句柄错误

几周前我遇到了一个似乎没有逻辑解释的问题。我正在用Delphi2007构建一个应用程序,使用AlphaControls和放置在表单上的WebBrowser组件。TWebBrowser从web获取横幅并将其显示在UI中。糟糕的是,一旦显示带有横幅的表单,我就会得到“无法获得OLE控件窗口句柄”,而浏览器则显示在表单外部,桌面左上角 我基本上一直在尝试解决这个问题,但是调试器没有提供太多关于发生了什么的信息(这就是我得到的:第一次机会$770C4B32异常。异常类EOleError带有消息“无法获取

delphi对象分配vs:=

有人能解释一下这两者之间的区别吗 (一) 及 (二) 在2。newObj和oldObj是否指同一个对象 很抱歉,如果之前已经介绍过,但很难搜索:= newObj := TMyObject.Create; newObj.Assign(oldObj); 假设Assign正确执行,则 创建TMyObject的新实例(通过Create) 将对该实例的引用存储在变量newObj中(通过:=运算符) 执行oldObj的深度复制,使newObj成为oldObj的功能精确副本(通过Assign) 这里的

Delphi7中具有更改构造函数参数的对象工厂

我有这样的问题 IBase = interface end; TObjectType = ( otUnknown, otDesc1, otDesc2 ); TBase = class ( TInterfacedObject, IBase ) private fType : TObjectType; public constructor create( type_ : TObjectType ); end; TDesc1 = class ( TBase ) pub

Delphi 使用不同的父进程启动进程

在myApplication.exe中,我调用ShellExecute来启动另一个进程,比如说OtherApplication.exe 在OtherApplication.exe中,我注意到它无法生成自己的进程,例如cmd.exe来执行某些任务 如果我从Windows资源管理器(而不是从myApplication.exe)运行OtherApplication.exe,OtherApplication.exe中的所有内容都会按预期运行 我在Process Explorer中查看,并在流程树中观察到

Delphi 如何在应用程序级别捕获所有异常,甚至是在不同线程中引发的异常?

是否有任何方法可以捕获所有未处理的异常,甚至是在distinctTThread中引发的异常?其思想是将这些异常写入日志文件 注意:解决方案必须在iOs/Android下运行…根据评论,草草编写一些代码不会很快让你成功,所以聪明的人会为你的工作准备一款产品 为了公平起见,我不会告诉你我最喜欢的产品,但会提到我遇到的流行产品: ** 还有一些开源选项: **,特别是和单位(参见) **(据我所知,这更像是一个手工练习——参见) **,特别是Syncomons单元 您还可以使用中针对Win

Delphi 禁止使用outlook邮件项目打印Userproperty

我需要禁止打印以编程方式添加到邮件项目的outlook userproperties。我在这里看到了下面的问题,它为dot.net提供了一个解决方案,但是我在将代码翻译成delphi时遇到了麻烦。我的主要问题是invokemember行,我猜我需要在delphi中使用userproperty.invoke,但我不知道如何使用invoke方法所需的参数。有人能帮我把这个问题的答案翻译成delphi代码吗?您需要在delphi中使用IDispatch.Invoke()。Disp id为107,值必须

Delphi 覆盖SetEnabled与处理消息CM_ENABLED更改

有一个TFrame子类,如下所示: TCustomHistoryFrame = class(TFrame) tbMainFunction: TToolBar; // there's more, of course, but that is irrelevant to the question end; 我注意到,当我将此框架的Enabled属性设置为False时,它的组件tbMainFunction不会(视觉上)被禁用 我的第一个想法是重写虚拟方法TControl.SetEnabled

Delphi 10.2无法创建进程:访问被拒绝

安装Delphi10.2(东京)并编译了我的第一个hello word应用程序。调试或运行应用程序时出现异常错误“无法创建进程:访问被拒绝”。应用程序编译成功,但IDE似乎无法执行exe。还尝试禁用AV和防火墙;但这没什么帮助。有人能帮忙吗 编辑: 根据Lieman的建议,在下面添加Procmon屏幕截图。我有一个虚拟机(Win7),它的工作方式与Win10相同。它们都给出了相似的PROCmon统计数据。不知道接下来会发生什么 编辑2 已卸载Comodo防火墙,问题已解决 您是否尝试使用提升

Delphi TopEndDialog不会更改模型级别

我试图确定我的应用程序中是否有一个TCommonDialog(打开、保存等)处于活动状态,但它们似乎不会触发OnModalBegin或更改application.ModalLevel,尽管它们明显处于模式状态 我正在拦截应用程序中的键盘事件,我希望在某些情况下通过这些keybaord事件。进行传递的条件之一是对话框处于打开状态,但我找不到检测此情况的方法 有没有办法知道TCommonDialog的死者何时处于活动状态?常见对话框是操作系统对话框,而不是模态的TFormwindows,这就是为什么

Delphi 当显示PPI缩放处于活动状态时,如何正确使用TGridPanel?

我编写了一个小型测试VCL应用程序,监视器PPI为96 应用程序上有一个带有绝对像素大小列的TGridPanel 在那一列上,我放置了一个TComboBox并将其对齐alClient 以下是DFM代码: object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 182 ClientWidth = 514 Color = clBtnFace Font.Charset = DEFAULT_

Delphi FMX dcpcrypt在macOS 64位上的错误结果

我使用的是Delphi10.3.2 我试图将DCPCrypt单元与firemonkey框架一起用于加密字符串。 它在Win32、Win64和macOS 32目标上100%工作,结果总是一样的。但当我为macOS 64编译时,结果是不同的 这是使用的代码: function EncodeAES(code:ansistring; key:ansistring):string; var s,u:ansistring; enc: TEncoding; k,iv, Data, Crypt:

Delphi 如何在执行";之前将正确类型的对象加载到集合中;TRead.ReadProp";程序

我正在集合项中创建一组属性。根据其类型,每个项目都有一组不同的属性: 类型 TMyProps=类(TPersistent) 私有的 fcomom:布尔型; 过程Setcommom(常量值:布尔值); 出版 属性commom:boolean read fcomm write Setcommom; 结束; TMyPropsClass=TMyProps的类别; TFieldPropsFloat=类(TMyProps) 私有的 FDecimalplaces:整数; 过程SetDecimalplaces(

Delphi 如何使用自定义图像作为标题创建BitBtn

这个问题几乎说明了一切。我想在Delphi中创建一个类似于BitBtn的按钮,它不显示复选标记,而是显示一个绿色的加号图标作为标题。将适当大小的.bmp和加号图像加载到TBitBtn的Glyph属性中 另外请注意,您可以通过布局属性更改布局(相对于标题的字形位置)

通过64位Delphi发送MIDI控制消息

需要发送一个midi消息,如Delphi中的91.17.00。GitHub上有一个MIDIO主程序包,它可以在32位的输入和输出中正常工作。输入函数也可以在64位中工作,但不能在输出中工作。尝试设置输出设备时引发异常。有一个新的软件包,“NativeMidi”似乎有64位函数,但没有文档或示例,我不知道如何使用它。修复MIDIO主控器或本机MIDI控制输出的示例都会有很大帮助。通过更改MIDIO主控器包中的模块Midiout.pas,问题得以解决 第580行说 for TestDeviceID