<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ghs79的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ghs79</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghs79]]></copyright><item><title><![CDATA[Delphi中BPL包的使用，个人经验]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/80004288</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/80004288</guid><author>ghs79</author><pubDate>Thu, 19 Apr 2018 14:36:46 +0800</pubDate><description><![CDATA[    用包可以分模块编写功能，方便开发阶段的组织，同时也便于后期的升级维护，使升级的粒度越来越少（也是用了C#的类库之后的感悟）。下面写几点经验一、不要用Delphi本身的bpl，把delphi自身的包中的单元取出来，合并成一个bpl。二、不要直接用三方控件的安装包，也要自己建一个包，把单元文件中加进去，编译成新包。以上两点可以有效避免包编译时的错误 Never-build package 'a...]]></description><category></category></item><item><title><![CDATA[电子合同的实现  合同套打]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/78996180</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/78996180</guid><author>ghs79</author><pubDate>Sun, 07 Jan 2018 18:03:30 +0800</pubDate><description><![CDATA[合同电子化，以方便和规范对合同的管理，实现合同签订、审批的流程化管理，满足管理信息化的要求。
将合同中变化的部分抽取出来，通过系统（用Delphi开发）录入数据库，借助审批流完成对合同的审批，最后转到打印管理员处打印、盖章。
一、实现方法一：WORD方式
用Word排版，将变化的部分用变量代替；在程序中通过COM操作Word，完成对变量的替换。保存成PDF文档，在客户端打印。
优点：对WO]]></description><category></category></item><item><title><![CDATA[cxGrid多表头实现]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/78950436</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/78950436</guid><author>ghs79</author><pubDate>Tue, 02 Jan 2018 11:56:57 +0800</pubDate><description><![CDATA[cxGrid实现多表头，在网上也有不少文章。但是总感觉不用着不顺手。
结合DBGridEH的多表头实现方法，为了保持两者的兼容（还是个人习惯作祟吧）。主要代码如下：
一、function AddGridColumn(aGrid: TcxGridTableView; aCaption, aField: string; aWidth: integer = 40;
  aSumKind: stri]]></description><category></category></item><item><title><![CDATA[delphi中string,pchar,array of char,pointer,Pbyte,array of byte之间的转化]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/78456135</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/78456135</guid><author>ghs79</author><pubDate>Mon, 06 Nov 2017 11:58:41 +0800</pubDate><description><![CDATA[写程序时，老是被几个数据类型搞的晕头转向，现在总结一下。
基本上都是从网上查的，但又不是在一个地方，所以标记成‘转载’但又不好写从哪里转载的。有抄袭请见谅。
var
s:string;
p:pchar;
a:array[1..20] of char;
那么三者之间的转换如下：
1、字符串到PChar
    p:=PChar(s);
2、PChar到字符串
    s:=p;]]></description><category></category></item><item><title><![CDATA[cxGrid显示'合计']]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/78161950</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/78161950</guid><author>ghs79</author><pubDate>Thu, 05 Oct 2017 17:15:34 +0800</pubDate><description><![CDATA[之前看到有人用事件的方法实现了合计列显示‘合计’的实现方法，但觉得比较复杂，需要多写一个过程。
对于动态创建字段的控件也比较难实现。看了源码，突发奇想，用Format格式字符串实现，特简单。方法一我没有实现成功，才找到方法二的。
方法一：
加一个Summary项,Column设为Grid的第一列,Kind设为skNone  
在该Summary项的OnGetText事件中,输入:  
p]]></description><category></category></item><item><title><![CDATA[DEV控件编辑框录入内容消失的问题]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/77822818</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/77822818</guid><author>ghs79</author><pubDate>Sun, 03 Sep 2017 17:27:01 +0800</pubDate><description><![CDATA[DEV控件确实很漂亮，但是在TcxBarEditItem编辑框录入内容后，必须回车或者TAB键才有效，否则就会消失。
解决办法
1、输入之后按Enter或者TAB键。
2、在onCurChange事件加这句行：cxBarEditItem1.EditValue := cxBarEditItem1.CurEditValue;
3、设置你的 dxBarManager 的 AlwaysSaveTe]]></description><category></category></item><item><title><![CDATA[给DBGridEh的data group增加比值（如毛利）]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/73614139</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/73614139</guid><author>ghs79</author><pubDate>Fri, 23 Jun 2017 10:53:31 +0800</pubDate><description><![CDATA[一、设置数据关系
1、要利用DBGridEh的datagroup功能，必须是关联数据集MemTableEh1；不可是传统的ADOQuery，Clientdataset等。
2、好在MemTableEh1有自动从其它数据集中取数据的功能，设置好对应关系，即可完成数据的转换。我是从ADO取的数据，所以关系如下。
    ADOQuery1.connection := ADOconnnect1;]]></description><category></category></item><item><title><![CDATA[解决reportmachine导出pdf有蓝色底色问题]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/73481018</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/73481018</guid><author>ghs79</author><pubDate>Tue, 20 Jun 2017 11:34:52 +0800</pubDate><description><![CDATA[用reportmachine导出PDF文件，背景是蓝色，试了好多版本的RM，都有这个问题。
解决办法很简单，就是先给底色刷成白色。
在事件OnExportPage中增加一句话。
    lBmp.Width := FPageWidth;
    lBmp.Height := FPageHeight;
    lBmp.PixelFormat := FPixelFormat;
    l]]></description><category></category></item><item><title><![CDATA[解决Windows 7 (或Vista)远程桌面连接XP或2003缓慢的问题]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/70239955</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/70239955</guid><author>ghs79</author><pubDate>Wed, 19 Apr 2017 14:26:48 +0800</pubDate><description><![CDATA[在使用Windows 7之后发现一个问题，远程桌面连接XP或2003 Server时，在某些网络情况下存在连接后刷新缓慢的问题。



1. 以管理员方式启动一个命令行窗口（Win+R 输入cmd按Ctrl+Shift+Enter）

2. 在命令行窗口中输入：netsh interface tcp set global autotuninglevel=disabled

后面那条]]></description><category></category></item><item><title><![CDATA[cxGrid使用点滴]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/70174664</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/70174664</guid><author>ghs79</author><pubDate>Fri, 14 Apr 2017 17:43:01 +0800</pubDate><description><![CDATA[转自：http://blog.youkuaiyun.com/chelen_jak/article/details/7083994
记录此地址，以建立资料库，方便查找。]]></description><category></category></item><item><title><![CDATA[导出Excel的方法及困惑]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/70156040</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/70156040</guid><author>ghs79</author><pubDate>Thu, 13 Apr 2017 11:49:19 +0800</pubDate><description><![CDATA[我们在做项目时，难免要用到导出功能。将数据导出到Excel中做进一步加工，因为软件不可能把用户所有需求及后来的要求都做进去；多数情况下也不需要导出太多数据，如果数据导出太多就要调整需求。
     但无论如何总会有需要导出大数据的时候。比如要把销售明细导出给尼尔森、商务部的信息部等，他们都需要的是大量的明细（要按店分明细，店号+条码）。
   1、用cxGrid
         当数据量小]]></description><category></category></item><item><title><![CDATA[Dephi调用C#编写的WebService的一些问题与解决方法]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/70153488</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/70153488</guid><author>ghs79</author><pubDate>Thu, 13 Apr 2017 08:04:27 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/star_of_light/article/details/2315288

问题1：服务端接收的所有中文都是"?????"(乱码) 
解决：设置HTTPRIO控件的HTTPRIO.HTTPWebNode.UserUTF8InHeader属性为true


问题2：Dephi编写的客户端在windows2003下调用WebService提示"A]]></description><category></category></item><item><title><![CDATA[升级Win10后VMware虚拟机不能联网该怎么办？]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/70089538</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/70089538</guid><author>ghs79</author><pubDate>Tue, 11 Apr 2017 18:36:41 +0800</pubDate><description><![CDATA[高高兴兴的升级了win10正式版，升级的时候没有遇到任何问题，但是升级结束后，发现虚拟机不能联网了。
下面分享解决办法，需要的朋友可以参考下。
1、打开VMware虚拟机主页，点击“编辑——虚拟网络编辑器”。



2、点击左下角的“恢复默认设置”，弹出对话框选确定。此步骤会重置虚拟网卡并安装相应的服务。

如果‘恢复默认设置’是灰色的，不可点；请先点右边的‘更改设置’按钮。
]]></description><category></category></item><item><title><![CDATA[Delphi容器类之---TList、TObjectList、TComponentList、TClassList的使用]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/64475277</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/64475277</guid><author>ghs79</author><pubDate>Tue, 21 Mar 2017 19:09:17 +0800</pubDate><description><![CDATA[转载自：http://blog.youkuaiyun.com/iseekcode/article/details/4922001




从Delphi5开始VCL中增加了新的Contnrs单元，单元中定义了8个新的类，全部都是基于标准的TList类。

TList　　　　　　　　　　　　　　　　　　　　　　　

　　TList类实际上就是一个可以存储指针的容器类，提供了一系列的方法和属性来]]></description><category></category></item><item><title><![CDATA[Delphi 中的 procedure of object]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/64460403</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/64460403</guid><author>ghs79</author><pubDate>Tue, 21 Mar 2017 18:13:20 +0800</pubDate><description><![CDATA[转自：http://www.cnblogs.com/ywangzi/archive/2012/08/28/2659811.html


其实要了解这些东西，适当的学些反汇编，WINDOWS内存管理机制，PE结构，看下李维的VCL架构剖析可以很好理解
type
  TMyEvent = procedure of object;
这是一种数据类型的定义，他定义了一个可以在类中使用的函数类型]]></description><category></category></item><item><title><![CDATA[Dev打包问题]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/63256350</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/63256350</guid><author>ghs79</author><pubDate>Sat, 18 Mar 2017 16:31:48 +0800</pubDate><description><![CDATA[把DEV打包成一个BPL，供程序调用（虽然大了点，有38M，可以用ASPACK压缩到之前的一半）。
下面是制作步骤：
1、先建一个BPL，不包含任何DEV单元。
2、按业务需要做窗体、写代码，当然是用包的形式编译，会提示一堆dev的包的引用（这是关键），按提示的顺序将用到的单元加到Dev包中。
3、然后编译Dev包，再编译业务包。这时业务包会小很多，因为用到的单元都编译进dev包了。 
]]></description><category></category></item><item><title><![CDATA[Delphi写dll文件]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/60145473</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/60145473</guid><author>ghs79</author><pubDate>Fri, 03 Mar 2017 19:33:35 +0800</pubDate><description><![CDATA[从http://blog.youkuaiyun.com/km_afei/article/details/53218977这里看到，确实写的很好，作为资料保存之。
一、开使你的第一个DLL专案
　　1.File->Close all->File->New﹝DLL﹞
代码:


　　//自动产生Code如下
　　library Project2;
　　//这有段废话
　　uses
　　SysU]]></description><category></category></item><item><title><![CDATA[微信支付]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/60142917</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/60142917</guid><author>ghs79</author><pubDate>Fri, 03 Mar 2017 19:18:55 +0800</pubDate><description><![CDATA[在做微信支付开发，完成付款很简单，但要完美运行却要付出不少努力。
一、等待顾客输入支付密码
    1、如果开通了免密支付，又在允许的条件下，支付最简单，调用一次“付款”接口就实现了。
    2、如果不符合免密码支付条件（超过次数或者没有开通），在调用“付款”接口后还需要等待顾客输入密码。
         文档中建议每三秒检查一次付款状态，在实际使用中两秒更合适，会带来更好的使用体验。]]></description><category></category></item><item><title><![CDATA[运行期设置cxDBPivotGrid字段的统计类型]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/56678206</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/56678206</guid><author>ghs79</author><pubDate>Thu, 23 Feb 2017 19:10:15 +0800</pubDate><description><![CDATA[cxDBPivotGrid这么强大的控件，如果不能在运行期指定字段的统计类型，实在是太遗憾了（希望是我没有找到此功能），所以就动手添加。
1、  首先寻找切入口。一种方法是改控件本身，第二种方法是在控件外部实现对控件增加功能。在看源码寻找切入点的过程中，发现还是直接改控件本身较简单。
在单元中cxPivotGridAdvancedCustomization中有双击事件ListBoxDblCli]]></description><category></category></item><item><title><![CDATA[dxNavBar获得右键菜单位置的dxNavBarItem。]]></title><link>https://blog.youkuaiyun.com/ghs79/article/details/56494414</link><guid>https://blog.youkuaiyun.com/ghs79/article/details/56494414</guid><author>ghs79</author><pubDate>Wed, 22 Feb 2017 18:27:17 +0800</pubDate><description><![CDATA[1、应用场景：
        右键点击dxNavBar1，更改所选TdxNavBarItem的图标。
2、实现的方法
      A、用dxNavBar1.HotTrackedLink.Item获取的就是dxNavBarItem1。
      B、或者更通用的写法是TdxNavBar( PopupMenu1.PopupComponent).HotTrackedLink.Item。
 ]]></description><category></category></item></channel></rss>