2008年6月10日

代码生成工具Database2Sharp功能功能完善及更新

摘要: 好久没有更新代码生成工具了,因为很多功能基本上能够应付日常的开发工作了,如C#代码生成、数据库文档导出、Sql脚本生成,但用户在使用过程中也发现了一些需要完善的地方,因此继续完善,以求更加实用方便。 现更新了下面几个问题,希望给大家做软件开发的时候有一个启示。 阅读全文

posted @ 2008-06-10 13:39 伍华聪 阅读(3428) 评论(15) 推荐(0) 编辑

2008年6月5日

C#进行Visio二次开发之管理下拉列表

摘要: 每个Shape有很多属性,这里我是指自定义属性,每个属性都对应一种类型,就像我们在SqlServer创建一个字段的时候,需要指定其类型一样。 本文着重介绍下两种类型:visPropTypeListFix和visPropTypeListVar,分别为固定列表和可变列表,其实这两种类型对应的.NET编程控件模型就是ComboBox,这个控件有个属性DropDownStyle,可以指定为DropDownList和DropDown这两种类型,本质上visPropTypeListFix对应DropDownList类型(只能选择列表的值),visPropTypeListVar对应DropDown类型(除了可选列表值,还可以输入新的值)。 Visio的这两种列表的值,都是通过对应的ShapeSheet行中的Format的值来展示的,如有一个列表的Format的值为“专用;公用”,那么就有两项可以选择,如下图所示。 那我们在Visio的二次开发程序中如何管理这些下拉列表的呢? 对于固定列表,我们在添加或者修改自定义属性的时候,就给它固定的值那就可以了;对于可变列表,我们 阅读全文

posted @ 2008-06-05 22:07 伍华聪 阅读(6889) 评论(4) 推荐(0) 编辑

2008年6月4日

如何利用系统函数操作文件夹及文件

摘要: 平时使用Path类不多,常用Combine来串联两个路径,其他的很少用,偶然发现Path提供了很多方便实用的函数。我比较喜欢那个GetTempPath 函数,一句代码就可以返回临时目录的路径了,很方便。大家可能也注意到,Environment.GetEnvironmentVariable(string variable)也提供了如何获取特别路径的函数,另外Environment.GetFolderPath(Environment.SpecialFolder folder)的函数也提供了很多实用功能,返回相应的目录。 最后我顺便提供一个递归删除文件夹和文件的操作函数,方便大家。 阅读全文

posted @ 2008-06-04 20:31 伍华聪 阅读(4367) 评论(6) 推荐(0) 编辑

2008年6月1日

C#进行Visio二次开发之设备状态跟踪

摘要: 明察秋毫,很多情况下是非常需要的,例如,如果我们完善了一套系统,能够将四川赈灾的款项的筹集、采购、分发等步骤都能明察秋毫,相信整个世界会安静很多。 同样,对于一个使用Visio进行二次开发的程序来说,背后你需要知道用户增加了那些设备,删除了那些设备,修改了那些设备,这样你才能对整个系统的数据进行有效的控制,否则“赈灾”款项就可能丢失了,呵呵。 那我们应该如何做才能有效的处理这些事件,达到对设备的变更明察秋毫呢? 我前面介绍了一篇文章《C#进行Visio开发的事件处理 》,其中也介绍了各种事件侦听,我们要对设备进行跟踪的话,基本上只需要侦听这几个事件,并对之进行处理即可。 阅读全文

posted @ 2008-06-01 21:43 伍华聪 阅读(5759) 评论(1) 推荐(1) 编辑

C#进行Visio二次开发之Shape的Data1、Data2、Data3的用处

摘要: 我们知道,Visio的Shape对象有有3个比较特别的属性,分别是Data1、Data2、Data3,平常我们很少用到它,因为我们如果需要属性的话,可能会通过ShapeSheet的Customed Properties中定义我们所需要的信息,需要各种属性的值都可以拿到,那么Data1、Data2、Data3对我们来说,就用处不大,但有的情况下,我们使用它进行一些操作却是非常方便的。 首先我们介绍下,这几个属性是什么东西,Data1、Data2、Data3是Shape的内置属性,不需要额外定义,而且它据说可以放置64K的字符串(没有试过这么大的),一般来说我们是足够放置内容的了。 言归正题,我们什么情况下会使用到这几个属性呢,大家想想,我们在绘图的时候,是不是总有个图框来列出图纸那些设备有几个的一个设备清单呢,或者是一个比例尺说明什么的,这些场合就可以 用上它们了。 因为这些线条,可能是我们随机画上去的,里面的一些设备的说明以及相关信息一般都是根据图纸变化而变化的,因此每次保存的时候,可能要重新绘制一下,但绘制的时候,为了有别于其他设备图元,我们使用这几个属性来记 阅读全文

