bcoder

10月 092013
 

  当我们在卸载程序或者更新安装程序时,我们需要先将运行的进程杀掉再进行安装或者卸载程序。NSIS本身并没有提供杀掉进程的脚本,但是有一个插件可以实现此功能,插件的名字叫KillProcDLL,插件下载地址为http://nsis.sourceforge.net/KillProcDLL_plug-in。插件的用法请参考插件页面所提供的内容。下面给出在安装包中的代码:

  • .onInit为安装程序启动时触发的事件,此处杀掉进程是防止更新安装时不能更新主程序的问题
  • .onInstFailed为安装失败时触发的事件,此处启动程序文件是为防止安装失败后本该运行着的程序因为前面被杀掉不能继续运行
  • un.onInit为初始化卸载过程时触发的事件,在此事件的对话框选Yes的时候,即确认要卸载的时候跳转到NoAbort并杀掉进程,选No的时候不做任何操作。

  本文中的方法仅供参考,在使用过程中请自行修改此脚本。

10月 072013
 

  刚才在开发的时候,突然不能改变工程的图标和版本等信息了,把dof文件删除掉也不起作用。后来想起来,原来在前几天把工程默认的引用的资源文件的代码去掉了{$R *.res},打开Project->View Source后,将{$R *.res}加到里面就可以了。如下所示:

Delphi版本:Delphi7

 Posted by on 2013-10-07
9月 172013
 

Delphi中读取Outlook的数据,代码如下:

 Form代码:

相关链接:
 Microsoft Outlook Constants
AppointmentItem Object Members
Items Members (Outlook)
Folders Property
Attachment Object Members
Application Object Members
ContactItem Object Members

PHP易犯错误整理

 分类:PHP 阅读 (1,930)  No Responses »
8月 182013
 

  1. 在子函数中引用全局变量,错误描述:在一个公共文件中定义了一个$dblink对象用于访问数据库,在另外一个文件FileA中require了这个公共文件,同时在FileA中定义了一个子函数GetUserId(),在此函数中需要访问数据库读取数据,访问数据库的时候直接使用了$dblink对象,发现根本取不到相应的数据,访问数据库不成功。

  后经gg搜索,明白了在子函数中是不能直接使用公共变量的,所以必须把$dblink对象传入这个函数中才可以使用,因此解决办法是把GetUserId()改为GetUserId($tmpdblink),再使用时把$dblink对象传入此函数。

  2. PHP中连接字符串时使用“+”操作符,PHP中的“+”操作符可用于数字型数据或者数组的操作,但是不能用于字符串的连接,所以一定要注意,因为很多其他的编程语言是用“+”进行连接字符串的,所以很容易书写错误。PHP中使用“.”来进行字符串连接。

  3. PHP写函数的时候,定义时传入的变量也要使用$以标识为变量。今天写了一个函数,定义时变量直接写的变量名字convertStatus(status),没加&,导致整个页面空白,经检查发现是这个问题,改正后convertStatus($status)问题解决。

  4. 在php文件中,引用了某个php文件(用require xxx.php),但是显示时此文件布局前面总是有一空行,用chrome和IE的开发人员工具查看,会有几个字符,但页面上没显示。经研究,是因为xxx.php文件使用的是Utf8有BOM格式,文件的前几个字节后置上utf8的标志,浏览器则把那几个字节认为了是字符来处理。

  处理方式:使用notepad++打开文件,选择格式-〉转为utf8无BOM格式,保存重新上传后问题解决。

  此问题也可能会在html或者其他网页格式文件中出现。

  5. PHP中使用多个连接的问题,使用相同配置的多个连接时,总会使用最后一个连接的DB

CSS易犯错误收集

 分类:CSS 阅读 (1,931)  No Responses »
8月 112013
 

1. 写子风格的时候,子风格和父风格之间无空格,如:#contactonline.co_row_comments{height: 120px;}这样是错误的,应该在#contactonline后加一空格

 Posted by on 2013-08-11

AlertDialog使用总结

 分类:Android, Java 阅读 (3,480)  No Responses »
5月 112013
 

  AlertDialog直接继承自Dialog类,可以用于显示确认提示框或者列表选择框,还可以用于显示有自定义布局的提示框,Android中内置的ProgressDialog、DatePickerDialog和TimePickerDialog都是继承自于该对象。

AlertDialog的创建

  AlertDialog的实例化函数是声明的protected的,所以不能直接通过new AlertDialog(context)来创建,而是要通过它的一个子类Builder来创建,AlertDialog的很多属性也是通过这个builder对象来实现的。

