Delphi

Delphi练习之简单实现记事本功能

自古美人都是妖i 提交于 2020-04-28 03:26:42
主要是使用Delphi创建一个窗口程序,实现的功能就是记事本最基本的打开和保存功能,其实是很简单就能实现的,因为原理很简单,前提是控件的属性方法要知道是哪一个,但是RAD官方帮助文档做的实在是太烂,粗略不说有的甚至都直接不写,所以中间遇到了很多问题,在此总结一下。 实现的过程就分为两部分:界面布局和Unit内编码. 界面布局,我们先按需求设计出合适的界面,下图是我设计的界面(其实就是仿记事本),具体步骤下面讲; 如图所示,我向默认生成的 Form1窗体 中拖入了五个组件: 1)Standard中的 TMainMenu,用于创建菜单; 我们对该控件进行编辑(右键->Menu Designer)然后在弹出的窗口中设置想要的选项(具体的就是:右键->Insert,然后修改 Caption、ShortCut、Name属性),如下图: 注意:例如图中显示的“文件(F)”,需要将该控件的 Caption 改为“文件(&F)”,只有加了&,才能正确的显示,而且程序运行时默认快捷键是“Alt + F”(如果你将&后的字母设为A,默认快捷键就是“Alt + A”,以此类推)。当然,程序运行时字母下是不会有下划线的。 这里关于作者的属性CheckedBox属性是False,也就是没有打对勾,如图; 2)Standard中的 TMemo,用于文本区域; 这里主要修改 Align(布局属性

delphi 怎么实现主窗口退出时,有一个提示框?

倾然丶 夕夏残阳落幕 提交于 2020-04-28 02:44:24
无论点窗口上的【按钮】还是【右上角的叉】,能出现一个提示窗口,“是”-退出窗口,“否”-重新登录(调出登录窗口),“取消”-返回。 MessageBox能实现吗?还是要调用新窗口(我调用窗口,有些错误)? 如图一样。 有谁能给代码?谢谢了 热心网友:你好,我用你的代码,已经好了。但用在 procedure TMainForm.ToolButton8Click(Sender: TObject); 中“是”要点两下主窗口才关闭,是什么原因? 你可以在窗体的onClose事件中进行设计。 在里面先以定义一个退出标志,然后根据标志判断是否退出。 procedure TFrm_mz_sf_zdhj.FormClose(S end er: TObject; var Action: TCloseAction); var ExitFlag:Integer;//退出标志 begin ExitFlag:=Application.MessageBox('当前记录尚未保存,确认退出吗?','警告',Mb_YesNo) ; If ExitFlag=7 then//不退出 Begin //TCloseAction = (caNone, caHide, caFree, caMinimize); Action:=caNone; Exit; end else Begin self.close;//退出 End ;

十年磨一剑 Delphi再传奇

我的梦境 提交于 2020-04-26 18:02:27
新年伊始,英巴卡迪诺公司(Embarcadero)就在其官网发布了“激动人心的RAD Studio2018年发展规划”公告(见下图)。公告中指出,将在于2018年发布10.3.X新版本,新版本兼容Ext JS前端开发,支持快速WEB应用软件开发。这是继去年Delphi正式支持64 位 Linux 服务器应用开发之后又一个重大利好消息。英巴卡迪诺这些积极举措,得到了广大软件公司及软件开发人员的的一致好评。 随着移动互联网时代的到来,广大程序员迫切需要一款能够全面、快速支持移动开发的跨平台开发工具。2008年 , 英巴卡迪诺公司抓住这一千载难逢的历史机遇,在 Borland公司陷入绝境的时候,及时用2300万美元将Delphi收入囊中。尽管这一收购行动遭到很多软件公司的质疑,但 英巴卡迪诺 不争辩,不解释 。 经过公司十年坚持不懈的努力,一步步将Delphi打造为全面支持移动应用及物联网应用的跨平台的开发工具。全面支持Windows、Linux 、OS X、iOS和Android平台原生态应用。第一次真正实现了 “一次编写,到处编译”。开发人员仅通过单一的原代码就可原生分发到Windows、Mac OS、iOS、Android与Linux的多种平台上运行。当Delphi凭借跨平台技术重新进入软件界时,就立刻引起广泛关注,从事移动端和物联网开发的 程序员 更是青睐有加

delphi控制 word的几种方法--转

痞子三分冷 提交于 2020-04-26 18:01:30
对几种方法的难易程度的判别 a.通过Delphi的控件TOleContainer 将Word嵌入 这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以 将Word文 档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它存 在不可克 服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。 b.使用Delphi提供的Servers控件调用Word,使用Word的属性 使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能 够较好的实 现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写的 VBA宏代码)。 且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译 都不能通过。 本方式启动的Word与Delphi程序分属两个窗体。 此办法仅能作为一个参考。 c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中 , 利用Com技术编程 利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。 整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦

