Delphi 对象检查器不应用更改的属性

//我不知道如何更好地问这个问题…// 我注册了我自己的新类(TDisplay)。这个类中有一个对象(TRectangle,也是我自己的),它是在TCustomDisplay的构造函数中创建的,TCustomDisplay是TDisplay的前置器 当我在表单上放置TDisplay时,我可以像往常一样编辑两个对象(TDisplay、TRectangle)的所有已发布属性,但只有TDisplay是根据对象检查器设置的。TRectangle保留其默认值(左0、上0、右30、下20),尽管这些属性设置

delphilogn与幂超椭圆函数算法

如何在超级椭圆函数中隔离“slope”参数,由以下公式给出: MyY:=(1.0-(功率(1.0-功率(x,2.0/斜率),斜率*0.5))) 当我知道“x”和“MyY”时? (该函数始终在0到1的范围内使用)。不容易。这个方程不能用代数方法求解。您需要使用数值方法来找到解决方案(例如)。不容易。这个方程不能用代数方法求解。您需要使用数值方法来找到解决方案(例如)。我不需要求解它,更准确地说,当我调用已知的函数“MyY:=…”、“x”和“Slope”时 我只需要用斜率的函数来表示。而不是MyY:

Delphi 修剪MSBuild文件记录器输出

如果我编译这个Delphi2007项目 program MyProject; {$APPTYPE CONSOLE} procedure Test; var i: Integer; begin if i = 666 then i := 42; end; begin Test; end. 从命令行 MSBuild MyProject.dproj /t:Rebuild /p:Configuration=Release /l:FileLogger,Microsoft.Buil

