Delphi

访问受保护的事件的TWinControl

想象一下,你想分配自己的事件过程: procedure TSuperObject.DoSomething(Sender:TObject; Button:TMouseButton ; Shift:TShiftState; X,Y:Integer); begin ShowMessage('是的,我在做'); 结束 到表单上的任何TWinControl。通常如果您在表单 ..
发布时间:2017-04-23 12:12:22 Delphi

我的程序永远不会释放内存。为什么?

我有一个MDI程序。当它启动它需要2-3MB的RAM。然后,在这个程序中,我创建了大约260个MDI子窗口(每个都有一个TStringGrid,一个位图和一些其他控件)并显示一些数据。该应用程序需要大约500MB来加载所有这些窗口。如果我手动关闭每个MDI子进程,应用程序仍然使用160MB的RAM。为什么它不会返回到几MB的RAM?我应该担心吗160MB对于只有1GB或RAM的系统来说是一个很高的 ..
发布时间:2017-04-23 12:11:58 Delphi

Pascal的正确结构语法如果然后开始结束; (在Inno设置中)

自从我最后一次写在帕斯卡尔以来已经有二十年了。我似乎不能使用正确嵌套的语言的结构元素,而不是使用开始和结束的块。例如,这会给我一个编译器错误“需要标识符” procedure InitializeWizard; begin 日志('初始化向导'); 如果IsAdminLoggedOn然后开始 SetupUserGroup(); SomeOtherProcedure(); ..
发布时间:2017-04-23 12:10:58 Delphi

有没有办法通过delphi中的名称实例化一个类?

我想实例化一个类,但是我只能在一个字符串中使用它的名字。有没有办法? 解决方案 这是从Delphi帮助(Delphi 2006,但也可以从至少Delphi 7): / p> 语法 函数GetClass(const AClassName:string):TPersistentClass; 描述 调用GetClass从类名获取类。此类可用作需要类的例程的参数。该类必须在GetC ..
发布时间:2017-04-23 12:10:25 Delphi

使用命名子组件创建组件?

我需要知道组件产生和管理子组件背后的基础知识。我最初尝试通过创建一个 TCollection ,并尝试在每个 TCollectionItem 上添加一个名称。但是我知道这不是那么容易,因为我曾经希望。 所以现在我要从头开始这个项目,我想要正确的时间。这些子组件不是可视组件,不应该有任何显示或窗口,只是基于 TComponent 。包含这些子组件的主要组件也将基于 TComponent 。所以 ..
发布时间:2017-04-23 12:10:13 Delphi

在Delphi 2010中如何设置通用类型的前向声明?

我碰到一个似乎是一个非常古典的问题:一个项目和一个集合类,两个引用对象,需要一个前向声明。我使用Delphi 2010与更新5。 这对非通用类很好,但是我无法解决E2086错误与泛型类型: 键入 //转发声明 TMyElement = class; // E2086:类型'TMyElement'尚未完全定义 TMyCollection = cla ..
发布时间:2017-04-23 12:10:00 Delphi

在Delphi中创建可访问的UI组件

我正在尝试从标准的VCL TEdit控件中检索可访问的信息。 get_accName()和Get_accDescription()方法返回空字符串,但get_accValue()返回输入到TEdit中的文本值。 我刚刚开始尝试了解MSAA和我现在有点迷失了。 我的TEdit需要有其他已发布的属性才能暴露给MSA?如果需要创建一个从TEdit下载的新组件,并添加其他已发布的属性,例如“A ..
发布时间:2017-04-23 12:09:21 Delphi

可以从Vista Shell获取48x48或64x64图标?

如果Vista Shell中存在48x48或64x64图标,您可以使用SHGetFileInfo如何获取在TImage中显示的句柄? 我想选择来自图像列表的图标,表示文件夹路径,并在时间表中显示48x48或64x64图标。 //加载大当前路径的系统映像到Image1 SHGetFileInfo(PChar(CurrentPath),FILE_ATTRIBUTE_NORMAL,SF ..
发布时间:2017-04-23 11:59:48 Delphi

我不明白Delphi中的Application.ProcessMessages在做什么

我的主管向我解释说Application.ProcessMessages可以防止冻结应用程序并分配一些额外的数据计算时间。但是在这个命令的文档中总是解释一下处理的队列系统? 请有人向我解释上下文? 解决方案 正确回答这个问题没有什么简短的方法。 Windows应用程序与操作系统交互的主要手段是通过消息传递系统。在Windows应用程序中发生的一切都发生在响应消息中。 例如: ..
发布时间:2017-04-23 11:59:24 Delphi