Allocation-Free Collections

徘徊边缘 提交于 2020-04-26 18:00:51
假设你有一个方法,通过创建临时的List来收集某些数据,并根据这些数据来统计信息,然后销毁这个临时列表。这个方法被经常调用,导致大量内存分配和释放以及增加的内存碎片。此外,所有这些内存管理都需要时间,并且可能会影响性能。 对于这些情况,您可能希望将所有数据保留在堆栈(stack)中,并完全避免内存分配。 我们向您展示了几种可以实现此目的的方法。 即使这些用例对你来说不适用,但你也可能会发现本文很有用,因为它使用了一些有趣的概念和Delphi语言功能。 堆栈与堆,值与参考类型 (Stack vs Heap, Value vs Reference Types) 首先,让我们先了解一些术语。你 可能已经知道本节中的所有内容,但无论如何我们都要回顾一下。 内部存储器有两种主要类型: 堆栈和堆。堆栈 被用于存储方法的局部变量和可能的其他数据(如在许多平台返回地址)。 堆 存储动态分配的内存,包括字符串,动态数组和对象。 当您了解了这些类型的内存时,您可能会在同一段落或章节中阅读有关值和引用类型的内容,因为这两者有些相关。值类型直接在存储器位置存储了一些值,而 参考类型存储的指针则指向位于别处(通常,但不是必须在一个值堆)。值类型的示例是整数,浮点数,布尔值,枚举,字符,记录和静态数组。引用类型的示例是字符串,对象,对象接口,动态数组和指针。 关于 类 和 对象 之间的区别存在争议

Allocation-Free Collections(在堆栈上使用内存)

99封情书 提交于 2020-04-26 18:00:35
假设你有一个方法,通过创建临时的List来收集某些数据,并根据这些数据来统计信息,然后销毁这个临时列表。这个方法被经常调用,导致大量内存分配和释放以及增加的内存碎片。此外,所有这些内存管理都需要时间,并且可能会影响性能。 对于这些情况,您可能希望将所有数据保留在堆栈(stack)中,并完全避免内存分配。我们向您展示了几种可以实现此目的的方法。 即使这些用例对你来说不适用,但你也可能会发现本文很有用,因为它使用了一些有趣的概念和Delphi语言功能。 堆栈与堆,值与参考类型(Stack vs Heap, Value vs Reference Types) 首先,让我们先了解一些术语。你可能已经知道本节中的所有内容,但无论如何我们都要回顾一下。 内部存储器有两种主要类型:堆栈和堆。堆栈被用于存储方法的局部变量和可能的其他数据(如在许多平台返回地址)。堆存储动态分配的内存,包括字符串,动态数组和对象。 当您了解了这些类型的内存时,您可能会在同一段落或章节中阅读有关值和引用类型的内容,因为这两者有些相关。值类型直接在存储器位置存储了一些值,而 参考类型存储的指针则指向位于别处(通常,但不是必须在一个值堆)。值类型的示例是整数,浮点数,布尔值,枚举,字符,记录和静态数组。引用类型的示例是字符串,对象,对象接口,动态数组和指针。 关于 类 和 对象 之间的区别存在争议,它们有时可以互换使用

【Delphi】 使用RAD Delphi FMX 开发安卓APP经常很不稳定且闪退的原因

