vcl

面试-虚方法与动态方法(Delphi)

冷暖自知 提交于 2020-05-08 16:51:42
相关资料: 内容摘自万一老师博客 https://www.cnblogs.com/fansizhe/p/12729750.html 方法来到类中, 以前的特点基本都在; 因为类一般是存在于一个继承链中, 所以就有了一些新的概念, 譬如: 继承、覆盖; 也有了很多新名称, 譬如: 静态方法、虚方法、动态方法、抽象方法、类方法、消息方法. 先从虚方法与动态方法开始吧 //下面的类中就定义了两个虚方法(virtual)、两个动态方法(dynamic) TMyClass = class procedure Proc1(x,y: Real); virtual ; function Fun1(x,y: Real): Real; virtual ; procedure Proc2(x,y: Real); dynamic ; function Fun2(x,y: Real): Real; dynamic ; end ; //定义成虚方法或动态方法, 就意味着在后来的子类中将要被覆盖(override), 也就是重写 TBass = class procedure Proc(x,y: Real); virtual ; function Fun(x,y: Real): Real; dynamic ; end ; TChild = class (TBass) procedure Proc(x,y:

Delphi 10.3.1来了

筅森魡賤 提交于 2020-05-07 15:26:20
10.3.1发布了,这个版本可以独自安装,是对Delphi 10.3 Rio,C ++ Builder 10.3 Rio和RAD Studio 10.3 Rio的更新。如果安装了2018年11月发布的10.3 Rio,那需要完全卸载旧版本,才能安装新版本,这很麻烦,但是可以使用设置合并工具来保留旧版本的设置。 10.3.1的新功能: 扩展了对iOS 12和iPhone X系列设备的支持。 RAD Server Console UI重新设计并迁移到Ext JS框架(可通过GetIt获得)。 改进了对Firebird 3.0.4和Firebird嵌入式FireDAC的支持。 Windows上的HTTP和SOAP客户端库增强功能。 两个新的IDE生产力工具:书签和导航器(可通过GetIt获得)。(头两天听洞主说是收购来的) 书签 扩展了IDE在代码编辑器中之前的位置标记。 单个快捷方式会创建一个新书签,当前文件和所有文件中的书签都会显示在停靠窗口中,其中包含有关书签的语法突出显示和上下文信息,例如它所使用的方法。它还支持插入书签,一堆位置你可以按Escape键向后跳。 Navigator 允许您通过智能搜索Delphi快速跳转到单元的任何位置。 按Ctrl + G,在弹出窗口上可以转到uses子句,任何方法,属性,属性的支持字段或方法以及任何其他代码元素。 它还为Delphi和C +

VCL画图实例

為{幸葍}努か 提交于 2020-05-07 12:53:59
代码下载: https://download.csdn.net/download/zhujianqiangqq/12394576 代码实例: 1 unit Unit1; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; 8 type 9 TCanvasData = record // 定义绘制数据数组 10 // 画笔可设置的参数 11 PenStartSize: Integer; // 画笔开始大小 12 PenMinSize: Integer; // 画笔最小大小 13 PenMaxSize: Integer; // 画笔最大大小 14 PenMobileBorder: Integer; // 移动界限,超过这个值就改变笔大小值 15 PenChangeValue: Integer; // 画笔每次改变的大小 16 PenSizeChangeSpeed: Integer; // 笔的改变速度,越小改变的速度越快 17 // 画图用到的参数 18

【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; 来开启内存泄漏检测

Delphi类引用示例

…衆ロ難τιáo~ 提交于 2020-04-26 14:10:38
相关资料: https://jingyan.baidu.com/article/bad08e1e2ec23b09c9512148.html 实例代码: 1 unit Unit1; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; 8 9 type 10 TControlClass = class of TControl; 11 12 TForm1 = class (TForm) 13 RadioGroup1: TRadioGroup; 14 procedure FormCreate(Sender: TObject); 15 procedure RadioGroup1Click(Sender: TObject); 16 procedure FormMouseDown(Sender: TObject; Button: TMouseButton; 17 Shift: TShiftState; X, Y: Integer); 18 private 19 {

FastReport快速实现条形码,二维码面单打印