AlertDialog的区域

  AlertDialog从上到下共分3个区域,即标题区、内容区和控制按钮区。

  • 标题区用于显示提示框的标题,给用户简单提示此提示框是什么用途的。我们可以通过builder的setTitle方法来设置标题的内容。
  • 内容区可以放置详细的操作提示、信息提示或者选择列表,也可以使用自定义的Layout显示更为丰富的内容。
  • 按钮区用于放置操作按钮,最多可放置三个按钮,一个确定按钮,一个否定按钮,一个中性按钮,就如Windows程序中常见的“是、否和取消。我们可以通过setPositiveButton、setNegativeButton和setNeutralButton来设置三个按钮的显示内容和点击时的响应函数

在AlertDialog中显示一个选择列表

  AlertDialog.Builder提供了几种方法可以用于在内容区域显示一个可选择的列表框,这几种方法分别是setAdapter、setItems、setSingleChoiceItems、setMultiChoiceItems。

  • setItems(int itemsId, final OnClickListener listener)可以传入一个CharSequence数据或者一个数组资源R.array,但是此方法显示的列表的样式没办法改变,只能使用AlertDialog默认的样式,而且只能显示一列,数据只能是字符串类型。如果给后面的listener传入null值则点击列表的项目后窗口不会自动关闭。
  • setAdapter可以传入一个ListAdapter,开发者可以通过这个ListAdapter对象设计复杂的列表布局,以增加程序的可视化效果。
  • setSingleChoiceItems可以打开一个右侧带单选按钮的提示框,可接受CharSequence数组、资源数组、ListAdapter、Cursor对象,传入CharSequence数组、资源数组时右侧会显示一个单选按钮,传入ListAdapter时右侧无单选按钮,需要自己来实现单选按钮,Cursor未测试。当选择某项时,提示框不会自己关闭,而是要通过返回键或者下面的按钮来关闭提示框。
  • setMultiChoiceItems可以打开一个右侧带复选按钮的提示框,可接受CharSequence数组、资源数组、Cursor对象,不知道为什么没有支持ListAdapter。

AlertDialog中显示自定义部局

  当我们需要一个复杂的提示框的时候,我们可用自定义的Layout来填充到AlertDialog窗口中。这里主要用到的是Builder的setView方法。我们可以先用getLayoutInflater()或者getActivity().getLayoutInflater()来获取一个LayoutInflater对象,然后用View dlgV=inflater.inflate(R.layout.custom_dialog, null);得到一个View对象,然后再用setView方法将自定义部局填充到AlertDialog中。

  虽然我们可以在自定义部局中设计自己的标题和按钮,但我们仍然还可以使用setTitle和setPositiveButton等方法来使用AlertDialog中的标题栏和按钮。

  如果我们想将一个Activity转换成一个Dialog,并不需要再创建一个AlertDialog然后重新实现这些代码,只需要在AndroidManifest.xml中将Activity的Theme设置为Dialog样式的主题即可,如:

AlertDialog内容区域的优先级

  AlertDialog中详细提示信息和选择列表是不能同时显示的,几个方法的优先显示顺序为setMessage、setAdapter、setItems

Activity如何转换成Dialog

  当我们想把一个Activity转换成Dialog时,如果再建立一个AlertDialog或者DialogFragment来实现的话,很多代码都要进行修改,比如DialogFragment需要增加getActivity来实现对Activity的一些方法进行访问,也不支持设计时设置的android:onclick属性,需要在java代码中用setOnClickListener来执行单击事件,这样做起来相当的麻烦。

  那么比较简单的方法就是通过在AndroidManifest.xml中给该Activity设置一个Dialog使用的Theme来进行支持,这样做的缺点是如果使用的不是android的主题则需要自己写一个符合程序的主题。

 如何设置AlertDialog的样式

  我们需要先定义一个样式,在res/values/style.xml中定义一个MyAlertDialog的样式(此方法暂时不可用,设置效果总不是想要的效果,再研究后再发布过来)

  在代码中,创建builder的时候传入这个样式名称,如下:

点击此处下载AlertDialogTest代码

5月 082013
 

  如何使用:在Eclipse中,打开项目下的res\values目录,在values上右键,新建->Other->Android XML File,Resource Type那选择Values,输入文件的名字,如:mycolors,点“确定”,把下面表格中的文字复制到新建的文件中。在设计界面静态调用时为@color/blue,在java代码中为getResources().getColor(R.color.hotpink)

  因为页面复制过去的xml包含中文特殊字符,大家可以点击这里下载此xml文件 mycolors.xml