posted @ 2008-06-01 10:45 伍华聪 阅读(7705) 评论(1) 推荐(0) 编辑

2008年5月30日

C#进行Visio二次开发之自定义右键菜单

摘要: Visio Drawing Control中集成自定义菜单是很多项目必须的,很多朋友也问过我如何实现这些菜单,下面介绍下Visio自定义菜单的实现。 Visio二次开发中,为Visio Drawing Control添加自定义菜单有两种方式:一种是使用捕捉Visio的MouseUpEvent事件,弹出ContextMenu即可;另一种是通过在PageSheet中增加Action来实现,也就是使用RUNADDONWARGS函数来实现。 先介绍第一种方法,首先注册MouseUpEvent的事件,然后,你需要实现onDrawingControlMouseUp函数的内容,在里面你需要限制下右键的一些事件,然后通过X,Y坐标获取选定的Shape对象,弹出你的ContextMenu对象即可。 第二种方式是通过添加Action方式,使用RUNADDONWARGS函数来实现。操作也很简单,先获取指定的Page对象,清除Action事件(因为你每次加入的话,Action始终保留你的添加的内容,防止出现多个相同的右键菜单,我每次删除旧的内容,然后再添加我需要的东西),然后添加所需要 阅读全文

posted @ 2008-05-30 13:48 伍华聪 阅读(9877) 评论(9) 推荐(0) 编辑

2008年5月28日

C#进行Visio二次开发之鸡毛蒜皮(一)

摘要: 本文主要分享一些在Visio二次开发中碰到的各种小问题及其解决方法: 1. 为图元设置颜色 在一些分析中,如电气线路分析中,需要根据不同的状态改变图元的颜色,那么如何改变指定图元的设备颜色呢? 2. 获取图元设备的连接关系 每个设备Shape都有一个Connects和FromConnects集合,该集合是Connect对象集合,每个Connect有ToSheet和FromSheet属性,分别是指向一个Shape对象,我们如果要获取设备的关联关系,就是需要判断这些Connect的ToSheet和FromSheet属性。 3. 获取图元的属性集合 我们知道,每个图元Shape甚至Page对象都有很多自定义属性,你可以通过在Visio的开发模式中查看ShapeSheet查看到。而所有这些属性中,每行又代表一个属性的各种定义信息,如Label是什么,Prompt(提示)是什么,Value(值)是什么,Type(类型)是什么,这就有点类似于我们在数据库定义一个字段,需要指定字段的名称,类型等等,那如果我们需要把这些信息保存下来,我们该如何获取呢? 阅读全文

posted @ 2008-05-28 22:28 伍华聪 阅读(9851) 评论(9) 推荐(2) 编辑

C#进行Visio二次开发之判断图纸是否有设备

摘要: 判断Visio图纸上是否图纸有设备(存在图元), 有两种方法,一种是通过Window对象的SelectAll方法,在判断选择的集合是否不为空即可,另外一种方法是判断页面对象Page的Shapes对象集合是否大于0即可. 两种方式具体如何实现, 并存在那些具体的差别? 阅读全文

posted @ 2008-05-28 20:38 伍华聪 阅读(4256) 评论(0) 推荐(0) 编辑

C#进行Visio二次开发之图纸打印

摘要: 几种打印模式: Visio的二次开发中,我们往往需要打印文档,这也是正常不过的需求,Visio的Document对象提供了下面几种打印模式: Visio的Picture属性及转换: Visio文档打印的时候,有时候需要预览下内容,那如何实现呢,其实也很简单,因为你打印的Page对象有一个Picture的属性,可以用来显示的(Window.Selection也有一个这么对象,当然就可以用来预览选择的内容了)。不过到这里别高兴太早,因为Picture对象是IPictureDisp类型的,你需要转换为PicutureBox对象所能识别的Image类型,不过这个东西不是那么容易转换的,呵呵。费了九牛二虎之力,终于查到了转换的方法,下面介绍下吧,以免大家走弯路。 打印页边距设置问题: 再说另外一个问题,不知道大家有没有注意到,页面设置对话框中,页边距中的值默认是10,你确定之后,值就变小了,再打开确定,值变得更小了,这是因为页边距值的转换出了问题,要正常工作,需要做一些转换的工作。下面贴出代码,一目了然。 阅读全文

