
编程技巧
文章平均质量分 59
lyhoo163
自由职业,编程码农。
展开
-
锐浪报表 Grid++Report 解决换页行错位
1、设置好全页显示整页的数据,让全页能正常显全文本行的字符。即页顶、页底能在二行之间切换。3、锁定首页MemoBox的位置。原创 2024-01-30 11:07:45 · 981 阅读 · 0 评论 -
锐浪报表 Grid++Report 明细表格标题重复打印
锐浪报表 Grid++Report,打印表格时,对于明细表格的标题,打开换页时,需要重复打印明细表格的标题,或取消打印明细表格的标题。这里,要使用 RepeatStyle 属性,其值是枚举类型,见下表。2、在GridppReport的FetchRecord事件中处理。实现让客户,通过选择,打印出所需明细表格的标题的目的。1、RepeatStyle 属性。后续页:(无明细表格的标题)(1)做一个按键选择。原创 2024-01-20 11:07:19 · 929 阅读 · 0 评论 -
锐浪报表 Grid++Report 表头重复打印
一、问题提出锐浪报表 Grid++Report,打印表格时,有时需要重复打印表头,有时需要取消重复打印表头,实现连续打印数据明细。见下表:首页:后续页:(无表头)按需要,后续页重复打印表头:二、解决办法1、打印对话框,增加一个“重复打印表头”的选择项2、代码。原创 2024-01-19 10:20:07 · 923 阅读 · 0 评论 -
Delphi 编译关闭时 Stack overflow 错误
本人工程文件,编译EXE文件,程序关闭时出现 Stack overflow 错误。虽然,生成的EXE文件,执行时,无任何问题。二、错误是在退出软件时,出现这样的错误。因此在关闭窗口和退出程序的事件中, 一步一步地查找。Stack overflow 错误,提示代码中是有错误 的,为此,作了一番搜索。三、子窗口中退出窗口中找到原因后,主程序MainFrm中的还存在原因。一、本人使用国外的第三方控制,从此入手,末找到有因。1、这一问题,与常规的代码不同(常规是正常运行的);查找的步骤不一一细说了,原创 2023-12-17 12:51:38 · 681 阅读 · 0 评论 -
流水号的获取
另一种,是由字段"流水”,由1至Count循环,选取空位,无空位Count+1。这种方式,需要对流水号出现的重复,或无效流水,进行删除处理(人工处理,或软件代码判别)。第二种方式,软件代码比较复杂,略了,需要读取数据,再进行处理。一种是由字段"流水”,读取最大号+1,这种方式,容易造成跳号。本人比较喜欢第一种方式,无需维护,不就是一种编号吗!如:03-01-2023-W-0001。区编号-机构类型-年份-性别-流水。原创 2023-12-10 10:32:19 · 628 阅读 · 0 评论 -
加载类型库/dll 时出错
换个思路,从DataSnap运用的Dll入手,结果发现是midas.dll,出现问题,末加载(注册)此Dll。软件使用DataSnap数据库ERP管理系统,用户更换操作系统,出现“加载类型库/dll 时出错”信息。通常思路,从大环境查找,怀疑操作系统中的C++运行库出现错误,搜索一翻末果。4、最后点击开始菜单--运行--输入regsvr32 midas.dll命令,即可。3、对于64位系统,将复制到C:Windows\SysWOW64目录。通过Dll修复大师、全能修复Dll等等,不管用。原创 2023-12-08 12:19:13 · 2224 阅读 · 0 评论 -
ClientDateSet:Cannot perform this operation on a closed dataset
打开数据集时,每次打开换个ClientDataSet,是可以解决问题,但是,这太复杂了,也违背编辑的原则。3、逐个控件,进行查找,方法是屏蔽全部控件,逐个开放,检查是否出现错误。找到在 TsDBEdit控件时,使用OnChange,生成其它字段的数据,引起ClientDataSet不能进入Open状态。原因中使用控件AlphaControls,界面很好,但是重画窗口界面,比较复杂,要求不使用或少使用OnChange事件,引起不必要的麻烦。2、在引起DBCombobox,有OnChange的控件,找原因。原创 2023-11-19 12:18:16 · 1770 阅读 · 0 评论 -
Project Accounting.exe raised exception class AccessViolation with message ‘Access violation at add
sDBComboBox1.Items值中,有一行空行,删除该空行后,问题解决。通过,这一解决方案,我们在找问题,不能一味地在源代码中找,同时在控件的参数中,也可能出错引起访问的错误。原本是在源代码中,查找出错处。原创 2023-11-18 11:15:17 · 788 阅读 · 0 评论 -
AlphaControls控件TsDBCombobox出错:访问违规
经过一翻查找,竟然是TsDBCombobox的选择字符sDBComboBox1.Items.Text中,不能有空行。日常使用AlphaControls控件TsDBCombobox,作为数据变化数据的控件。为了方便选择,上述字符串加,加了一行空行。结果,造成相关的出错。删空行后,消除出错。原创 2023-11-18 10:56:32 · 831 阅读 · 0 评论 -
锐浪报表 Grid++Report 打印转圈自动退出
3、检查Windows系统,发现是打印机无默认打印机。设置默认打印机,解决问题。1、更新最新锐浪报表 Grid++Report Dll,末能解决问题。客户说进入锐浪报表 Grid++Report,打印界面时,见下图。一是代码中,检查系统是否有默认打印机;让windows始终有默认打印机。二是代码中,自动加入默认打印机。出现转圈并退出系统。原创 2023-09-23 09:09:33 · 1361 阅读 · 0 评论 -
ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(二)
执行Append后,编译器末能将ClientDataSet的state值,变更为dsInsert。通过强制执行Edit,让ClientDataSet的state值,变更为dsEdit(效果与dsInsert一致)。原创 2023-09-14 15:30:30 · 1371 阅读 · 0 评论 -
ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(一)
1、执行“显示数据后”,再执行Append,出错,说明ClientDataSet处于编辑状态;3、加入 ClientDataSet1.ReadOnly:=False无效;2、加入 ClientDataSet1.Active:=True无效;2、执行二次Append或Insert,可以不出错 ,但会加入二行数据行。这个代码一执行,彻底让ClientDataSet处于编辑状态,解决问题。问题是Append,并及时加入一行,录入字符出错。1、在执行显示代码最后,加入以下。(1)使用第三方控件。原创 2023-09-14 13:40:28 · 1829 阅读 · 0 评论 -
DataSnap概述和体系结构
DataSnap通过TCP/IP或HTTP安全传输JSON (JavaScript对象表示法)数据内容,为客户端提供了一种与服务器安全通信的方法。DataSnap技术的另一个好处是,它提供了异步通知所有客户机应用程序有关服务器所做更改的可能性,以便客户机可以采取适当的操作。DataSnap自动生成客户端与服务器通信所需的接口,其中包含服务器方法的原型。如果客户端或服务器上运行了防火墙,DataSnap提供了通过隧道路由数据传输的选项,覆盖防火墙并允许客户端和服务器之间进行通信。DataSnap架构。原创 2023-09-05 16:49:55 · 1641 阅读 · 0 评论 -
软件模块管理权限的设置
在应用软件中,通常将软件的功能分为若干个子程序,通过主程序调用。那么,通过众多客户来 说明,如果设置各人的权限呢?这样,对于每个窗口,用户就是二个权限:一是进入浏览权限,二是编辑打印的权限。这里,要建立数据表,将模块、菜单、窗口和指定的二个权限,进行关联。通过(用户)登录名和密码,读取相关模块的权限,进入模块(子程序)。(2)编辑的权限,可对数据进行修改、增加、删除操作;这样,对不是很严格的管理权限的单位,不设置,就有权。3、 在模块程序中,设置“本模块”的管理权限。2、设置模块、菜单、窗口的数据关系。原创 2023-07-27 15:09:58 · 2456 阅读 · 0 评论 -
锐浪报表 Grid++Report 导出文件默认文件名
2、Grid++Report默认目录为,软件安装的磁盘根目录,上面设置默认为“D:\医嘱.xls”锐浪报表Grid++Report 打印数据表时,有时要导出EXCEL或PDF文件。在Title=’‘ 单引号中录入“标题”即可。原创 2023-07-27 08:40:41 · 1808 阅读 · 0 评论 -
Access violation at address. Read of address FFFFFFC
代码写好 ,执行中,出现"Access violation at address 00402452 in module 'MedicalRec.exe'.Read of address FFFFFFC"。3、当ClientDataSet数据集循环中,某字段读写磁盘中Txt文件后,就不能对ClientDataSet重新赋值。如下:数据集循环时,不直接读写磁盘,需是调用另一个对单条数据进行读写的操作。2、当ClientDataSet数据集,单独一行数据段读写磁盘中Txt文件后,正常。真正的原理,不得而知。原创 2023-07-25 14:49:41 · 2083 阅读 · 0 评论 -
锐浪报表 Grid++Report 打印数据表图像
锐浪报表 Grid++Report 打印数据表时,特别是需要在Cell中打印图像时。2、数据表中,图像字段,仅保存图像的完整文件名(指定目录)。3、打印表时,打印该行时,读取图像数据,并打印。1、图像以文件形式。4、打印图像(数据行)原创 2023-07-07 14:37:09 · 2407 阅读 · 0 评论 -
TClientDataSet 模拟 EXCEL表
日常处理数据时,经常需要,从EXCEL表格中,批量导入数据,通过 XLSReadWriteII编程,会很快导入。但是,客户提供的EXCEL表的字段,数据格式,字段的排序,有很大的区别。因此,能否做一个能够批量导入,很有必要。同时,又需要将EXCEL表能够,直接导入并显示在DBGridEh中。三、创建ClientDataSet的字段。约定Sheet=0,即第1个表。二、分析EXCEL表相关参数。原创 2023-06-11 12:13:53 · 2367 阅读 · 0 评论 -
AlphaControls控件TsFontComboBox的使用
使用AlphaControls控件,尽可能地使用该组件,提供的控件。我们日常使用的TFontComboBox控件与TsFontComboBox控件,使用上,区别很大。TsFontComboBox中的字体,读取操作系统中的字体列表,构成一个Strings列表,我们在使用时,要通过列举的方式设置或获取字体名称。sFontComboBox1.Items[sFontComboBox1.ItemIndex] 获取指定的字体名。Items.count 系统中,字体的数量。Items 系统中字体列表。原创 2023-04-28 18:38:32 · 1654 阅读 · 0 评论 -
XlsReadWriteII 版本声明操作要点
二、注意写低版本时,有的代码不起作用,会造成空操作。原创 2023-04-14 15:54:57 · 1994 阅读 · 0 评论 -
FormCreate、FormShow、FormActivate事件的区别与运用
(3)当窗口再显示,但不作为当前窗口,form1.onActivate不执行,当空口被激活(作为当前窗口)时form1.onActivate执行。当指定某窗口作为当前窗口(被激活),也就是窗口之间切换时,初指定当前窗口(被激活)的窗口的onActivate执行。FormShow、FormActivate事件的运用,前二个非常熟悉。(2)当窗口隐藏后,再显示时from1.onShow执行。FormShow、FormActivate事件的区别与运用。1、当窗口中创建并显示时(三者的运行顺序)原创 2023-03-29 13:18:25 · 3281 阅读 · 0 评论 -
XLSReadWriteII5 Color 颜色的调用和使用
/ 将字符串转换成TColor值,如将'clBtnFace'转换成 $02FF8800。TColor的RGB的色彩排列值是RGB(红绿蓝),而Cardnal色彩的排列值是BGR(蓝绿红)。自然界,颜色是由红、绿、蓝三色组成,人眼的可见的颜色,可以通过红、绿、蓝三色按照不同的比例合成产生。RGB中建立三个原色的亮度值:0-255,通过三个原色的(0-255)建立该色彩。使用三组16进制的字符(对应0-255值),组建色彩。1、使用二进制字符串,显示TColor值。2、通过RGB值,显示TColor值。原创 2023-02-19 10:37:32 · 2423 阅读 · 0 评论 -
XlsReadWriteII EXCEL Cell Font 单元字体设置
3、Txc12FontStyle不支持下划线,只能设置Cell的 FontUnderline参数。1、定义全局变量Font1:TFont,带入Cell的Font参数。XlsReadWriteII EXCEL Cell Font 单元字体设置。2、定义XLSReadWriteII5临时风格变量。2、XLSReadWriteII5 默认。二、如何带入Font。3、写EXCEL方法。原创 2023-02-18 10:54:01 · 2730 阅读 · 0 评论 -
SQL 语句 指定money类型字段 排除零的运用
SQL:='select * from 财务_收费汇总 Where (收费小计=''0.0001'')';SQL:='select * from 财务_收费汇总 Where (收费小计=''0.0001'')';SQL 语句 指定money类型字段 排除零的运用。原创 2023-02-09 16:04:09 · 2598 阅读 · 0 评论 -
RichView RichViewEdit 编辑窗口的调用使用
加入AutoCreatForm中,加入srvActionResource单元,让RichEdit控件能在启动时,数据初妈化。2、程序中加入相关的控件例如 SRichViewEdit1 : TDBSRichViewEdit等。4、样式的默认文件 RichView_Path+ 'Default.rvst'(3)以及其它单元(RichView_unit调用的单元)RichView RichViewEdit的使用。此窗口,可以重复使用,调用即可。(2)单元中加入,自编辑的扩展方法。(2)默认样式值保存。原创 2023-02-08 12:54:17 · 2867 阅读 · 1 评论 -
屏蔽360阻止远程执行变更注册表自启动数据的办法
但是,由于运行的服务器,有时是安装在普通的电脑中(兼作服务器),计算机的运行中,不自觉地就会安装360。这样,在运行服务器时,通过运行执行一些底层的变更时,360就会干扰阻止。实践证明,通过客户端,调用运程服务器,执行自身更新,或修改系统的底层数据,如修改操作系统的注册表等等。省得上门维护,通过运程维护,极大地方便软件的维护。我在服务器中,加入更新升级自身(exe)文件,并变更操作系统自启动数据的代码。主动安装360后,你可以直接将360进行相关的设置。1、服务器安装的目录,加入信息区(目录加入)原创 2023-01-28 16:25:37 · 2953 阅读 · 0 评论 -
XlsReadWriteII 升级后需要EXCEL版本的声明
而xlsReadWriteII默认2007版,虽然,软件要写的是97-2003版(文件名后缀.xls),但是,创建的是一个2007版内核,2003版文件名的EXCEL。1、函数生成的EXCEL,默认97-2003版本,文件名使用.xls。代码中,没有加入版本申明代码,这样,造成文件名与内核不一致,手机不能正常打开。事因:近日几位客户反映,软件生成的EXCEL表,手机不能打开。可以是强制打开后,可以EXCEL软件,也能强制打开了。但往往忽约EXCEL版本的说明,造成客户的使用上的困忽。原创 2023-01-25 10:52:25 · 2186 阅读 · 0 评论 -
XlsReadWriteII EXCEL Cell 单元数据读写
从编程运用的角度,在软件的运用上,绝大多数软件都支持Excel97和Excel2007这二个版本。 XlsReadWriteII(1-4)仅支持Excel97,从XlsReadWriteII5开始支持Excel2007。 EXCEL文件是以二进制文件,内部数据是以类似XML。文件结构上是类似树的结构,根部是簿XLS,分支下属诺干个表Sheets。每个表,双由列、行阵列结构的单元Cell组成。各个表之间可以,调用数据。 从编程的角度,就是对EXCEL进行读、写操作。原创 2023-01-25 09:58:51 · 3510 阅读 · 0 评论 -
XLSReadWriteII 写了一个DBGrdiEh创建EXCEL表的函数
自己通过XLSReadWriteII,写了一个由DBGridEh数据集,通过参数调用,创建EXCEL表格的函数,通过调用的参数设置,可以较为方便地,创建指定数据集的常用EXCEL表格。 原函数默认表标题一条,自动行高,列依据字段(数据)长自动列宽。 近期又升级了XLSReadWriteII,为该函数添加了一功能: 新函数支持DBGridEh多行字段标题。(做到EXCEL与DBGridEh字段标题一致) 可以设置三条表标题,尾部后缀一条备注行。通过数组传递,设原创 2023-01-21 18:53:26 · 3781 阅读 · 0 评论 -
TDemo 备注文本的二种存贮方式
TDemo 备注纯文本的二种存贮方式,数据库使用过程中,对于TDeme控件,对应数据库的分为nvarchar(n)类型字段。通常使用二种格式的文本:1)单纯文本2)带换行符的文本原创 2023-01-13 09:30:37 · 2315 阅读 · 0 评论 -
锐浪报表 Grid++Report 导出其它格式文件
Grid++Report控件设计的报表,不仅可以打印,还可以以8种格式,导出报表文件。 在Grid++Report的打印浏览中,有指定导出文件的对话框: 但是,软件的设计中,往往需要设计出,直接导出指定文件,或在打印报表的同时也导出指定格式的文件。相关的参数和方法的调用,详见以下说明:原创 2022-12-19 12:04:14 · 5401 阅读 · 0 评论 -
AlphaControls 读取存贮数据VCL OnChange事件的处理
AlphaControls控件,窗口时显示,对于VCL控件的处理,需要通过调用皮肤模板重新画出来。因此,在窗口的显示过程中,对VCL控件的数据装载(变更),会引起窗口的不段地跟随变化(画图),造成不必要的屏幕闪动,或引导死屏现象。 特别是使用读取存贮数据VCL,读取存贮数据数据时,有一定的时间,如果不考虑因素,就会造成窗口的缓慢与出错。原创 2022-12-10 10:10:29 · 2664 阅读 · 0 评论 -
XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号
XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号 我们在通过XLSReadWriteII读取EXCEL表中的数据时,往往通过EXCEL中二个列,对应数据库中的指定字段,通过索引“字段”找到数据“字段”,实现读取相关数据。 报税系统,导出的个人所得税数据,就是存入在一个EXCEL表格中:EXCEL列编号B存放“姓名”,列编号AL存放"个人所得税"。 通过编程,我们很容易地,读取“个人所得税”的数据,加入到下一个月“工资报表”中的抵扣项的“个人所得税”中。 但是原创 2022-12-05 17:47:33 · 2791 阅读 · 0 评论 -
Frame窗口作为sPageControl子窗口显示的改进
在C/S编辑中,我们会在主窗口,放一个TPageControl控件,让其它窗口,作为TPageControl的创建的TTabSheet,显示相应子窗口。在TTabSheet中的子窗口,From和Frame均可作为子窗口显示。 但是,在实际使用中,为适应客户使用不同显示器(电脑屏幕分辨率),我们的窗口的设计时,就要通过窗口中的TPanel控件的Resize(Sender)事件,动态调整控件的位置,实现软件适用不同屏幕分辨率。 编译好的软件,在显示子窗口时,由于控件调整位置,会出原创 2022-12-02 18:40:52 · 2398 阅读 · 0 评论 -
XLSReadWriteII5 Cell Comments 单元注释
XLSReadWriteII5、6可以为Cell加入注释,通过TXLSComment读写Cell指定注释。原创 2022-10-12 12:05:06 · 2870 阅读 · 0 评论 -
XLSReadWriteII控件的升级
本人一直使用XLSReadWriteII4,编制了相关的函数,可以通过XLSReadWriteII4,生成EXCEL报表。但是,近期网站通过EXCEL上传数据,需要EXCEL2007版本的文件(后缀 xslx)。XLSReadWriteII4只能生成EXCEL97版。升级到XLSReadWriteII6,原代码大致修改如下:原创 2022-10-07 12:59:08 · 3161 阅读 · 0 评论 -
AlphaControls 主窗口TsPageContr 子窗口sFramer 实现主从窗口调用高分辨率子窗口
AlphaControls 主窗口TsPageContr 子窗口sFramer 实现主从窗口调用高分辨率子窗口AlphaControls TsFrameBar 控件 实现C/S窗口内嵌高分辨率窗口介绍如何实现高分辨率窗口。下面介绍另一种AlphaControls 主窗口TsPageContr 子窗口sFramer 实现调用高分辨率窗口的实现,原创 2022-10-03 10:08:37 · 2763 阅读 · 0 评论 -
Windows 窗体显示的“模式方式”与“非模式方式”
在Windows中,显示存在作为窗体和对话框要么是有模式的,要么是无模式的。 “模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。当我们要显示重要消息的对话框应始终是有模式的。例如 MessageBox 是一个可供您使用的有模式的窗体。 “无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。 用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。原创 2022-10-02 17:11:06 · 4709 阅读 · 0 评论 -
AlphaControls控件TsScrollBox的关联TListBox用法
AlphaControls控件TsScrollBox的关联TListBox用法 AlphaControls 控件 TsScrollBox,与Delphi Additional页上TsScrollBox相似,提供水平、垂直滚行条的群组框部件,可用作在窗体中提供一个可以多方向滚行的工具。如果您只想显示较大幅面的一个部分,并允许您的用户对其进行滚行操作,ScrollBar将是理想的选择。您可以先在全幅面的滚动框中进行全面设计,然后适当地缩小外框,两个方向的滚行条将自动显示。它的Positi原创 2022-10-02 09:03:29 · 2632 阅读 · 0 评论 -
AlphaControls 控件 TsDateEdit 代替 TDateTimePicker
日常使用TDateTimePicker,在使用AlphaControls 控件后,需要使用TsDateEdit 代替 TDateTimePicker。处理的办法,就是使用一个TsEdit,放在TsDateEdit上方,挡住“-dd”:效果不错。在使用中,发现一个处置办法,可以让TsDateEdit,达到显示“yyy-MM”格式的效果。使用TsDateEdit,它没有Format属性,造成不能显示“yyy-MM”格式的缺点。二者外形和功能,基本一致。原创 2022-09-29 18:27:14 · 2556 阅读 · 0 评论