Articles of delphi

如何等待多个事件?

在我正在使用的应用程序中有几个线程。 这些线程被设置为FreeOnTerminate,我不能改变这种行为。 我看到一些古怪的开发者在等待主线程中的一些信号, 让: var FWaits: array of TEvent; var FThreads: array of TBkgThread; const C = 10; 对于每个线程,我们有一个事件,然后Length(Threads) = Length(FWaits) for I:= 0 to C-1 do begin FWaits[I]:= TSimpleEvent.Create; FThreads[I]:= TBkgThread.Create(FWaits[I]); //The handle of the Event end; [CODE] for I:= 0 to Length(FWaits)-1 do case FWaits[I].WaitFor(INFINITE) of wrError: begin NotifyError; //Code Irrevelant; Break; end; […]

德尔菲计时器比毫秒更精确

我有一个Delphi程序,它以25赫兹(每秒25次)从外部应用程序获取帧,然后通过创build1-2个额外帧将其转换为60赫兹(每秒60帧)。 我需要通过连续构build一个帧缓冲区并从一个单独的线程输出这里的帧来输出这些额外的帧。 问题是1000/60是16.66667这意味着我不能只在16或17毫秒的“间隔”发送帧,我需要更精确。 如何在Delphi / Windows中执行此操作?

SelectDirectory不包括某些机器上的驱动器

以下代码在不同的机器上获得不同的结果。 一台机器只是提供桌面文件夹(不需要),另一台则提供桌面文件夹和计算机,映射驱动器(需要)。 procedure TForm1.Button1Click(Sender: TObject); var Directory : String; begin FileCtrl.SelectDirectory('Caption', 'Desktop', Directory, [sdNewUI, sdShowEdit]); end; 一个机器给它: 在另一个它给: 这感觉就像一个窗口设置,但我不知道从哪里开始。 使用Delphi XE,Windows 10。 任何想法表示赞赏。 谢谢你的时间。

从registry中读取已知的文件扩展名/types

我想向用户展示已知的文件扩展名列表供他select。 我知道这些都存储在registry下HKEY_CLASSES_ROOT通常是这样的: .txt – >(默认)=“txtfile” 其中txtfile包含关于相关程序的信息等 不幸的是,在registry中的地方也存储了很多其他的密钥,如文件types(如txtfile)和条目 CAPICOM.Certificates(不pipe是什么) 如何确定哪些条目是文件扩展名? 还是有一种不同的方式来获得像API函数这些扩展? (我不认为这很重要,但我正在使用Delphi作为这个程序。)

重置设备pipe理器中的设备

我正在寻找一个programmically API如何重新启动任何设备,允许在设备pipe理器中启用/禁用, 如audio设备和networking适配器

如何防止从某个文件夹访问?

我想locking某个文件夹,并使用密码解锁,任何ideeas? PS我是一个delphi编码器!

如果鼠标和触摸板都启用,如何检测input设备

我的应用程序中已经有一个WH_MOUSE_LL钩子,但是需要鼠标和触摸板的不同行为。 我知道原始inputAPI,但不知道如何使用钩子:( 有什么build议么?

鼠标滚轮事件

我有一个窗体与许多控件(树视图,备忘录,列表框,面板等)。 当鼠标hover在组件上并滚动滚轮时,我想自动移动这些控件的滚动条。 就像rad工作室检查员酒吧,工具箱,项目经理一样工作。 在每个控件上键入相同的代码是不可能的(到目前为止,有11个控件) 将post 谢谢你所有的答案,但 像button这样的控件没有滚动条,所以当鼠标滚轮移动到button(子控件)上时,必须移动其父项(如面板,框架)

delphi – lockingTPanel中的子控件,但使用默认的油漆

我需要创build一个简单的TPanel与一些子控件(如TEdit或TLabel ),但这个控件必须locking! locking就像一个devise时间(与所有的绘画事件),但不可点击或可聚焦。 当用户点击TEdit或TLabel ,单击mu会反映到TPanel 。 同样的Windows消息必须反映到父( TPanel ) 我可以这样做吗?

Delphi SelectDirectory与networking驱动器的奇怪行为

我有一个客户的错误报告。 我的程序使用Delphi的select目录function,允许他select程序使用的几个目录,允许它们在networking驱动器上。 以下是错误报告的相关摘录: 试图更改目录时,networking驱动器未显示在对话框中。 在浏览菜单中打开“计算机”时,只显示本地驱动器。 迂回的解决scheme是打开对话框,断开networking驱动器,然后重新连接networking驱动器。 然后它出现在对话框中。 更改下一个文件夹位置时,必须重新进行。 我发现主要技术人员经常这样做,因为它似乎重置。 起初,我以为这一定是Windows没有拿起目录,所以我让他检查两台计算机(客户端和networking驱动器)的networking位置设置为工作,检查驱动器是映射到客户端,检查networking发现是否已打开,并检查是否可以在资源pipe理器中看到驱动器确定。 他做了,但是这个错误依然存在。 我还没有在谷歌或QC报告中提到这件事,SelectDirExtOpts的文档似乎暗示networking驱动器应该“正常工作”。 所以我的问题是:有没有人遇到过类似的东西? 是否可能是Windows问题,还是Delphi? 非常感谢。