廉价感情. 提交于 2020-04-25 16:19:08
一、什么是FastReport? FastReport是功能齐全的 报表控件 ,使开发者可以快速并高效地为·NET/VCL/COM/ActiveX应用程序添加报表支持。 FastReport有很多产品,如FastReport.Net、FASTREPORT VCL等,这里不一一去做概述,描述下FastReport.Net的具体使用。 FastReport.Net A、是一款适用于Windows Forms, ASP.NET和MVC框架的功能齐全的报表分析解决方案。 B、可用在Microsoft Visual Studio 2005到2015,支持.Net Framework 2.0到4.x。 C、2013版支持AJAX,云存储,地图编辑器和自定义标签。 二、使用FastReport可以完成什么功用? 打印预览、打印设计、导出PDF、根据数据源生成报表等 三、如何使用FastReport? (1)下载安装 下载地址:链接: https://pan.baidu.com/s/1wAx3A-chefjgVUwWjvzDLw 密码: 2dca 解压后,见以下文件: (2)打开程序,并进行界面汉化 A、双击Demo.exe打开程序 B、在弹出窗体中,点击设计按钮 弹出设计界面: C、点击菜单File-- Select Language 弹出界面如下:界面已汉化 (3)设计模板: A、根据情况

Load a bmp file into a TSpeedButton

允我心安 提交于 2020-04-18 05:45:29
问题 Using Embarcadero C++Builder, does anyone know how to manually load a .bmp file into a TSpeedButton using the Glyph property, setting a path to the image, not with the Object Inspector? 回答1: The Glyph property is a TBitmap, so you can use the TBitmap::LoadFromFile() method to load a new glyph from a file: speedbutton->Glyph->LoadFromFile("filename.bmp"); Note: " Glyph can provide up to four images within a single bitmap. All images must be the same size and next to each other in a horizontal

Load a bmp file into a TSpeedButton

↘锁芯ラ 提交于 2020-04-18 05:45:21
问题 Using Embarcadero C++Builder, does anyone know how to manually load a .bmp file into a TSpeedButton using the Glyph property, setting a path to the image, not with the Object Inspector? 回答1: The Glyph property is a TBitmap, so you can use the TBitmap::LoadFromFile() method to load a new glyph from a file: speedbutton->Glyph->LoadFromFile("filename.bmp"); Note: " Glyph can provide up to four images within a single bitmap. All images must be the same size and next to each other in a horizontal

WEB缓存系统之varnish代理以及健康状态检测配置

大憨熊 提交于 2020-04-11 11:01:36
  前文我们聊了下varnish的缓存项修剪配置,回顾请参考 https://www.cnblogs.com/qiuhom-1874/p/12666406.html ;今天我来说一下varnish作为代理服务器反向代理多主机的配置;前边的所有操作都是针对后端主机只有一台的情况来说varnish的配置;在生产环境中,我们的web站点服务器不应该只有一台;默认情况下才安装好varnish的主机,在default.vcl中只可以指定一台后端主机的地址和端口;如果我们后端主机是多台的情况下,我们需要加载varnish的模块directors;然后用backend+后端主机名称(这个名称是我们自定义的,只要是一合法名称即可),来分别把每个主机的地址和端口配置好即可;   示例:   提示:以上每个红框中的内容表示一台后端server;以上配置表示定义两台后端主机,其名称分别为webserver1和webserver2;   把主机定义好后,这里还需要用在vcl_init状态引擎中配置初始化一个组,然后把这两台主机加到对应的组中;   示例:   提示:以上配置表示用directors模块中的round_robin()方法初始化一个组对象,取名叫webserver;然后把对应两台主机加入到这个初始化组对象中;这意味着这个组里有两个成员,一个是webserver1,一个是webserver2

WEB缓存系统之varnish代理以及健康状态检测配置

不打扰是莪最后的温柔 提交于 2020-04-11 10:56:10
  前文我们聊了下varnish的缓存项修剪配置,回顾请参考 https://www.cnblogs.com/qiuhom-1874/p/12666406.html ;今天我来说一下varnish作为代理服务器反向代理多主机的配置;前边的所有操作都是针对后端主机只有一台的情况来说varnish的配置;在生产环境中,我们的web站点服务器不应该只有一台;默认情况下才安装好varnish的主机,在default.vcl中只可以指定一台后端主机的地址和端口;如果我们后端主机是多台的情况下,我们需要加载varnish的模块directors;然后用backend+后端主机名称(这个名称是我们自定义的,只要是一合法名称即可),来分别把每个主机的地址和端口配置好即可;   示例:   提示:以上每个红框中的内容表示一台后端server;以上配置表示定义两台后端主机,其名称分别为webserver1和webserver2;   把主机定义好后,这里还需要用在vcl_init状态引擎中配置初始化一个组,然后把这两台主机加到对应的组中;   示例:   提示:以上配置表示用directors模块中的round_robin()方法初始化一个组对象,取名叫webserver;然后把对应两台主机加入到这个初始化组对象中;这意味着这个组里有两个成员,一个是webserver1,一个是webserver2