<?xml version=”1.0″ encoding=”utf-8″ ?>  
<resources>  
<color name=”white”>#ffffff</color><!–白色 –>  
<color name=”ivory”>#fffff0</color><!–象牙色 –>  
<color name=”lightyellow”>#ffffe0</color><!–亮黄色 –>  
<color name=”yellow”>#ffff00</color><!–黄色 –>  
<color name=”snow”>#fffafa</color><!–雪白色 –>  
<color name=”floralwhite”>#fffaf0</color><!–花白色 –>  
<color name=”lemonchiffon”>#fffacd</color><!–柠檬绸色 –>  
<color name=”cornsilk”>#fff8dc</color><!–米绸色 –>  
<color name=”seaShell”>#fff5ee</color><!–海贝色 –>  
<color name=”lavenderblush”>#fff0f5</color><!–淡紫红 –>  
<color name=”papayawhip”>#ffefd5</color><!–番木色 –>  
<color name=”blanchedalmond”>#ffebcd</color><!–白杏色 –>  
<color name=”mistyrose”>#ffe4e1</color><!–浅玫瑰色 –>  
<color name=”bisque”>#ffe4c4</color><!–桔黄色 –>  
<color name=”moccasin”>#ffe4b5</color><!–鹿皮色 –>  
<color name=”navajowhite”>#ffdead</color><!–纳瓦白 –>  
<color name=”peachpuff”>#ffdab9</color><!–桃色 –>  
<color name=”gold”>#ffd700</color><!–金色 –>  
<color name=”pink”>#ffc0cb</color><!–粉红色 –>  
<color name=”lightpink”>#ffb6c1</color><!–亮粉红色 –>  
<color name=”orange”>#ffa500</color><!–橙色 –>  
<color name=”lightsalmon”>#ffa07a</color><!–亮肉色 –>  
<color name=”darkorange”>#ff8c00</color><!–暗桔黄色 –>  
<color name=”coral”>#ff7f50</color><!–珊瑚色 –>  
<color name=”hotpink”>#ff69b4</color><!–热粉红色 –>  
<color name=”tomato”>#ff6347</color><!–西红柿色 –>  
<color name=”orangered”>#ff4500</color><!–红橙色 –>  
<color name=”deeppink”>#ff1493</color><!–深粉红色 –>  
<color name=”fuchsia”>#ff00ff</color><!–紫红色 –>  
<color name=”magenta”>#ff00ff</color><!–红紫色 –>  
<color name=”red”>#ff0000</color><!–红色 –>  
<color name=”oldlace”>#fdf5e6</color><!–老花色 –>  
<color name=”lightgoldenrodyellow”>#fafad2</color><!–亮金黄色 –>  
<color name=”linen”>#faf0e6</color><!–亚麻色 –>  
<color name=”antiquewhite”>#faebd7</color><!–古董白 –>  
<color name=”salmon”>#fa8072</color><!–鲜肉色 –>  
<color name=”ghostwhite”>#f8f8ff</color><!–幽灵白 –>  
<color name=”mintcream”>#f5fffa</color><!–薄荷色 –>  
<color name=”whitesmoke”>#f5f5f5</color><!–烟白色 –>  
<color name=”beige”>#f5f5dc</color><!–米色 –>  
<color name=”wheat”>#f5deb3</color><!–浅黄色 –>  
<color name=”sandybrown”>#f4a460</color><!–沙褐色 –>  
<color name=”azure”>#f0ffff</color><!–天蓝色 –>  
<color name=”honeydew”>#f0fff0</color><!–蜜色 –>  
<color name=”aliceblue”>#f0f8ff</color><!–艾利斯兰 –>  
<color name=”khaki”>#f0e68c</color><!–黄褐色 –>  
<color name=”lightcoral”>#f08080</color><!–亮珊瑚色 –>  
<color name=”palegoldenrod”>#eee8aa</color><!–苍麒麟色 –>  
<color name=”violet”>#ee82ee</color><!–紫罗兰色 –>  
<color name=”darksalmon”>#e9967a</color><!–暗肉色 –>  
<color name=”lavender”>#e6e6fa</color><!–淡紫色 –>  
<color name=”lightcyan”>#e0ffff</color><!–亮青色 –>  
<color name=”burlywood”>#deb887</color><!–实木色 –>  
<color name=”plum”>#dda0dd</color><!–洋李色 –>  
<color name=”gainsboro”>#dcdcdc</color><!–淡灰色 –>  
<color name=”crimson”>#dc143c</color><!–暗深红色 –>  
<color name=”palevioletred”>#db7093</color><!–苍紫罗兰色 –>  
<color name=”goldenrod”>#daa520</color><!–金麒麟色 –>  
<color name=”orchid”>#da70d6</color><!–淡紫色 –>  
<color name=”thistle”>#d8bfd8</color><!–蓟色 –>  
<color name=”lightgray”>#d3d3d3</color><!–亮灰色 –>  
<color name=”lightgrey”>#d3d3d3</color><!–亮灰色 –>  
<color name=”tan”>#d2b48c</color><!–茶色 –>  
<color name=”chocolate”>#d2691e</color><!–巧可力色 –>  
<color name=”peru”>#cd853f</color><!–秘鲁色 –>  
<color name=”indianred”>#cd5c5c</color><!–印第安红 –>  
<color name=”mediumvioletred”>#c71585</color><!–中紫罗兰色 –>  
<color name=”silver”>#c0c0c0</color><!–银色 –>  
<color name=”darkkhaki”>#bdb76b</color><!–暗黄褐色 –>  
<color name=”rosybrown”>#bc8f8f</color><!–褐玫瑰红 –>  
<color name=”mediumorchid”>#ba55d3</color><!–中粉紫色 –>  
<color name=”darkgoldenrod”>#b8860b</color><!–暗金黄色 –>  
<color name=”firebrick”>#b22222</color><!–火砖色 –>  
<color name=”powderblue”>#b0e0e6</color><!–粉蓝色 –>  
<color name=”lightsteelblue”>#b0c4de</color><!–亮钢兰色 –>  
<color name=”paleturquoise”>#afeeee</color><!–苍宝石绿 –>  
<color name=”greenyellow”>#adff2f</color><!–黄绿色 –>  
<color name=”lightblue”>#add8e6</color><!–亮蓝色 –>  
<color name=”darkgray”>#a9a9a9</color><!–暗灰色 –>  
<color name=”darkgrey”>#a9a9a9</color><!–暗灰色 –>  
<color name=”brown”>#a52a2a</color><!–褐色 –>  
<color name=”sienna”>#a0522d</color><!–赭色 –>  
<color name=”darkorchid”>#9932cc</color><!–暗紫色 –>  
<color name=”palegreen”>#98fb98</color><!–苍绿色 –>  
<color name=”darkviolet”>#9400d3</color><!–暗紫罗兰色 –>  
<color name=”mediumpurple”>#9370db</color><!–中紫色 –>  
<color name=”lightgreen”>#90ee90</color><!–亮绿色 –>  
<color name=”darkseagreen”>#8fbc8f</color><!–暗海兰色 –>  
<color name=”saddlebrown”>#8b4513</color><!–重褐色 –>  
<color name=”darkmagenta”>#8b008b</color><!–暗洋红 –>  
<color name=”darkred”>#8b0000</color><!–暗红色 –>  
<color name=”blueviolet”>#8a2be2</color><!–紫罗兰蓝色 –>  
<color name=”lightskyblue”>#87cefa</color><!–亮天蓝色 –>  
<color name=”skyblue”>#87ceeb</color><!–天蓝色 –>  
<color name=”gray”>#808080</color><!–灰色 –>  
<color name=”grey”>#808080</color><!–灰色 –>  
<color name=”olive”>#808000</color><!–橄榄色 –>  
<color name=”purple”>#800080</color><!–紫色 –>  
<color name=”maroon”>#800000</color><!–粟色 –>  
<color name=”aquamarine”>#7fffd4</color><!–碧绿色 –>  
<color name=”chartreuse”>#7fff00</color><!–黄绿色 –>  
<color name=”lawngreen”>#7cfc00</color><!–草绿色 –>  
<color name=”mediumslateblue”>#7b68ee</color><!–中暗蓝色 –>  
<color name=”lightslategray”>#778899</color><!–亮蓝灰 –>  
<color name=”lightslategrey”>#778899</color><!–亮蓝灰 –>  
<color name=”slategray”>#708090</color><!–灰石色 –>  
<color name=”slategrey”>#708090</color><!–灰石色 –>  
<color name=”olivedrab”>#6b8e23</color><!–深绿褐色 –>  
<color name=”slateblue”>#6a5acd</color><!–石蓝色 –>  
<color name=”dimgray”>#696969</color><!–暗灰色 –>  
<color name=”dimgrey”>#696969</color><!–暗灰色 –>  
<color name=”mediumaquamarine”>#66cdaa</color><!–中绿色 –>  
<color name=”cornflowerblue”>#6495ed</color><!–菊兰色 –>  
<color name=”cadetblue”>#5f9ea0</color><!–军兰色 –>  
<color name=”darkolivegreen”>#556b2f</color><!–暗橄榄绿 –>  
<color name=”indigo”>#4b0082</color><!–靛青色 –>  
<color name=”mediumturquoise”>#48d1cc</color><!–中绿宝石 –>  
<color name=”darkslateblue”>#483d8b</color><!–暗灰蓝色 –>  
<color name=”steelblue”>#4682b4</color><!–钢兰色 –>  
<color name=”royalblue”>#4169e1</color><!–皇家蓝 –>  
<color name=”turquoise”>#40e0d0</color><!–青绿色 –>  
<color name=”mediumseagreen”>#3cb371</color><!–中海蓝 –>  
<color name=”limegreen”>#32cd32</color><!–橙绿色 –>  
<color name=”darkslategray”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”darkslategrey”>#2f4f4f</color><!–暗瓦灰色 –>  
<color name=”seagreen”>#2e8b57</color><!–海绿色 –>  
<color name=”forestgreen”>#228b22</color><!–森林绿 –>  
<color name=”lightseagreen”>#20b2aa</color><!–亮海蓝色 –>  
<color name=”dodgerblue”>#1e90ff</color><!–闪兰色 –>  
<color name=”midnightblue”>#191970</color><!–中灰兰色 –>  
<color name=”aqua”>#00ffff</color><!–浅绿色 –>  
<color name=”cyan”>#00ffff</color><!–青色 –>  
<color name=”springgreen”>#00ff7f</color><!–春绿色 –>  
<color name=”lime”>#00ff00</color><!–酸橙色 –>  
<color name=”mediumspringgreen”>#00fa9a</color><!–中春绿色 –>  
<color name=”darkturquoise”>#00ced1</color><!–暗宝石绿 –>  
<color name=”deepskyblue”>#00bfff</color><!–深天蓝色 –>  
<color name=”darkcyan”>#008b8b</color><!–暗青色 –>  
<color name=”teal”>#008080</color><!–水鸭色 –>  
<color name=”green”>#008000</color><!–绿色 –>  
<color name=”darkgreen”>#006400</color><!–暗绿色 –>  
<color name=”blue”>#0000ff</color><!–蓝色 –>  
<color name=”mediumblue”>#0000cd</color><!–中兰色 –>  
<color name=”darkblue”>#00008b</color><!–暗蓝色 –>  
<color name=”navy”>#000080</color><!–海军色 –>  
<color name=”black”>#000000</color><!–黑色 –>  
</resources>  
4月 172013
 

 