假装没事ソ 提交于 2020-04-26 17:23:16
FMX开发android和iOS越来越稳定完善,期待delphi能够有更多新人接力。 下面说说在FMX开发中APP经常莫名其妙闪退的一些原因: 1)线程访问UI: 优先排查最常见的线程访问UI控件没有加同步保护,下面是相应的建议; 为了避免界面UI因为一些耗时较长的调用(网络访问,阻塞请求等)导致APP提示无响应,建议在各种用户交互操作中使用以下代码,此代码几乎是各种操作通用的调用方法: procedure TfmDemo.Button1Click(Sender: TObject); begin TThread.CreateAnonymousThread(procedure begin //Do something here... //update UI TThread.Synchronize(nil, procedure begin Button1.Text := 'done'; end); end).Start; end;    2)内存泄漏:检查变量的创建和释放,访问等相关代码,排除空指针,无效变量,无效类实例等调用。 这里没什么好说的,枯燥无聊的排查,让人沉浸其中且烦闷的过程,不过也有以下方法: A.可以将程序先输出为Windows平台,设置 System.ReportMemoryLeaksOnShutdown := True; 来开启内存泄漏检测

REST easy with kbmMW #21 – Delphi client stubs

廉价感情. 提交于 2020-04-26 17:22:38
在之前的博文中,我提到了存根生成器框架,将具有生成Delphi客户端存根代码的能力,使得开发Delphi智能客户端变的更容易,完全支持编译时的类型检查和IDE类/属性帮助。 本不想把这个新功能包含在即将发布的kbmMW版本中,但我无法自控.... 必须添加它才能生成相当完整的客户端存根代码。 存根生成器将生成普通的Delphi代码,需要kbmMW智能客户端功能进行编译。 但代码已完成,并包含所需的所有单元引用。 如果您使用的是包含对象的自定义单元,则必须将这些单元与生成的存根代码一起提供给Delphi客户端开发人员。 除OpenAPI支持外,SimpleInvocation服务器还支持通过REST接口直接返回Delphi存根代码。 让我们称之为: http://localhost:888/myserver/delphi 这将返回给你一个类似于这样的对话框: 保存它,将得一个单元文件: unit uSMARTDEMO; interface uses kbmMWGlobal, kbmMWSmartUtils, kbmMWSmartClient, kbmMWClient, kbmMWClientDataset ,uObjects ,System.Generics.Collections ,kbmMWDateTime ,kbmMemTable ; type // Name.......:

Delphi 启动流程

我与影子孤独终老i 提交于 2020-04-26 14:10:53
Project.DPR InitExe InitiateModule StartExec SetExceptionHandler InitUnits sysInit System FPUMaskInit FPUInit 系统相关GetVersion.... Types Windows Messages ActiveX SysConst SysUtils VarUtils Variants RtlConsts TypInfo Classes Graphics... StdCtrls... Dialogs.... Controls... Forms TApplication.Iniatiate TApplication.CreateForm TApplication.Run [SysUtils] InitExceptions; [Variants] InitializeCriticalSection(LVarTypeSync); [classes] InitThreadSynchronization; AddModuleUnloadProc(ModuleUnload); GlobalNameSpace := TMultiReadExclusiveWriteSynchronizer.Create; RegGroups := TRegGroups.Create; IntConstList

车牌识别相机在智能交通安防体系建设中的应用

◇◆丶佛笑我妖孽 提交于 2020-04-24 03:12:36
当今,车牌识别相机广泛地应用在智能交通管理系统中,对车辆管理发挥了巨大的作用。众所周知,车牌识别(LPR)系统是以图像处理、模式识别等技术为基础的智能识别系统,通过摄像机拍摄道路上行驶的车辆,形成图像,再进行车牌号码的识别。 技术支持 车牌识别在智能交通系统、出入口管理系统、公安图帧系统、移动警务系统等多种行业都已实现成功运用。算法融合了车牌定位、车牌字符切分、车牌字符识别等算法,使该系统具有识别效率高、速度快、适应性强、使用方便等优势,技术处于国际先进水平,在相关行业领域得到用户的广泛好评。 车牌识别算法优点 1、整车车牌识别率高:白天识别率≥99.7,夜间识别率≥98%; 2、识别速度快:极致优化的车牌定位和识别算法,识别时间≤50毫秒(200万图片); 3、支持车牌种类齐全:蓝牌、黄牌、挂车号牌、新军牌、警牌、新武警车牌、教练车牌、大使馆车牌、农用车牌、个性化车牌、港澳出入境车牌、澳台车牌、民航车牌、领馆车牌、新能源车牌等; 4、车牌宽度要求低:60-400像素宽度均可识别; 5、纯C编写,跨平台应用灵活; 产品形态 加密锁、车牌识别SDK开发包、开发文档 识别类型 标清、高清图片/视频;可识别1路、2路、4路、8路、16路、32路 支持的调用例程 C#、DELPHI、VB、VC++、JAVA 像素宽度 60-400像素宽度 特征识别 车牌颜色、车标类型、车身颜色 车牌类型