<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[技术只是工具，人生才是目标]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ppayun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ppayun]]></copyright><item><title><![CDATA[Delphi XE7中新并行库]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/40024681</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/40024681</guid><author>ppayun</author><pubDate>Sun, 12 Oct 2014 22:36:31 +0800</pubDate><description><![CDATA[Delphi XE7中增加了新的并行库，和.NET的Task和Parellel相似度99%。
具体内容可以看下面的文章：
http://www.delphifeeds.com/go/s/119574
如果你熟悉.NET，这个功能并没有大的新意，可对Delphi程序员来说却非常实用。之前要实现多线程，唯一的办法是使用TThread类，而且过程十分繁琐。新的并行库彻底简化了这个过程。
估计下一]]></description><category></category></item><item><title><![CDATA[赞一下TMS Software 和 AdvStringGrid]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/33317589</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/33317589</guid><author>ppayun</author><pubDate>Sun, 22 Jun 2014 13:13:55 +0800</pubDate><description><![CDATA[很久前给Support发Email问能不能在设计期给AdvStringGrid标题加个数字标识，每次我都是自己改代码加上去。这次升级到新版本，没想到加入了这个功能：

功能虽小但是非常实用，很多的事件和函数接口都是用Index的，有了这个就不用费力去对比了。
真心赞一个！]]></description><category></category></item><item><title><![CDATA[Dephi泛型generic的应用]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/17628333</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/17628333</guid><author>ppayun</author><pubDate>Sat, 28 Dec 2013 11:34:46 +0800</pubDate><description><![CDATA[泛型在C++, C#中已有广泛应用，Delphi自2009版本也引入泛型，典型的应用如TList，TDictionary。如果你熟悉C#，其用法十分类似。
比如以前Delphi没有integer list，用泛型，我们可以这样声明:
var
  list: TList;
begin
  list := TList.Create;
  list.Add(1);
  list.Add(2);
  ]]></description><category></category></item><item><title><![CDATA[李维的博客]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/17374767</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/17374767</guid><author>ppayun</author><pubDate>Tue, 17 Dec 2013 13:10:27 +0800</pubDate><description><![CDATA[意外发现的，相信现在还在用Delphi的人大概知道李维是谁。
http://gordonliwei.wordpress.com/]]></description><category></category></item><item><title><![CDATA[跨平台是个Joke]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/9034665</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/9034665</guid><author>ppayun</author><pubDate>Wed, 05 Jun 2013 22:35:03 +0800</pubDate><description><![CDATA[很多东西号称自己跨平台，可当我们真正需要他们的时候，他们真的做到了吗？
以前的平台很简单，Win32，Unix/Linux，Web，众多软件和框架号称自己跨平台，事实上也部分做到了，比如Java，我记得当年安装Oracle的Windows版就是Java写的巨丑界面，估计在linux下也是同样的代码和界面。
可现在，移动平台蓬勃发展，iOS, Android, Windows Phone, 同样]]></description><category></category></item><item><title><![CDATA[准备开源两个delphi组件，想听听大家的意见]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/8913318</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/8913318</guid><author>ppayun</author><pubDate>Sat, 11 May 2013 02:08:48 +0800</pubDate><description><![CDATA[自己写的组件中最有价值的两个，一个叫TFieldEdit，一个叫TSQLCmd


上面图中的Edit, ListBox, Memo其实都同是一个组件，有统一的数据访问接口。同时TFieldEdit组件还进行数据合法性检查，比如是否required，数据类型，长度等等。支持MaskEdit，支持正则表达式验证。目前支持的数据类型有：
  TDataType = (dtString, dtI]]></description><category></category></item><item><title><![CDATA[Delphi XE4 发布，来自芝加哥开发人员会议现场消息]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/8899688</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/8899688</guid><author>ppayun</author><pubDate>Wed, 08 May 2013 13:21:11 +0800</pubDate><description><![CDATA[Delphi XE4 发布其实已经几个星期了，近来版本发布很频繁，也没有空跟踪技术细节。Embarcadero在芝加哥有两天的开发人员会议，只抽空去了下晚上的免费会议。








新版本没有大的变化，主要是一些改进和完善。但有一点很清楚，Embarcadero的对Delphi的未来定位是跨平台的开发工具。原生Windows平台开发市场已经很成熟，.Net平台是微软一家再搞，]]></description><category></category></item><item><title><![CDATA[Delphi的方向？]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/8806833</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/8806833</guid><author>ppayun</author><pubDate>Tue, 16 Apr 2013 02:18:46 +0800</pubDate><description><![CDATA[自从XE以后，Embarcadeo的着力点似乎放在了Fire Monkey和移动开发上。这看起来似乎不错，可仔细想想，未必是条正确的路。回顾历史，Delphi的边缘化和Borland当年走的方向有很大的关系。其实自.NET以后，微软放弃了原生的Win32平台开发工具，本来对Delphi是个很好机会，少了竞争。可是微软太过强大，谁也看不清未来怎么样。Borland的决定就是脚踩多条船, Linux,]]></description><category></category></item><item><title><![CDATA[An Example of Software Application made by Delphi XE]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/8593994</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/8593994</guid><author>ppayun</author><pubDate>Wed, 20 Feb 2013 12:41:22 +0800</pubDate><description><![CDATA[Http://www.FutureStarSoftware.com


See screenshots in the homepage. It uses some popular components like TMS, Fast Report, JVCL etc.]]></description><category></category></item><item><title><![CDATA[TStringList.CommaText中空格的问题]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7905792</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7905792</guid><author>ppayun</author><pubDate>Fri, 24 Aug 2012 23:40:17 +0800</pubDate><description><![CDATA[用TStringList的CommaText属性解析CSV文件非常的方便，可是如果字符串中有空格，会被像逗号一样转成新行。比如：
Your Company Name,Test
上面的字符应该被解析成两行，但CommaText默认会解析成：
Your
Company
Name
Test



上网查了一下，有人说可以替换空格为特殊字符，解析完再替换回来，还有的说是VCL代码有问题]]></description><category></category></item><item><title><![CDATA[Application.Title在Win7下失效了？]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7898077</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7898077</guid><author>ppayun</author><pubDate>Thu, 23 Aug 2012 05:37:44 +0800</pubDate><description><![CDATA[Delphi XE会默认使用Mainform的Caption作为Application的title，就是你在任务栏上看到的标题。实际上这是为兼容Vista设计的，如果你要显示自定义的标题，需要修改项目文件,


begin
  Application.Initialize;
  Application.MainFormOnTaskbar := False; //otherwise wil]]></description><category></category></item><item><title><![CDATA[Delphi XE3快要发布了]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7898075</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7898075</guid><author>ppayun</author><pubDate>Thu, 23 Aug 2012 05:24:13 +0800</pubDate><description><![CDATA[Check out this link, sorry if you can't see the video from Youtube.



http://www.embarcadero.com/rad-xe3-preview


According to the video, XE3 adds the support for Windows 8 Metro application,]]></description><category></category></item><item><title><![CDATA[使用Prism开发Windows 8 Metro应用（Developing Windows 8 Metro Applications with Embarcadero Prism）]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7614749</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7614749</guid><author>ppayun</author><pubDate>Wed, 30 May 2012 04:15:10 +0800</pubDate><description><![CDATA[Metro是微软为了适应移动设备，全新开发的平台，将会部署到Windows 8和Windows Phone 8。耐人寻味的是Metro平台并不是基于.Net的，而是基于Windows原生API的。想当初.NET的目的就是解决跨系统的兼容问题，使向下兼容不再成为Windows发展的障碍。可谁知时代在变，iOS的出现使得苹果风光无限。微软向来作为操作系统市场的老大，自然不会放弃移动设备这个市场。只是原]]></description><category></category></item><item><title><![CDATA[Delphi中Frame的使用方法（2）]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7578584</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7578584</guid><author>ppayun</author><pubDate>Fri, 18 May 2012 04:38:17 +0800</pubDate><description><![CDATA[Frame在写代码时和一般组件有什么不同呢？比如（1）中的客户信息的frame，如果想重写客户编辑按钮的click事件，会发生什么呢：


procedure TBusOnSiteManager.FrameCustomerButtonEditCustomerClick(Sender: TObject);
begin
  inherited;
  FrameCustomer.Button]]></description><category></category></item><item><title><![CDATA[Delphi中Frame的使用方法（1）]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7570946</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7570946</guid><author>ppayun</author><pubDate>Fri, 18 May 2012 04:37:53 +0800</pubDate><description><![CDATA[Frame是组件面板上的第一个组件，但不是每个人都知道怎么用它，因为它不像Button和Label一样简单明了。实际上，Frame按钮只是打开一个Frame的列表，如果你没有创建任何的Frame，自然什么也不会看到。


那么Frame到底是什么呢？简单来说：
1. Frame是组件容器，类似Panel
2. Frame在使用上类似Components组件，但并没有构造器和解析器，依赖于]]></description><category></category></item><item><title><![CDATA[Delphi XE Refactor重构功能简单说明]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7208250</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7208250</guid><author>ppayun</author><pubDate>Wed, 18 Jan 2012 06:17:28 +0800</pubDate><description><![CDATA[如果要我只选一个升级到XE的原因，我会选重构。对用惯D7的朋友，这确实是一个非常实用的新功能，但如果你用过Visual Studio，就会发现微软早就实现了类似的功能。让人困惑的是，XE的重构子菜单有一长串，很多菜单很难直观地想像出其功能。别担心，这些都是给建模用的(比如把某个类方法转移到另外一个类），你常用到的只有几个，仔细的你会发现其实就是设了快捷键的那几个。


1. Rename:]]></description><category></category></item><item><title><![CDATA[不该偷的懒最好别偷]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7196061</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7196061</guid><author>ppayun</author><pubDate>Thu, 12 Jan 2012 13:57:02 +0800</pubDate><description><![CDATA[最近csdn密码被盗，听说还是明文存放的。我想这应该是当初做设计的人偷懒，后来的人也凑合用，最终造成悲剧。其他网站倒是罢了，作为国内一流的技术交流网站，信用影响还是挺大的。其实以前一直觉得csdn自己的技术不怎么样，论坛改来改去，后来干脆把我几年的帖子都改没了。
这么多年工作中碰到类似的事情还挺多，不该偷懒时偷懒，都是给自己埋地雷和定时炸弹。即便有工期压力，也应该在后来本着重构的精神把它修复，一]]></description><category></category></item><item><title><![CDATA[sql中不存在则插入记录小技巧]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/7196050</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/7196050</guid><author>ppayun</author><pubDate>Thu, 12 Jan 2012 13:40:06 +0800</pubDate><description><![CDATA[以前都分两步，先判断记录数: select count(*) 如果值等于0则表示不存在，然后再插入数据。其实可以用insert ...select一步完成

create procedure p_add_fav_task
    @taskid int,@opid varchar(10)
as    
    insert into task_fav(taskid,opid,opdate]]></description><category></category></item><item><title><![CDATA[如何控制弹出菜单向上弹出(how to control popup menu pop direction)]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/6905418</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/6905418</guid><author>ppayun</author><pubDate>Tue, 25 Oct 2011 21:57:25 +0800</pubDate><description><![CDATA[Popup Menu是windows组件，默认只能控制弹出点，但弹出方向是向上还是向下是系统自动控制的。如果有屏幕下方有足够的空间，默认是向下的。但有的时候需要菜单向上弹出，如图所示：

以前我的做法是计算菜单高度，然后从左上角向下弹出，看似向上弹出的。可是这个菜单高度是个系统相关的东西，没有一个直接的属性在菜单弹出前得到。比如xp和vista的默认高度不一样，大字体的系统和标准字体的高度也不]]></description><category></category></item><item><title><![CDATA[TBalloonHint气泡提示的用法(How to use TBalloonHint)]]></title><link>https://blog.youkuaiyun.com/ppayun/article/details/6766801</link><guid>https://blog.youkuaiyun.com/ppayun/article/details/6766801</guid><author>ppayun</author><pubDate>Sun, 11 Sep 2011 01:08:10 +0800</pubDate><description><![CDATA[XE中提供了一个非常简单实用的气泡提示组件TBalloonHint，但怎么个用法似乎没有详细的说明，下面给大家一段演示代码
//代码段1, 加载系统默认图标

    FImageList := TImageList.Create(AOwner);
    FImageL]]></description><category></category></item></channel></rss>