- 博客(53)
- 资源 (5)
- 收藏
- 关注
原创 修正TiKnob的指示箭头显示问题
iocom官方只支持到D7,但是可以运用于新版本,只测试过显示运用,没测试过OPC特性(这个在新版本运用中估计有问题)。是由于Canvas和IndicatorRect都有Left和Top属性引起的。在10.4中拖入一个TiKnob,发现“Indicator”没有显示出来,估计其它控件也有类似的问题,一般照此修改就可以。重新编译(不用重新安装),正常。TiKnob也发现BUG。
2023-11-09 18:05:38
270
原创 FMX的TListBox单选列表框
TListBox功能比较全,对于选择项,有“两种”模式,一种就是ListItem选中(界面上就是焦点和颜色变化),可以无,单选和多选。实际上,通过DefaultItemStyles.ItemStyle可以改变ListItem的许多样式,比如字体,颜色等等。需要一种类似TRadioBox的单选列表框。如果Item项是固定的,可以直接在TRectangle里放置TRadioBox来实现,界面还灵活。如果不考虑界面的CheckBox的方框,这样就可以了。但是如果Item项是动态的,用拼凑的实现就不灵活了。
2023-08-25 12:44:47
259
原创 DelphiMVCFrameWork 源码分析(三)
框架里的JWT Token 登录授权处理中间件比较简单,不支持验证码处理,签名方法也只支持一种HS(HS256,HS384,HS512),不支持RS(RS256, RS384, RS512),ES(ES256,ES384,ES512),PS(PS256,PS384,PS512)等,实际运用中还得扩充。中间件和控制器的一个主要区别是:中间件是单例模式(所有请求共用一个实例),控制器是每个请求一个实例,所以引擎在添加这二者时,中间件是添加实例,控制器是添加类型。可以看框架自带的中间件的代码,是如何实现的。
2023-05-13 16:03:24
919
原创 DelphiMVCFrameWork 源码分析(二)
DelphiMVCFrameWork框架的路由(Router)是通过Delphi的Attribute来实现的,作用于Controler类和方法。4、每个Controler包含一个或多个动作(Action),Action就是Controler的公开方法(public Method),同时伴随着RTTI Attribute(包含Router和其它参数)。year=2021?前面说过,在方法的MVCPath Attribute 中,参数是以"($XXXX)"标识的,所以通过正则表达式可以轻松获取参数名称列表。
2023-04-27 20:44:21
1118
原创 DelphiMVCFrameWork 源码分析(一)
正如框架名称,采用服务端的MVC架构,具体是采用了路由器(Router),控制器(Controler),中间件(Middleware)等结构,这样松耦合的结构,更有利于项目的开发和构建,也更有利用项目的扩展和维护。TMVCRenderer类里定义了各种各样的Render()方法,TMVCController是TMVCRenderer的子类,可以方便调用。对URL路由,URL参数等进行解析,找到当前执行的Controler及要执行的方法(Action)及参数等,嗯,我们可以在这里"截胡"。
2023-04-21 23:53:52
1065
原创 Delphi DataSnap 流程分析(二)
里分析的一样,只是到了最后,也就是方法TCustomWebDispatcher.DispatchAction(),接着进行后续处理。因而执行Dispatch := DSHTTPWebDispatcher1(TDSHTTPWebDispatcher类),这种方式只支持HTTP(普通HTTP和REST HTTP)通信,不支持TCP通信。可以看到DataSnap内部的处理还是依赖 DBX框架。这个方法比较啰嗦,要处理各种情况和格式。又到了DoCommand()方法了。客户端的方法调用处理比较繁杂。
2023-04-20 22:41:23
883
原创 Delphi DataSnap 流程分析(一)
好像和HTTP都没什么关系,和TDSServerTransport有关系,TCP的有个组件TDSTCPServerTransport,也看看它的继承关系。现在的方式2添加了HTTP支持,但是其实现方式不是直接通过WebModule来实现,而是转了个弯,通过桥接Indy的Http来实现。开始引入了Dispatch,到这里基本就明白了,后面的处理方式和一般的HTTP类似,只是简化了(DataSnap专用)。我们先来简要分析下方式2的流程,然后主要分析方式1的流程,方式3的流程类似方式1,就不做分析了。
2023-04-20 20:18:18
1451
原创 Delphi Web Server 流程分析
TIdCustomHTTPServer.DoExecute,这个方法是个复杂的处理,主要是循环处理各种HTTP 方法,解析请求头,判断请求类别,归类参数等等,然后调用DoCommandGet(子类通过此方法来具体处理),最后给客户端还回响应Response,直到连接断开。这里添加了ip6支持,然后设置IO句柄(用于https,加密,压缩等),然后是设置Scheduler(用于设置线程或纤程)。题外话:Delphi的WebBroker技术经过了多年的发展,随着大环境的发展和变化,其实现方式也不断扩展和进步。
2023-04-19 17:02:13
1220
原创 (原创) Delphi中LiveBinding 绑定非数据库类数据的时候显示字段自定义名称(二)
DELPHI 10.4版本后,有关Bind的源代码修改了,原来的适用于10.3.3以前的方法不适用了,再来分析下10.4版本以后适用的方法。
2022-06-17 02:21:25
543
原创 (原创) Delphi中LiveBinding 绑定非数据库类数据的时候显示字段自定义名称(一)
DELPHI默认下,Grid控件通过TAdapterBindSource绑定到一个TObjectList<TObject>列表时,Grid的Header显示的是TObject的属性名称。不能像绑定数据集时显示自定义名称,我们来看看其是怎么实现的。Grid是如何绑定数据的,通过Grid的绑定类TLinkGridToDataSource,追踪到单元Data.Bind.Grid.pas。TCustomLinkGridToDataSource本身没什么相关的方法,其父类是TCustomLinkGri
2022-05-11 19:45:25
617
原创 FireMonkey Control的Paint顺序
写FMX控件时,在追踪控件的绘制调用顺序的时候,研究FMX的源代码,老是看不出控件的Paint顺序,TControl的源代码里,只能追踪到源头PaintInternal(),并且PaintInternal()是不可覆盖的,然后代码里就没有看到哪里有调用PaintInternal()的地方(PaintTo(),ApplayEffect()等方法也调用了PaintInternal(),但是这个只是特别的应用Effect的调用,不是通用的调用),而且在TControl的下断点调试比较麻烦,会被其它的控件和FORM
2022-02-13 21:26:21
259
原创 openssl 几个函数运用注意
1、HASH的几个函数 md5(),sha1(),sha256()等几个函数,不能直接独立拿来用!这系列函数是库内部用的。实际运用中的HASH,要用openssl的摘要算法:EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type) int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count) int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned
2021-10-29 11:25:22
884
原创 VCL 窗体 Z-ORDER
现在基本都是在做FMX运用,最近一个项目本来也是用FMX来做,但是在做初步规划的时候发现,FMX比较麻烦,因为要和下位机通信,并且实时显示下位机送上来的数据(SOCKET通信,各种传感器的数据),波形图显示方面的控件,FMX下没找到好用的,VCL下倒是有IOCOM等工控控件可以用。决定还是用VCL来做,而且也只在WINDOWS下运用。搞习惯了FMX的界面布局,在VCL没有LAYOUT控件真感觉不方便啊。回到正题,在一个ShowModal窗体上再弹出ShowModal窗体,如果这个窗体不是需要满屏显示
2021-05-05 17:33:05
233
原创 Delphi DataSnap/Rest 的重定向处理
DataSnap 服务器如果需要特别的重定向请求,比如:如果客户端(不管是浏览器还是客户端App)通过特别的URL请求服务器,则可以在DataSnap的WebModule模块的Actions列表的DefaultAction(向导字段生成的)事件:procedure TWebModule1.WebModuleDefaultAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolea.
2021-04-22 11:31:51
582
原创 Delphi Android 下的定时对话框
一个很普通的定时对话框,比如自动更新的确认对话框,网上找了好久竟然没有,(Delphi Android下的, JAVA的一大堆,比如这个 https://github.com/MZCretin/AutoUpdateProject ,是国人写的,看着就不错,虽然看不懂)。安卓是一个很奇怪的系统,窗体都是异步的非模态的,这样实现阻塞对话框很麻烦。有人提过不要用TForm来实现对话框,用TFrame来实现,我感觉用TFrame来做也是很麻烦。看过一个高手写的DEMO,是自己“画”的,看着累。偶然看到一个帖
2021-04-15 23:08:24
426
原创 DSRestConnection的超时设置
DSRestConnection的超时设置新版本的delphi的DSRestConnection的属性HTTP是基于 THttpClient的,所以,超时设置就这样:DSRestConnection.Http.ConnectionTimeout := 5000还有个ReadTimeout,相当与THttpClient的的ResponseTimeout...
2021-03-29 20:49:15
234
转载 DataSnap的Session问题
DataSnap的Session问题DataSnap系统中,如果服务端重启或者某种原因错误,会引起客户端的Session超时错误。如果不处理,只能是客户端重启,这样不好。这里有一个帖子提到了:https://stackoverflow.com/questions/58989507/datasnap-session-has-expiredDatasnap session has expiredI've been using client server application using d
2021-03-29 20:11:04
451
原创 关于类构造器的注意点
DELPHI的类构造器class constructor 注意点。class constructor 的一般行为和initialization 行为一样,但有一点区别,就是不能在class constructor中注册自己,在initialization 中可以,见示例:unit Unit2;interfaceuses System.SysUtils, System.Cl...
2019-03-22 10:50:46
280
转载 解决delphi客户端用TIDhttp POST 传参中文乱码问题(转)
用Tidhttp post方法向服务器传参,碰到中文乱码的问题。1、delphi传中文到Java是乱码。上代码:procedure TForm18.Button1Click(Sender: TObject);var userName : String ; userPwd : String ; Url: String ; Params : TStringLis...
2019-03-18 22:27:06
6635
转载 Delphi中强制IdHTTP使用HTTP1.1(转)
Delphi中强制IdHTTP使用HTTP1.1(转)标签:delphiwindows工具server2011-07-18 07:46952人阅读评论(0)收藏举报分类:Delphi IdHttp控件(29)前两天帮人写程序用IdHTTP控件往一网站发包如下:Delphi代码IdHTTP1.Request.Connection:='Keep-A...
2019-03-18 22:15:45
2193
转载 Window版本
http://blog.csdn.net/wjkaola123/article/details/51721348 GetVersionEx, 该方法在WIN8.1以后无效 参看: https://msdn.microsoft.com/en-us/library/ms724451.aspxmicrosoft提供的版本帮助https://msdn.micros
2017-08-12 13:56:05
484
原创 FMX从TCustomXXX继承控件的子控件,无法同时显示的问题
这个问题,我在盒子发了,也没有满意的结果。(http://bbs.2ccc.com/topic.asp?topicid=535134)模仿FMX的标准TPanel控件(这个控件没有什么实现的代码),自己写了个Panel,可以实现改变颜色及Stroke等属性,就是增加这几个属性: //Appreance property Fill; pr
2017-07-31 01:49:33
786
原创 任意改变FMX的TPanel控件的颜色
FMX的控件的外观以Style为主,但是也有不方便的地方,比如要任意改变TPanel的颜色,只能写代码,摸索了几天,初步实现了unit FMX.JKPanelEx;interfaceuses System.SysUtils, System.Classes, System.Types, System.UITypes, FMX.Types, FMX.Controls, FMX.Ob
2017-07-17 02:00:35
3253
原创 FMX的Style中的Effects的注意问题
delphi中,当我们在IDE的窗体中添加控件时,会自动把相关单元加入uses的,所以一般不用考虑这个问题。但是,如果你在设计Style时,在Style里用了Effects(不是自带控件Style里的effects),程序运行时,会出现找不到你所修改的effect类的致命错误。这是因为uses缺少了FMX.Effects 和 FMX.Filter.Effects 这两个单元,但是delp
2017-07-15 19:42:45
1378
转载 Python图像处理库(2)
1.4 SciPySciPy(http://scipy.org/) 是建立在 NumPy 基础上,用于数值运算的开源工具包。SciPy 提供很多高效的操作,可以实现数值积分、优化、统计、信号处理,以及对我们来说最重要的图像处理功能。接下来,本节会介绍 SciPy 中大量有用的模块。SciPy 是个开源工具包,可以从http://scipy.org/Download 下载。1.4.1
2017-06-09 22:05:07
604
转载 Python图像处理库(1)
第 1 章 基本的图像操作和处理本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Python 工具包,并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。这些工具的使用将贯穿本书的剩余章节。1.1 PIL:Python图像处理类库PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功
2017-06-09 22:03:33
1218
原创 访问受保护的属性
偶尔翻Marco Canto的书,看到这个小技巧,记下来,老是忘记这个小技巧。比如要访问TDBGrid的Col和Row属性,这两个属性是Protected,一般不能直接访问,可以这样加个套:type TFakeDBGrid = class(TDBGrid);然后:TFakeDBGrid(dbgrid1).Col; TFakeDBGrid(dbgrid1).Row;
2016-07-24 17:03:36
683
原创 indy httpserver 接收URL包含中文参数乱码的问题
在测试TIdHttpServer的时候,发现浏览器提交的URL包含中文时会乱码,我用的是XE7 UPDATE1,INDY是10。procedure TForm1.idhtpsrv1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
2016-07-06 23:53:37
4568
1
原创 关于线程的停止、挂起、退出(修改)
原来的实现:http://blog.csdn.net/jankercsdn/article/details/8874469 有许多不完善的地方,使用中进行了一些改动和完善,unit uHardWorkThread;interfaceuses Windows, Messages, Classes, SysUtils, SyncObjs;const WM_QUIT_HARD_T
2016-05-05 16:03:39
2429
转载 SQL Server 中Inner join 和where的效率差异
SQL Server 中Inner join 和where的效率差异总结出来时说:对小数据量(如是有了如下比较结果(均在查询分析器中查询和计时):语句(1)declare @operatorName nvarchar(50)set @operatorName = '%'select distinct item.* from item , cu
2016-03-03 15:44:16
944
转载 解析sql语句中left_join、inner_join中的on与where的区别
解析sql语句中left_join、inner_join中的on与where的区别
2016-03-03 15:41:51
287
原创 百度地图信息提示框的修改
一个小项目,百度地图的定制,电脑用的是触摸屏,支持手写输入,中文输入直接调用系统的虚拟键盘,手写输入是参考网上高手写的一个控件。百度的信息提示框里的搜索框里要输入查询地址,就是去哪里,到哪里那个地址输入框,要解决的问题是怎么把虚拟输入键盘的内容赋值到这个地址输入框,并要判断当前是哪个输入框。一般运用信息提示框是调用这个库“http://api.map.baidu.com/library/S
2015-04-30 12:08:55
9676
原创 raize控件的安装注意
重装电脑了,又要折腾DELPHI的安装了,目前用XE6,几个控件是必装的,DEV,RAIZE,TMS,FASTREPORT等。一般安装顺序是DEV,RAIZE,TMS,FASTREPORT,装完DEV后,启动DELPHI,正常,接着装RAIZE,启动,提示找不到BPL了,重装,填加路径等等,均不行,网上找原因,收藏里找相关记录,没找到,唉,折腾人。。。。。。。。原来安装也有碰到过这个问题,
2015-01-21 09:59:42
4478
DialogTimeout.rar
2021-04-15
TSC_TE344.rar
2020-04-05
DelphiForBaiduPictureTextRecognition.rar
2019-12-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人