其他注意事项:

1、如何设置自己的Dialogfragment没有标题栏?
可以通过两种方法来设置 ,一种是使用dialogfragment的setStyle函数,另外就是使用getDialog().getWindow().requestFeature方法,具体代码如下

使用getDialog的方法

2. The method show(FragmentManager, String) in the type DialogFragment is not applicable for the arguments (FragmentManager, String)

此问题常是由于你所自定义的DialogFragment子类继承自android.app.dialogfragment,而非继承自android.support.v4.app.DialogFragment,解决办法就是将你的自定义的DialogFragment子类继承自android.support.v4.app.DialogFragment。如下所示:

 

4月 122013
 

1. 今天check out项目的时候,svn突然报了一个如下错误:

在网上查了一上解决办法为:

在地址和项目名称之间加上svn,本例中为如下:http://127.0.0.1/svn/financing,再进行check out就没问题了

SVN客户端:TortoiseSVN 1.7.11, Build 23600 – 64 Bit, Subversion 1.7.8

SVN服务端:VisualSVN Server Manager Version: 2.5.9

3月 252013
 

如果你只有一个有线路由器,手机无法通过wifi上网,或者你在公司没有无线网络,那么你可以通过以下方法创建一个自己的无线网络来使用了
前提:电脑有无线网卡,Windows 7系统
方法:
1. 以管理员身份运行command窗口
2. 输入以下命令netsh wlan set hostednetwork mode=allow ssid=bcoderwifi key=123456,其中
mode=allow allow表示为允许
ssid=bcoderwifi bcoderwifi为你要创建的无线网络的名称
key=12345678 12345678为访问无线网络时需要用到的密码,此密码最低为8位,否则创建失败


执行上述命令后,在你的网络连接里会多了一个无线网络连接
3. 打开你的网络连接,在“本地连接”上右键,选择属性菜单,在共享标签页中,选择共享此连接,在下面的列表框中选择刚创建的那个无线连接,点击确定关闭窗口


4. 以管理员身份打开command窗口,输入netsh wlan start hostednetwork,这时你的无线网络就建立成功了,用你的手机就可以搜索到此无线连接了
不再使用此无线网络时可以通过以下命令来关闭无线网络netsh wlan stop hostednetwork