posted @ 2008-05-28 20:38 伍华聪 阅读(5263) 评论(1) 推荐(0) 编辑

2008年5月16日

香港生肖采集及规则分析软件

摘要:    闲来无聊, 研究下生肖六合彩的规则,特作了该软件,希望能够给感兴趣的人提供一个快捷的分析工具,有兴趣可以下来玩玩。    该软件其最强大的功能是可以获取网络上几千个网站的信息,并进行准确智能统计,找出最为符合条件的数据,有这么庞大的数据作为支撑分析,你对结果有更多的信心。软件能够在开奖日搜索出最为精准的六肖,准确率达到95%以上,有效保护您的投资,稳定和高质量的数据是该软件的最大特点。    准确的资料,稳定的回报,持续的投入即可让你有了和别人不一样的投资机会。    软件支持URL链接的导入,并可以根据现有的URL进行关联查找,自动把新的符合条件的URL地址存入数据库,作为自动扩充网站的功能支持。  因身边一些朋友反映,特别列出了诈骗网站黑名单,希望大家警惕这些人的欺骗行为,切记。 看看软件的界面。 阅读全文

posted @ 2008-05-16 09:07 伍华聪 阅读(19443) 评论(11) 推荐(0) 编辑

2008年2月28日

Sqlserver常用函数例子说明

摘要: 在操作SQLServer的时候, 很多时候记不住具体的函数如何使用, 查找联机帮助还是嫌麻烦, 且有很多时候例子也不好懂, 下面对每个常用的函数用用例子说明,一目了然,你自己在数据库中执行一下,结果就知道什么回事了 阅读全文

posted @ 2008-02-28 13:24 伍华聪 阅读(3270) 评论(1) 推荐(0) 编辑

2008年2月22日

C#进行Visio开发的事件处理

摘要: Visio的二次开发过程中,必定要处理很多Visio事件,事件基本上分为三类:Document事件、Applicaiton事件、AxDrawingControl事件。Document事件是每个文档创建或者打开都需要重新绑定一次的,但是Application事件不变,即不需要重新绑定,AxDrawingControl是ActiveX控件的事件响应。 在C#进行Visio的开发中,通过继承接口IVisEventProc,可是创建事件的侦听处理类.... 事件有很多类,有Application级别的,有Document级别的,有Page级别的,有Shape级别的,有Windows级别的,有Cell级别的..............,下面截取一部份事件代码看看 阅读全文

posted @ 2008-02-22 23:25 伍华聪 阅读(6133) 评论(6) 推荐(0) 编辑

C#进行Visio二次开发的常见问题处理

摘要: 1. Visio属性值的转换问题 做过Visio开发的人知道,Visio中的属性值也就是Cell.Formula的值通常包含两对双引号的(如""XX""), 如果要将属性的值转换正常的字符串值,那么需要去除双引号。 2、获取指定形状指定Cell的值。除了方法1,还有下面一种方法可以获取Cell的Value值。 4、判断形状某个属性是否存在。 5、取当前操作属性所在的行。 6、判断Visio图纸上是否有形状图元存在。 7、其他的一些功能设置 8、Name和NameU属性的差别 Visio中很多属性都有一个同名+U的属性名称,一般情况下最好使用这个名称如NameU,因此这个是一个唯一的名字,有时候你会发现Name相同,但他们就是不一样,因为他们的NameU名称不一样的。 9、遇到不明白的操作或者属性,多用Visio文档的宏记录功能,然后对VBA代码进行分析和调试。 阅读全文

posted @ 2008-02-22 22:57 伍华聪 阅读(6990) 评论(10) 推荐(0) 编辑

2008年1月21日

使用NVelocity0.5实现服务器端页面自动生成

摘要: 地球人都知道,静态HTML页面通常会比服务器端页面如asp、aspx页面要来的快,即使这些页面没有服务器端代码。 另外要命的是,这些页面在主流的搜索引擎能中最为吃香,和那些aspx还带几个尾巴参数的页面比起来,真是天上地下。 如果那天老板发现这个问题,叫你把辛辛苦苦实现的服务器端程序向静态HTML页面靠拢,你会做何感想? 有一种URL重写的方案可以实现对搜索引擎的欺骗,除了这种方法,自动生成静态HTML页面应该是最彻底的方法了。 言归正传,开始介绍如何实现吧 阅读全文

posted @ 2008-01-21 23:09 伍华聪 阅读(4962) 评论(14) 推荐(0) 编辑