rtti的delphi2010遍历记录 类型 myrec=记录 id:dWord; 名称:WideChar的数组[0..31]; 三:德沃德,; 伯爵:德沃德; 舒星:单身; 树形2:德沃德; 树形3:德沃德; 结束; 变量 表1:TForm1; mystr:TMemoryStream; nowmyrec:myrec; 实施 使用Rtti; {$R*.dfm} 过程TForm1.FormCreate(发送方:TObject); 变量 rttiContext:TRttiContext; rttType:trtType; 领域:焦油; 项目:myrec; 一:字; 开始 mystr:=TMemoryStream.Create; mystr.LoadFromFile(ExtractFilePath(Application.exename)+'1.data'); mystr.位置:=20; mystr.readbuffer(nowmyRec,88); rttiType:=rttiContext.GetType(TypeInfo(myRec)); 字段:=rttiType.GetFields; 对于i:=低(字段)到高(字段)do 开始 Memo1.Lines.Add(字段[i].GetValue(@nowmyRec.ToString); 结束; 结束; 结束。

myrec.name是中文字符,myrec.name的长度是64字节,我读不懂myrec.name来备忘,请帮帮我 我正在使用Delphi 2010,我发现您的代码有几个问题。首先,我无法让RTTI方法处理字符数组的内联声明。我把它改成: type myrec = record id:dWord; name:array[0..31] of WideChar; three:dword; count:dword; ShuXing:Single; ShuXing2:dword; Sh

Delphi 从指针访问值的问题

我有一个TObject类型的类,叫做CModelItem 我希望有一个这些对象的列表,并能够修改每个对象的值 所以,我创建了一个类 CQueueList = class(TList) private public end; 而我 QueueList : CQueueList; 在var中 现在,我可以将CModelItem添加到此列表中,如下所示: QueueList := CQueueList.Create; for idx := 0 to ndx - 1 do begin

Delphi TZipMaster-如何使用查找方法?

使用Delphi XE,TZipMaster 1.91(最新版本) 我想获取与传递给Find函数的FSpec arg匹配的第一个文件名的文件名。但是,我在调用此函数时遇到访问冲突 var DBBakFl : String; d : Integer; begin ZipMaster191.ZipFileName := 'myzip.zip'; try DBBakFl := ZipMaster191.Find('*.FBK', d).FileNa

Delphi 无法在被重写的抽象方法中查看属性

我有一个抽象类,通过重写抽象方法从中派生出一个具体类。我发现我在重写的方法上放置的任何属性都是不可见的。在查看Delphi文档之后,我发现了这样一句话:“注意,声明的属性类不能声明为类抽象,也不应该包含任何抽象方法。”我的问题是,有人知道如何使这些属性可见吗?发现了值得分享的问题。我定义的属性类称为TapiHelpPattAttribute。我实际用于修饰方法的属性称为TapiHelpPatterBute。请注意名称中额外的“r”。编译器没有意识到我犯了一个拼写错误 在重新阅读了文档之后,我将上

(Delphi THintWindow)如何绘制透明PNG?

我有以下delphi 2010代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math, ExtCtrls, pngimage; type TMyHintWindow = class(THintWindow) private FBitmap :

Delphi epanet2.dll中的调用函数

我正在将Epanet的代码从Delphi7转换为XE3。我的问题是关于用C编译的dll中的*字符 dll中的代码如下所示: int DLLEXPORT ENopen(char *f1, char *f2, char *f3) /* Check that file names are not identical */ .... if (strcomp(f1,f2) || strcomp(f1,f3) || strcomp(f2,f3)) { writecon(FMT04

创建错误消息Delphi 7

好的,我现在是一名11年级的学生。我正试图完成一项实际作业,但我遇到了一点问题,我正在使用的教科书没有告诉我如果用户没有在RichEdit中输入数据,如何创建错误消息。有谁能告诉我怎么做吗?谢谢你花时间帮忙 这就是引发泛型异常的方式(使用SysUtils.exception类): 未处理的异常会导致执行路径转义到Delphi RTL内部的默认异常处理程序中,然后该处理程序将向用户显示exception.Message的值 您甚至可以像这样处理自己的异常: try ... raise Ex

Delphi 如何从TGraphic字段中提取位图?

我快发疯了 这就是我正在做的 将TClientDataset、TImage和TButton拖放到窗体上 将Clientdataset1.Filename设置为biolife.xml 双击按钮并添加以下代码: procedure TForm31.Button1Click(Sender: TObject); var BF: TBlobField; BS: TStream; BM: TBitmap; begin ClientDataset1.Open; ClientDataset1

设置文本对齐listboxitem Delphi XE5 FM在运行时不工作

我想更改在runtim创建并添加到简单列表框中的litboxitem的对齐方式 如果在运行前在设计窗口中添加listview项,则可以通过以下方式轻松调整对齐方式: 但是,当对象在运行时创建时,它根本不以这种方式工作。例如,高度会: 此代码有什么问题?此类设置通常从样式中提取。StyledSettings属性告诉FM应该从样式中提取哪些属性,其他属性将从属性中设置。如果在设计时编辑属性,编辑器将为您调整StyledSettings属性。在运行时,您需要手动执行此操作 尝试添加: li

Delphi XE4或XE5:如何以弹出格式打开Google Chrome?

问题:我需要在给定的url上通过Delphi XE5或XE4打开Google Chrome,但我需要以弹出格式打开,没有菜单和工具栏。怎么做?用参数创建一个新的Chrome进程--应用程序和你的url用参数创建一个新的Chrome进程--应用程序和你的url用参数创建一个新的Chrome进程--应用程序和你的url静默模式 ShellExecute(Application.Handle,'Open', 'chrome.exe',PChar(' -incognito '+URLText), 0,

Delphi 防止用户删除自己

用户登录时,其名称将显示在应用程序主窗体的状态栏中: StatusBar1.面板[1]。文本:= DataModule1.ADQuery4.FieldByName('USER').AsString 但是,该用户还可以访问(priviledge)另一个表单,通过该表单可以添加或删除用户)。如何防止此用户删除自己?如何判断添加用户的查询以避免状态栏中显示的查询?或者删除之前的消息?使用ADQuery4的BeforeDelete事件 procedure TDataModule1.ADOQuery4Be

Delphi属性堆栈溢出错误

我的物业类别: unit SubImage; interface type TSubImage = class private { private declarations } function getHeight: Integer; function getWidth: Integer; procedure setHeight(const Value: Integer); procedure setWidth(const Value: Integer); protect

Delphi 列表所需的E2017指针类型

从Win XP下的Delphi 2007到Win7下的Xe7 我不确定为什么这条突出显示的线不起作用 Error : [dcc32 Error] utilmemblock.pas(935): E2017 Pointer type required //D:Convert a memory block to a List. Odd sizes are truncated. procedure MemBlockToList(const MemBlock:TMemBlock;List:TList);

Delphi将变量枚举为varInteger,而不是varUInt32

Delphi枚举值本机定义为无符号整数-1、2或4字节,具体取决于MINENUMSIZE的设置 我有一个例子,我们使用变体在应用程序之间传输不同数据类型的数据。所有其他数据类型都可以很好地工作,但现在我们意识到,其他应用程序的期望是枚举值应该是有符号整数,而不是无符号整数(一些应用程序正在验证这一点) 是否有办法配置自动变量转换,将枚举值转换为varInteger,而不是varUInt32 背景:我们正在为OPC UA编写库代码。OPC UA定义了一种称为Variant的类型,它在Windows

在Delphi中使用RasGetEntryProperties确定RasEntry结构大小

我正在尝试创建一个DUN条目 我正在使用lpRasEntry参数null调用RasGetEntryProperties。这将返回lpdwEntryInfoSize参数中的结构大小。相反,它返回一个错误-error\u INVALID\u SIZE 如何调用RasGetEntryProperties函数来获取RasEntry结构大小?表示,当RasEntry记录的dwSize字段不正确时,错误大小为“无效”。如果函数能够读取该字段,那么您没有像您声称的那样为lpRasEntry参数提供空指针。Mi

Delphi的图表推荐

我正在寻找一个像样的图表库与Delphi2010一起使用 我们不希望在客户端PC上安装额外的框架,因此希望避免使用.Net、Java或Flash的工具包 我们需要的图表类型非常简单(2D和3D饼图/甜甜圈、条形图、线条图),但客户希望有半透明、圆边等有吸引力的图表,类似于从中提供的图表 这似乎是一个自然的选择,我们对此进行了研究,但它们不支持客户要求的外观。我使用了TeeChart和TMS图表。两者都可以在不进行任何其他部署(即ActiveX、DLL)的情况下使用。我倾向于使用更多的图表;这是一

如何在VBA中从Delphi com对象的变量属性中获取IDispatch信息?

我有一个用Delphi编写的COM对象,它有一个返回变量的属性。基本上,这个属性根据我传递给它的参数返回一个值。当我从VBA(例如Excel)访问对象时,我可以编写如下内容: MyObject.MyProperty("IntProperty") = 22 现在,属性还可以返回IDispatch对象,该对象存储在变量中。如果我从Delphi访问com对象,我将编写以下代码来提取IDispatch信息 var Info : IMyInterface; Info := IDispatch(TV

限制带宽-Delphi 2007 ICS组件

有人知道如何在Delphi中限制/控制ICS组件中twsocket(客户端)的带宽吗?我们有一个将端口映射到squid的小程序。使用ICS组件的软件将来自LAN的请求传输到squid的一个端口,并将内容返回到原始IP。有人能解释一下,如何控制带宽,将其限制在一定的KB/s,防止坏孩子使用全部资源吗?一些代码片段可能会受到高度赞赏 提前感谢。这在常见问题解答(查找“带宽控制”)中有介绍。 还有一个指向实现它的组件的链接您似乎正在尝试模拟网络约束。 这是几个用于此目的的商业应用程序,它们也模拟延迟

是否可以在Delphi中平滑缩放的TBitmap?

我在带有256x256位图的图像上使用Stretch=True。这将按比例缩小1、2、4或8。正如所料,位图上的文本越是偏离“1”就越可怕。 不过我注意到,Windows7资源管理器将位图的缩小版本渲染得更“柔和”和更令人愉悦。有可能用这种方式“模糊”TBitmap吗?我想你的意思是在时间上拉伸=真,而不是在TBitmap上 不幸的是,TImage在调整图像大小时没有内置重采样器。 我的建议是使用它,因为它支持多种重采样器(一些更适合增大尺寸,另一些更适合减小尺寸)通过使用半色调StretchB

Delphi 以点为单位将LogFont高度转换为字体大小

我有一个LOGFONT结构。现在我要做的就是从LOGFONT高度获取相关的字体大小(以点为单位)。当映射模式为mm\u Text(通常是这样)并且lfHeight字段为正值时,它已经给出了以点为单位的高度。当它为负数时,单位为像素。提供了要在它们之间转换的公式: 每英寸有72个点GetDeviceCaps告诉您给定设备上每英寸的像素数。反转公式以从点获取像素: PointSize := MulDiv(-lfHeight, 72, GetDeviceCaps(hDC, LogPixelsY);

“设置Delphi 7项目”;版本信息“;来自代码?

是否可以从代码中设置“版本信息”设置?我想在不使用“项目选项”对话框的情况下设置“注释”属性的版本编号和值。解决方案是编辑项目资源文件。检查此C++示例,您需要重写应用程序资源。 好的起点可能是XN资源编辑器,它附带源代码 值得一读的还有Inno设置(它确实为可执行输出设置了图标)我建议使用一个构建工具,比如(我经常使用),它可以根据适当的方案为您实现这一点。然后,您知道构建选项都是您想要的,您的数字会适当增加,您可以执行诸如上传到FTP站点等操作。在我的脚本中,从EXE到安装程序以及所有程序,

Delphi 有没有办法将整个数组复制到另一个数组中?(使用For循环除外)

有没有办法将整个数组复制到另一个数组中?而不是使用for循环 or命令对此有效吗? 我确实尝试过,但它有一个错误:不兼容的类型 我应该坚持使用for循环吗?移动或复制将不起作用,您可以使用CopyMemory,但这需要阵列是一个连续的内存块 SetLength(DestArray, Length(MyArray)); CopyMemory(@DestArray[0], @MyArray[0], Length(MyArray) * SizeOf(ArrayElement)); 看 对于索引和Le

逆向工程delphi 2010代码-UML工具

我正在寻找一个软件,可以反向工程德尔福2010年项目,并创建一个类图。 我已经试用了一些软件(ModelMaker、Enterprise Architect),但它们并不像我预期的那样工作。 Enterprise Architect无法对Delphi 2010代码进行反向工程,例如,它不理解代码中的泛型。 ModelMaker太复杂了,我真的不喜欢它的构建方式(界面很糟糕)。 所以你们对一个好的UML工具有什么建议,它可以与Delphi2010一起使用?不管是免费的还是付费的。我只想要一个好的U

Delphi MS Access 2007能否支持多用户环境?

有一个应用程序正在多台机器上运行(大约在2台机器上运行)。此应用程序更新放置在网络上的共享mdb。两个用户都试图一次更新共享mdb,但问题是一次只有一个用户能够更新mdb。另一个用户无法打开它。是否有人建议access支持多用户环境 编辑: 有一个表单TFormRoadAttrib。当它激活时,调用以下函数 procedure TFrmRoadAttrib.FormActivate(Sender: TObject); if dmTimeDomain <> nil then be

Delphi messagebox出现在其他表单后面

我正在使用下面的代码在Delphi7中创建messagebox。然而,我在屏幕上还有另一个表单,它的FormStyle设置为fsStayOnTop,并且消息框显示在此表单后面 有没有办法强迫messagebox出现在前面 if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then 在Windows.pas中,您可以找到更多指向Mess

如何持久化对Delphi';s组件?

每次我向列表框、列表视图或编辑器中的按钮添加文本时,它都会在每次程序启动时显示。问题是为什么当我在运行时添加它们,然后重新启动程序时,这些项(文本或按钮)会消失。我知道文本可以保存在文件中,但有没有其他方法像编辑器中保存的默认文本一样。当您在设计时添加文本时,它会保存在.dfm文件中并编译到程序中。这不会在运行时发生 想象一下,如果是这样的话。它不能以同样的方式运行,因为一旦部署了应用程序,就不能更改可执行文件。您不希望将用户设置存储在可执行文件中。因此,这些设置确实需要位于应用程序外部 要实现

DLL中的FMX表单(firemonkey/delphi)

我试图在dll中创建一个FMX表单,大约17个小时(尝试了不同的方法)后,我让它工作了,除了我在尝试卸载dll时遇到异常。我不知道该怎么做,也许有人能帮我指出我做错了什么 旁注: 我不能在我的VCL应用程序中使用FMX表单,因为AA绘图,我只需要在画布上绘图时在文本上使用FMX表单,而在VCL应用程序中使用FMX表单时,我无法在文本上使用cleartype:(我试图制作某种OSD/HUD 显示我的问题的项目: exe unit1.pas unit Unit1; interface uses

Delphi 带BDE的Paradox数据库-在数据库/表打开时强制更改磁盘

我们有一个Paradox数据库表,我们希望使用类似DSynchronize的东西在网络上镜像它 我看到的问题是,通过BDE(Borland数据库引擎)的Paradox不会更新文件系统,直到表被关闭,或者它使用的某个缓冲区被填满 我使用了flush buffers调用,它对磁盘上的文件没有影响。在表上调用close将强制执行我正在寻找的更新,但是这是一个非常大的问题 我只是错过了某个BDE设置吗 最后,使用正确的NetDir设置通过网络共享此数据库,使更改对另一台计算机可见。这些文件看起来仍然没有

为什么不能在64位Delphi中获取嵌套本地函数的地址?

作为。自结束相关问题以来-下面添加了更多示例 下面的简单代码(查找顶级Ie窗口并枚举其子窗口)适用于“32位Windows”目标平台。早期版本的Delphi也没有问题: procedure TForm1.Button1Click(Sender: TObject); function EnumChildren(hwnd: HWND; lParam: LPARAM): BOOL; stdcall; const Server = 'Internet Explorer_Server';

Delphi 如何禁用非模态形式中的所有组件?

情景: 与此操作关联的战术管理器、战术按钮和TButton ActionManager在其OnUpdate事件处理程序中不断启用该操作 动作事件处理程序中的代码使用Jedi代码库JCL使用ShellExecAndWait方法启动外部程序 要求:应用程序不应允许通过再次快速单击按钮来启动应用程序两次 问题: ShellExecAndWait不会阻止应用程序消息循环,因此用户可以在外部应用程序仍处于打开状态时单击 如果操作处理程序方法在ShellExecAndWait调用之前禁用该操作,则更新方法将

Delphi 如何激活案例语句的代码完成?

在较新的Delphi版本中,可以使用“代码完成”一次在case语句中对所有案例进行编码,例如枚举类型 但不管我怎么做,我都无法让它发挥作用。我应该开始键入什么,然后使用什么热键?可能我缺少工具/选项设置,尽管我不怀疑,因为这是一个手动操作。使用选项卡退出case变量字段,如果变量是枚举类型,IDE将自动完成case选项 在代码编辑器的适当位置键入casespace IDE添加了一个case模板,并显示一个蓝色矩形字段,您可以在其中键入case语句的变量名 写下该变量的名称,然后 使用Tab键退

Delphi 确定Web服务是否可用或是否具有有效的url?

如何检查Web服务是否可用或是否具有有效的url 我正在使用Delphi向导导入和自动生成必要的WSDL函数 向导为我创建的函数不会在WSDL或URL错误时引发异常或返回空对象。只有在调用返回的WSDL类的函数时,它才会抛出一个奇怪的异常,即XML字符串没有有效的“text/html”样式 以下是自动生成的WSDL函数: function GetcheckVatPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): checkVa

Delphi 将格式化文本添加到SynEdit

如何将格式化文本添加到SynEdit控件?我实际上不需要语法高亮显示,我希望能够控制线条特定部分的颜色 为了达到这个效果,我目前正在使用一个TRichEdit并设置seldattributes.Color和seldattributes.Text。它工作的很好,但我希望摆脱使用TRichEdit 我能做类似于SynDIT的事情吗?或者它不是这个工作的理想组件吗?也许你应该考虑嵌入一个WebBuffor。这可能就是我解决它的方法。SynEdit它基本上是一个代码编辑器。您可以控制某些属性,但通常通过

Delphi 如何使用OnNotify的通用TList

我想使用通用TList的OnNotify事件。将过程分配给OnNotify会产生错误消息: E2010 Incompatible types: 'System.Generics.Collections.TCollectionNotification' and 'System.Classes.TCollectionNotification' 我声明了一个类,其中使用了一个通用TList,如下所示: TEditor_Table = class (TObject) public FEditors

Delphi 如何处理开放式TControl阵列

我有一段代码没有编译: function IsControlOneOf(AControl: TControl; AControls: array of TControl): Boolean; begin Result := False; // if AControls <> nil then // does not compile! if Length(AControls) <> 0 then // this compiles Result := AC

delphixe4中的FastReport4字段名

我正在DelphiXE4中使用FastReport4。 我在运行时设置连接字符串,如下所示: ADOConnection.ConnectionString := ConStr; ADOConnection.Connected := True; AdoQuery1.Connection := ADOConnection; 所以我无法在FastReport Designer中看到预览! 我有这样一个问题: AdoQuery.Sql.Text :='SELECT Table1.title,Table

Delphi 在窗体上放置TMemo后,TMainMenu图标消失

我有一个带有图标的菜单。在我在表单上放置TMemo之前,一切都很好。当我运行我的程序时,图标出现了。发生了什么,我如何解决这个问题 我使用Delphi 2010作为IDE。调试VCL时,我跟踪了TMenuItem.AppendTo过程中的问题。当变量IsOwnerDraw设置为False时,图像不显示,在这种情况下,当GetImageList返回Nil时,图像不显示。这可能是VCL上的一个错误,但在TMainMenu中设置OwnerDraw=True可以解决问题 编辑:考虑到OwnerDra

如何在Delphi XE应用程序中使用CHM HTML帮助文件?

Delphi-如何在Delphi XE应用程序中使用CHM HTML帮助文件 本文介绍如何使用CHM文件。 我完成了上面描述的所有步骤 增加 公共职能` function TForm1.HH(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean; begin if (Command = 0) and (Data = 0) then HtmlHelp(Application.Handle, P

Delphi 在运行时创建TRadioGroup

我需要用7个不同的单选按钮动态创建一个TRadioGroup 单选按钮如下: 螺钉12mm 桃子罐头250克 笔芯蓝笔 西红柿 意大利面 双弯5m 透明胶250ml 我认为它应该是这样的: rgpOptions := TRadioGroup.Create(frmSale); rgpOptions.Parent := frmSale; rgpOptions.Left := 30; rgpOptions.Top := 100; rgpOptions.Width := 300; r

Delphi 阵列DML和缓存更新之间的Firedac差异

简单问题 缓存更新选项和阵列DML之间有什么区别? 我以为缓存更新是为了限制LAN往返,但现在我看到了阵列DML特性 有什么区别?缓存更新是如何在稍后的时间在单个批中执行缓冲更改的方式。这些更改将被缓冲,并且可以在稍后立即刷新。Array DML是一种将数据从客户机传输到DBMS的方法,对于具有本机支持的DBMS来说,它可以从根本上提高速度。所以它们是不同的东西,有不同的应用。如果它们可以组合,如果你可以使用缓存的更新,然后这些更新作为DML数组传输到DMB,我不知道。但这将是一个不同的主题。那

Delphi 如何使词典不免费项目?

我使用一些字典来提高搜索速度。但我不想让它在我释放它时清除我的对象。像属性OwnsObjects=False的TObjectList一样,可能吗 谢谢t词典没有自己的会员。TObjectDictionary可以选择同时拥有键和值,也可以不拥有键和值。此所有权由传递给构造函数的参数确定 如果您正在使用TDictionary并认为它正在破坏其成员,那么您就错了 t词典不拥有其成员。TObjectDictionary可以选择同时拥有键和值,也可以不拥有键和值。此所有权由传递给构造函数的参数确定 如果您

Delphi 更改/编辑数据库记录中的字段时捕获/存储

我有一个多用户数据库系统,它存储不同字段的记录,例如文本、日期和时间等 是否有人知道当用户更改/修改记录字段时如何捕获。有点像审计历史记录,它显示记录中发生的所有事件 我通过tdatasource和TADQuery(fireDAC)连接到数据库 谢谢,我看到了一个解决方案,每个重要的表都有许多触发器,在插入、更新和删除记录时都会触发这些触发器。这些触发器将记录的旧状态和新状态保存到相应的“历史”表中。在DBMS端执行此操作。

Delphi 如何在Builder XE6中运行时动态添加组件?

我想在运行时将新面板添加到表单中,但我遇到的问题是,将它们与顶部对齐时,它们不会按照创建它们的顺序显示 我按照这篇文章中的提示使用DisableAlign()和EnableAlign() 这适用于我添加的最初四个面板 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TPanel * test; Panel1->DisableAlign(); for(int i = 0; i<

Delphi-在现有表单上分配表单OnClose

我的项目中有许多表单使用表单OnClose事件。 然而,我需要在运行时在所有表单上添加另一个“通用”OnClose。 有没有办法只添加新的事件方法,而不是替换它?因此,表单将触发两个OnClose事件。一次只能为一个事件分配一个处理程序 您可以将“通用”处理程序分配给每个窗体的OnClose事件,然后让每个窗体重写其虚拟DoClose()事件以执行其本地工作。当准备好调用泛型处理程序时,它可以调用继承的DoClose()方法。例如: type TMyForm = class(TForm)

Delphi 使用TIdTCPClient进行异步读取

我是德尔福的新手,我正在尝试做一些网络操作。在本例中,我希望连接到一个(我们称之为)通知服务器,该服务器将在任何事件发生时发送字符串 我的第一个方法是: 我在自己的线程上运行TIdTCPClient并设置ReadTimeout,这样我就不会总是被阻塞。这样我可以检查线程的终止状态 ConnectionToServer.ReadTimeout := MyTimeOut; while( Continue ) do begin // try Command := Con