在Delphi 7中,为什么要为const赋值?

我将一些Delphi代码从一个项目复制到另一个项目,发现它不会在新项目中编译,尽管它在旧的项目中。代码看起来像这样: 程序TForm1.CalculateGP(..) const 价格:钱= 0; begin ... 价格:= 1.0; ... end; 所以在新项目中,Delphi抱怨说“左侧不能分配” - 可以理解!但是这个代码在旧的项目中编译。所 ..
发布时间:2017-04-23 11:59:11 Delphi

Indel 10在Delphi 2009中逐步升级

有人可以帮忙告诉有关如何卸载Indy 10并安装最新版本的详细信息?我发现它 http://indy.fulgan.com/ZIP/IndyTiburon.zip 有一个类似的问题,但不是令人满意的答案,只是来自用户的一些评论,但这不是一步一步的指导。 为什么没有这个工具? 解决方案 我最近这样做了,并有很多问题,但这次在D2010它真的很好... 假设: Indy ..
发布时间:2017-04-23 11:58:59 Delphi

当将对象实例直接传递为const接口参数时,编译器是否提示/警告?

传递对象的新实例时,编译器会提示/警告一个方法,该方法的对象的类实现的接口有一个const接口参数? 编辑:当然,示例很简单,可以说明问题。但是在现实生活中,它变得越来越复杂:如果创建和使用的代码远远不同(不同的单元,不同的类,不同的项目)会怎么样?如果由不同的人维护怎么办?如果一个非const参数变成一个const参数,而不是所有调用代码都可以被检查(因为改变代码的人不能访问所有调用代码) ..
发布时间:2017-04-23 11:58:48 Delphi

Delphi 2009:如何在Windows服务与Vista下的桌面应用程序?

桌面应用程序如何在Vista / Windows2008 / Windows7下与Windows服务通信?应用程序需要向服务发送小字符串并接收字符串响应。两者都写在Delphi 2009中(请提供示例代码) 解决方案 要走的路是命名管道,您可能需要查看不同完整性级别。 本文探讨如何在远景中做到这一点。虽然它是用c ++编写的,但它只是基本的Windows API调用,所以它应该足够快 ..
发布时间:2017-04-23 11:58:36 Delphi

进程间通信

我有两个应用程序:X和Y. X是主要的应用程序,它处理大量的XML文件。它有十多年的历史,已经使用了六种技术来存储,处理和处理这些XML文件。 Y是一个我正在开发的调试工具,可以处理和显示XML文件更加人性化的形式。基本上,它只是一个样式表的集合,将检测XML格式,如果它识别格式,它将把XML转换为TWebBrowser组件中显示的HTML。 问题: 当Y处于活动状态时,我希望X将其处 ..
发布时间:2017-04-23 11:57:19 Delphi

如何使用Delphi形式的动画Gif

我认为没有本地支持gif动画图像。 最好的方法是什么?任何允许的免费组件?我正在考虑使用TImage和ImageList + Timer,但是我需要将gif的每个帧导出到一个分离的bmp文件。 解决方案 现代Delphi很简单。它全部内置。将一个 TImage 放在窗体上,并将动画GIF加载到Picture属性中。然后,通过 动画 属性: (Image1.Picture.Gra ..
发布时间:2017-04-23 11:56:25 Delphi

哪个更好:免费或FreeAndNil?

Free和FreeAndNil之间的基本区别是什么? FreeAndNil = Free + Nil? 我什么时候应该使用Free,何时应该使用FreeAndNil? 当有人帮助我时,我没有得到这些。 提前感谢 解决方案 请参阅 delphibasics-FreeAndNil docwiki.embarcadero-FreeAndNil pages-fre ..
发布时间:2017-04-23 11:56:13 Delphi

Delphi XE2:可以在VCL应用程序中实例化一个FireMonkey表单?

在Delphi XE2之前,我们只有VCL才能创建GUI应用程序。 Delphi XE2指出: 注意:FireMonkey(FMX)和Visual Component Library(VCL)是 不兼容,不能用于同一个项目或 应用程序。也就是说,一个应用程序必须是唯一的一个或 其他,FireMonkey或VCL。不兼容性是由FireMonkey(FMX)和VCL之间的 框架差异引起的 ..
发布时间:2017-04-23 11:55:00 Delphi