老歌新唱--使用VB6开发的ActiveX实现.NET程序的混淆加密

摘要: 由于存在一下几种特点: 1、.NET程序反编译容易,而使用一些混淆工具会导致有些程序不能运行 2、VB6开发ActiveX控件,那叫一个快,VB代码也不是很容易被反编译。 3、结合两者的特点,如果在.NET中使用了封装一些关键代码的ActiveX控件,那么程序的安全性是否好一点呢? 对于这种做法,请大家拍砖讨论,本人提供一个如何实现这种做法的思路。 阅读全文

posted @ 2008-01-21 22:25 伍华聪 阅读(3595) 评论(8) 推荐(1) 编辑

2007年12月9日

代码生成工具随笔(3)---占领最后一块黄金宝地

摘要: 目前代码生成工具多如繁星,绝大多数的代码生成工具都是基于数据库进行实体类、数据访问类、部分业务类等的代码生成,较少会用来生成易用、重用的界面代码,因为这块的逻辑很难控制,每个人的需求都不一样,而且把整个界面和业务层结合一起更是困难。如果界面代码如果不进行封装,代码会多的很难控制。因此很多即使做到界面代码的生成,也只能做了部分关键界面代码和后台控件赋值的代码,我的代码生成工具也做过相关的工作,由于界面部分总体上不是很理想,一直来都是鸡肋,弃之可惜。 言归正传,“占领最后一块黄金宝地”的意思就是在界面代码生成这个领域有了很大的突破,将常用的查询、分页、修改、查看和增加等功能用3个控件(查询控件、分页控件、编辑控件)进行了封装,利用我的代码生成工具Database2Sharp通过与数据库字段的信息结合,完整的生成一个网站的界面工程框架,你需要做就是做一些锦上添花的工作就OK,工程越复杂效率提高就更快。 阅读全文

posted @ 2007-12-09 22:59 伍华聪 阅读(5213) 评论(37) 推荐(0) 编辑

2007年12月3日

.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)

摘要: .NET导出报表一般是采用导出Excel报表的方式输出内容。而这又分为两种方式:使用Excel模板方式和使用网页输出Excel格式两种。首先介绍简单的一种,网页输出Excel内容,这种不需要引用Excel的程序集。 /**//// /// 报表导出辅助类 /// public class ExportToExcel { 字段信息#region 字段... 阅读全文

posted @ 2007-12-03 20:47 伍华聪 阅读(5273) 评论(4) 推荐(0) 编辑

.NET开发不可不知、不可不用的辅助类(二)

摘要: 序列化及反序列化的辅助类SerializeUtil 序列化及反序列化的辅助类SerializeUtil测试代码 数据库字段NULL值转换辅助类SmartDataReader 数据库字段NULL值转换辅助类SmartDataReader测试代码 字符串操作辅助类 字符串操作辅助类测试代码 Web界面层操作的辅助类 Web界面层操作的辅助类测试代码 阅读全文

posted @ 2007-12-03 13:39 伍华聪 阅读(4981) 评论(12) 推荐(0) 编辑

.NET开发不可不知、不可不用的辅助类(一)

摘要: 1. 用于获取或设置Web.config/*.exe.config中节点数据的辅助类AppConfig 辅助类AppConfig测试代码: 2. 反射操作辅助类ReflectionUtil 反射操作辅助类ReflectionUtil测试代码: 3. 注册表访问辅助类RegistryHelper 注册表访问辅助类RegistryHelper测试代码: 4. 压缩/解压缩辅助类ZipUtil 压缩/解压缩辅助类ZipUtil测试代码: 阅读全文

posted @ 2007-12-03 12:50 伍华聪 阅读(6568) 评论(15) 推荐(0) 编辑

2007年11月25日

VS.NET中自定义安装程序制作经验总结

摘要: 内容介绍: 自定义安装程序的一些注意事项: CustomActionData属性介绍及其格式 如何获取自定义界面和系统参数: 在自定义操作中添加CustomActionData 属性数据. 在代码中引用参数 如何在安装过程中添加自定义操作: 运行Dos命令, 在创建虚拟目录或者安装数据库脚本等操作需要调用Dos命令 使用活动目录DirectoryEntry创建虚拟目录: 覆盖Installer的函数: 在自定义安装中执行数据库脚本: Log目录创建授权操作: 阅读全文

posted @ 2007-11-25 18:34 伍华聪 阅读(4705) 评论(5) 推荐(1) 编辑

导航