<?xml version="1.0" encoding="UTF-8"?>
<rss>
<channel>
<title>『郭兴春的个人网志』-http://blog.m916.com</title>
<link>http://blog.m916.com</link>
<Description>『郭兴春的个人网志』-http://blog.m916.com</Description>
<language>zh-cn</language>
<copyright>Copyright 2003-2004 Loveyuki</copyright>
<webMaster>webmaster@loveyuki.com</webMaster>
<image>
	<title>『郭兴春的个人网志』-http://blog.m916.com</title> 
	<url>http://blog.m916.com/images/logos.gif</url> 
	<link>http://blog.m916.com</link> 
	<description>『郭兴春的个人网志』-http://blog.m916.com</description> 
</image>
<item><link>http://blog.m916.com/blogview.asp?logID=389</link><title><![CDATA[VB中MsFlexGrid控件的使用方法]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-9-24 20:26:11</pubDate><guid>http://blog.m916.com/blogview.asp?logID=389</guid><description><![CDATA[<p id=fp>VB中MsFlexGrid控件的使用细则(收集)<br><br>&gt;&gt;&nbsp;将文本赋值给MsFlexGrid的单元格<br>MsFlexGrid.TextMatrix(3,1)=”Hello”<br><br>&gt;&gt;&nbsp;在MsFlexGrid控件单元格中插入背景图形<br>Set&nbsp;MsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)<br><br>&gt;&gt;选中某个单元<br>MsFlexGrid.Row=1<br>MsFlexGrid.Col=1<br><br>&gt;&gt;用粗体格式化当前选中单元<br>MsFlexGrid.CellFontBold=True<br><br>&gt;&gt;&nbsp;添加新的一行<br>使用AddItem方法,用Tab字符分开不同单元格的内容<br>dim&nbsp;row&nbsp;as&nbsp;string<br>row=”AAA”&amp;vbtab&amp;”bbb”<br>MsFlexFrid1.addItem&nbsp;row<br><br><br>&gt;&gt;怎样来实现MSFlexGrid控件单数行背景为白色，双数的行背景为蓝色?<br>Dim&nbsp;i&nbsp;As&nbsp;Integer<br>With&nbsp;MSFlexGrid1<br>.AllowBigSelection&nbsp;=&nbsp;True&nbsp;’&nbsp;设置网格样式<br>.FillStyle&nbsp;=&nbsp;flexFillRepeat<br>For&nbsp;i&nbsp;=&nbsp;0&nbsp;To&nbsp;.Rows&nbsp;-&nbsp;1<br>.Row&nbsp;=&nbsp;i:&nbsp;.Col&nbsp;=&nbsp;.FixedCols<br>.ColSel&nbsp;=&nbsp;.Cols()&nbsp;-&nbsp;.FixedCols&nbsp;-&nbsp;1<br>If&nbsp;i&nbsp;Mod&nbsp;2&nbsp;=&nbsp;0&nbsp;Then<br>.CellBackColor&nbsp;=&nbsp;&amp;HC0C0C0&nbsp;’&nbsp;浅灰<br>Else<br>.CellBackColor&nbsp;=&nbsp;vbBlue&nbsp;’&nbsp;兰色<br>End&nbsp;If<br>Next&nbsp;i<br>End&nbsp;With<br><br>&gt;&gt;&nbsp;MSFlexGrid控件如何移到最后一行<br>MSFlexGrid1.TopRow&nbsp;=&nbsp;MSFlexGrid1.Rows&nbsp;–&nbsp;1<br><br>&gt;&gt;如何判断msflexgrid有无滚动条<br>Declare&nbsp;Function&nbsp;GetScrollRange&nbsp;Lib&nbsp;&quot;user32&quot;&nbsp;(ByVal&nbsp;hWnd&nbsp;As&nbsp;Long,&nbsp;ByVal&nbsp;nBar&nbsp;As&nbsp;Long,&nbsp;lpMinPos&nbsp;As<br><br>Long,&nbsp;lpMaxPos&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Long<br>Public&nbsp;Const&nbsp;SB_HORZ&nbsp;=&nbsp;&amp;H0<br>Public&nbsp;Const&nbsp;SB_VERT&nbsp;=&nbsp;&amp;H1<br><br>Public&nbsp;Function&nbsp;VsScroll(MshGrid&nbsp;As&nbsp;MSHFlexGrid)&nbsp;As&nbsp;Boolean&nbsp;’判断水平滚动条的可见性<br>Dim&nbsp;i&nbsp;As&nbsp;Long<br>VsScroll&nbsp;=&nbsp;False<br>i&nbsp;=&nbsp;GetScrollRange(MshGrid.hWnd,&nbsp;SB_HORZ,&nbsp;lpMinPos,&nbsp;lpMaxPos)<br>If&nbsp;lpMaxPos&nbsp;&lt;&gt;&nbsp;lpMinPos&nbsp;Then&nbsp;VsScroll&nbsp;=&nbsp;True<br>End&nbsp;Function<br><br>Public&nbsp;Function&nbsp;HeScroll(MshGrid&nbsp;As&nbsp;MSHFlexGrid)&nbsp;As&nbsp;Boolean&nbsp;’判断垂直滚动条的可见性<br>Dim&nbsp;i&nbsp;As&nbsp;Long<br>HeScroll&nbsp;=&nbsp;False<br>i&nbsp;=&nbsp;GetScrollRange(MshGrid.hWnd,&nbsp;SB_VERT,&nbsp;lpMinPos,&nbsp;lpMaxPos)<br>If&nbsp;lpMaxPos&nbsp;&lt;&gt;&nbsp;lpMinPos&nbsp;Then&nbsp;HeScroll&nbsp;=&nbsp;True<br>End&nbsp;Function<br><br>&gt;&gt;程序运行时，想动态增加MSFlexgrid的列数<br>在第2列后插入一列：<br>Private&nbsp;Sub&nbsp;Form_Load()<br>Me.MSHFlexGrid1.Cols&nbsp;=&nbsp;5<br>MSHFlexGrid1.Rows&nbsp;=&nbsp;2<br>For&nbsp;i&nbsp;=&nbsp;0&nbsp;To&nbsp;Me.MSHFlexGrid1.Cols&nbsp;-&nbsp;1<br>Me.MSHFlexGrid1.TextMatrix(0,&nbsp;i)&nbsp;=&nbsp;i<br>Me.MSHFlexGrid1.TextMatrix(1,&nbsp;i)&nbsp;=&nbsp;i<br>Next<br>End&nbsp;Sub<br><br>Private&nbsp;Sub&nbsp;Command1_Click()<br>Me.MSHFlexGrid1.Cols&nbsp;=&nbsp;Me.MSHFlexGrid1.Cols&nbsp;+&nbsp;1<br>Me.MSHFlexGrid1.ColPosition(5)&nbsp;=&nbsp;3<br>End&nbsp;Sub<br><br>&gt;&gt;&nbsp;请教MSFlexGrid中的对齐功能的使用<br>设置MSFlexGrid1.ColAlignment(index)=n<br><br><br>&gt;&gt;得到MSFlexGrid控件中当前选中的一行<br>msflexgrid1.rowsel就是当前选中行<br><br>&gt;&gt;&nbsp;如何通过代码调节列宽度<br>msflexgrid1.colwidth(i)=4000<br>将MsFlexGrid控件的内容输出到文本<br><br>2004-03-19&nbsp;14:25:18<br>&#39;OutDataToText<br>&#39;将MsFlexGrid控件中显示的内容输出到文本文件<br>Public&nbsp;Sub&nbsp;OutDataToText(Flex&nbsp;As&nbsp;MSFlexGrid)<br>Dim&nbsp;s&nbsp;As&nbsp;String<br>Dim&nbsp;i&nbsp;As&nbsp;Integer<br>Dim&nbsp;j&nbsp;As&nbsp;Integer<br>Dim&nbsp;k&nbsp;As&nbsp;Integer<br>Dim&nbsp;strTemp&nbsp;As&nbsp;String<br>On&nbsp;Error&nbsp;GoTo&nbsp;Ert<br>Me.MousePointer&nbsp;=&nbsp;11<br>On&nbsp;Error&nbsp;Resume&nbsp;Next<br>DoEvents<br>Dim&nbsp;FileNum&nbsp;As&nbsp;Integer<br>FileNum&nbsp;=&nbsp;FreeFile<br>Open&nbsp;&quot;d:aa.txt&quot;&nbsp;For&nbsp;Output&nbsp;As&nbsp;#FileNum<br>With&nbsp;Flex<br>k&nbsp;=&nbsp;.Rows<br>For&nbsp;i&nbsp;=&nbsp;0&nbsp;To&nbsp;k&nbsp;-&nbsp;1<br>strTemp&nbsp;=&nbsp;&quot;&quot;<br>For&nbsp;j&nbsp;=&nbsp;0&nbsp;To&nbsp;.Cols&nbsp;-&nbsp;1<br>DoEvents<br>strTemp&nbsp;=&nbsp;strTemp&nbsp;&amp;&nbsp;.TextMatrix(i,&nbsp;j)&nbsp;&amp;&nbsp;&quot;,&quot;<br>Next&nbsp;j<br>Print&nbsp;#FileNum,&nbsp;Left(strTemp,&nbsp;Len(strTemp)&nbsp;-&nbsp;1)<br>Next&nbsp;i<br>End&nbsp;With<br>Close&nbsp;#FileNum<br>Me.MousePointer&nbsp;=&nbsp;0<br>MsgBox&nbsp;&quot;导出成功&quot;<br>Ert:<br>MsgBox&nbsp;Err.Description<br>Me.MousePointer&nbsp;=&nbsp;0<br>End&nbsp;Sub<br>增加&nbsp;MsFlexGrid&nbsp;的编辑功能<br><br>（作者：佚名&nbsp;加载日期:&nbsp;2002/3/31）<br><br><br>概述<br>MsFlexGrid&nbsp;控件没有提供文本编辑的功能，下面的例子演示了如何利用一个TextBox&nbsp;实现编辑当前网格的功能<br><br>。<br><br>在按下一个键后，&nbsp;就把TextBox&nbsp;移动到当前的位置，&nbsp;并激活。&nbsp;在键入回车或移动到其他网格时，<br><br>就把TextBox&nbsp;中的内容放到网格中。<br><br>实现步骤<br>1&nbsp;打开&nbsp;VB5，&nbsp;开启一个新的工程。<br><br>2&nbsp;在菜单“工程”&nbsp;中选择&nbsp;“部件”，&nbsp;在列表中选中&nbsp;“Microsoft&nbsp;FlexGrid&nbsp;Control&nbsp;..”<br><br>3&nbsp;放一个&nbsp;MsFlexGrid&nbsp;控件和一个TextBox&nbsp;控件(Text1)到&nbsp;Form1。&nbsp;修改MsFlexGrid&nbsp;控件的名称为&nbsp;Grid1，<br><br>设置Grid1&nbsp;的行，列&nbsp;为&nbsp;4，&nbsp;固定行，列为&nbsp;0。&nbsp;设置&nbsp;Text1&nbsp;的&nbsp;Visiable&nbsp;为&nbsp;False，&nbsp;BorderStyle&nbsp;为<br><br>None(0)。<br><br>4&nbsp;在Form1&nbsp;的代码中增加声明：<br><br>Const&nbsp;ASC_ENTER&nbsp;=&nbsp;13&nbsp;&#39;回车<br>Dim&nbsp;gRow&nbsp;As&nbsp;Integer<br>Dim&nbsp;gCol&nbsp;As&nbsp;Integer<br><br>5&nbsp;增加代码到&nbsp;Grid_KeyPress&nbsp;过程：<br><br>Private&nbsp;Sub&nbsp;Grid1_KeyPress(KeyAscii&nbsp;As&nbsp;Integer)<br>&#39;&nbsp;Move&nbsp;the&nbsp;text&nbsp;box&nbsp;to&nbsp;the&nbsp;current&nbsp;grid&nbsp;cell:<br>Text1.Top&nbsp;=&nbsp;Grid1.CellTop&nbsp;+&nbsp;Grid1.Top<br>Text1.Left&nbsp;=&nbsp;Grid1.CellLeft&nbsp;+&nbsp;Grid1.Left<br>&#39;&nbsp;Save&nbsp;the&nbsp;position&nbsp;of&nbsp;the&nbsp;grids&nbsp;Row&nbsp;and&nbsp;Col&nbsp;for&nbsp;later:<br>gRow&nbsp;=&nbsp;Grid1.Row<br>gCol&nbsp;=&nbsp;Grid1.Col<br>&#39;&nbsp;Make&nbsp;text&nbsp;box&nbsp;same&nbsp;size&nbsp;as&nbsp;current&nbsp;grid&nbsp;cell:<br>Text1.Width&nbsp;=&nbsp;Grid1.CellWidth&nbsp;-&nbsp;2&nbsp;*&nbsp;Screen.TwipsPerPixelX<br>Text1.Height&nbsp;=&nbsp;Grid1.CellHeight&nbsp;-&nbsp;2&nbsp;*&nbsp;Screen.TwipsPerPixelY<br>&#39;&nbsp;Transfer&nbsp;the&nbsp;grid&nbsp;cell&nbsp;text:<br>Text1.Text&nbsp;=&nbsp;Grid1.Text<br>&#39;&nbsp;Show&nbsp;the&nbsp;text&nbsp;box:<br>Text1.Visible&nbsp;=&nbsp;True<br>Text1.ZOrder&nbsp;0&nbsp;&#39;&nbsp;把&nbsp;Text1&nbsp;放到最前面！<br>Text1.SetFocus<br>&#39;&nbsp;Redirect&nbsp;this&nbsp;KeyPress&nbsp;event&nbsp;to&nbsp;the&nbsp;text&nbsp;box:<br>If&nbsp;KeyAscii&nbsp;&lt;&gt;&nbsp;ASC_ENTER&nbsp;Then<br>SendKeys&nbsp;Chr$(KeyAscii)<br>End&nbsp;If<br>End&nbsp;Sub<br><br>6&nbsp;增加代码到&nbsp;Text1_KeyPress&nbsp;过程：<br><br>Private&nbsp;Sub&nbsp;Text1_KeyPress(KeyAscii&nbsp;As&nbsp;Integer)<br>If&nbsp;KeyAscii&nbsp;=&nbsp;ASC_ENTER&nbsp;Then<br>Grid1.SetFocus&nbsp;&#39;&nbsp;Set&nbsp;focus&nbsp;back&nbsp;to&nbsp;grid,&nbsp;see&nbsp;Text_LostFocus.<br>KeyAscii&nbsp;=&nbsp;0&nbsp;&#39;&nbsp;Ignore&nbsp;this&nbsp;KeyPress.<br>End&nbsp;If<br>End&nbsp;Sub<br><br>7&nbsp;增加代码到&nbsp;Text1_LostFocus&nbsp;过程：<br><br>Private&nbsp;Sub&nbsp;Text1_LostFocus()<br>Dim&nbsp;tmpRow&nbsp;As&nbsp;Integer<br>Dim&nbsp;tmpCol&nbsp;As&nbsp;Integer<br>&#39;&nbsp;Save&nbsp;current&nbsp;settings&nbsp;of&nbsp;Grid&nbsp;Row&nbsp;and&nbsp;col.&nbsp;This&nbsp;is&nbsp;needed&nbsp;only&nbsp;if<br>&#39;&nbsp;the&nbsp;focus&nbsp;is&nbsp;set&nbsp;somewhere&nbsp;else&nbsp;in&nbsp;the&nbsp;Grid.<br>tmpRow&nbsp;=&nbsp;Grid1.Row<br>tmpCol&nbsp;=&nbsp;Grid1.Col<br>&#39;&nbsp;Set&nbsp;Row&nbsp;and&nbsp;Col&nbsp;back&nbsp;to&nbsp;what&nbsp;they&nbsp;were&nbsp;before&nbsp;Text1_LostFocus:<br>Grid1.Row&nbsp;=&nbsp;gRow<br>Grid1.Col&nbsp;=&nbsp;gCol<br>Grid1.Text&nbsp;=&nbsp;Text1.Text&nbsp;&#39;&nbsp;Transfer&nbsp;text&nbsp;back&nbsp;to&nbsp;grid.<br>Text1.SelStart&nbsp;=&nbsp;0&nbsp;&#39;&nbsp;Return&nbsp;caret&nbsp;to&nbsp;beginning.<br>Text1.Visible&nbsp;=&nbsp;False&nbsp;&#39;&nbsp;Disable&nbsp;text&nbsp;box.<br>&#39;&nbsp;Return&nbsp;row&nbsp;and&nbsp;Col&nbsp;contents:<br>Grid1.Row&nbsp;=&nbsp;tmpRow<br>Grid1.Col&nbsp;=&nbsp;tmpCol<br>End&nbsp;Sub<br><br>8&nbsp;好了。&nbsp;按&nbsp;F5&nbsp;开始测试。&nbsp;您可以自由地在&nbsp;Grid&nbsp;中移动，&nbsp;按回车可以开始或结束编辑。<br><br>使用MsFlexGrid控件的几个函数<br><br><br>作者：中国论坛网收集&nbsp;来源：<a target="_blank" href="http://www.51one.net&nbsp;">http://www.51one.net&nbsp;</a>加入时间：2004-8-25<br><br>在VB处理数据显示的时候,使用表格是一种好的方法,虽然DataGrid可以与数据源绑定,但是总有美中不足,就是<br><br>外观不好看,所以有时应用MsFlexGrid显示数据还是一种比较好的方法,以下几个函数是用来控制MsFlexGrid的<br><br>程序<br><br>(本人语言表达能力有限,还请见谅)<br><br><br>&#39;&#39;MsFlexGrid操作函数<br><br>&#39;&#39;合并列<br>Public&nbsp;Function&nbsp;MergeCol(GridObj&nbsp;As&nbsp;Object,&nbsp;ByVal&nbsp;StartCol&nbsp;As&nbsp;Long,&nbsp;ByVal&nbsp;EndCol&nbsp;As&nbsp;Long,&nbsp;ByVal<br><br>ColValue&nbsp;As&nbsp;String,&nbsp;ByVal&nbsp;CurrentRow&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Boolean<br>If&nbsp;StartCol&nbsp;&gt;&nbsp;EndCol&nbsp;Or&nbsp;StartCol&nbsp;&gt;&nbsp;GridObj.Cols&nbsp;Or&nbsp;CurrentRow&nbsp;&gt;&nbsp;GridObj.Rows&nbsp;Then<br>MsgBox&nbsp;&quot;对不起，行列设置错误！&quot;,&nbsp;vbOKOnly,&nbsp;App.Title<br>MergeCol&nbsp;=&nbsp;False<br>Exit&nbsp;Function<br>End&nbsp;If<br><br>For&nbsp;I&nbsp;=&nbsp;StartCol&nbsp;To&nbsp;EndCol<br>GridObj.MergeCol(I)&nbsp;=&nbsp;True<br>GridObj.TextArray(faIndex(GridObj,&nbsp;CurrentRow,&nbsp;I))&nbsp;=&nbsp;ColValue<br>GridObj.ColAlignment(I)&nbsp;=&nbsp;flexAlignCenterCenter<br>Next&nbsp;I<br><br><br>GridObj.MergeRow(CurrentRow)&nbsp;=&nbsp;True<br><br>MergeCol&nbsp;=&nbsp;True<br><br>End&nbsp;Function<br><br><br>&#39;&#39;合并行<br>Public&nbsp;Function&nbsp;MergeRow(GridObj&nbsp;As&nbsp;Object,&nbsp;ByVal&nbsp;StartRow&nbsp;As&nbsp;Long,&nbsp;ByVal&nbsp;EndRow&nbsp;As&nbsp;Long,&nbsp;ByVal<br><br>RowValue&nbsp;As&nbsp;String,&nbsp;ByVal&nbsp;CurrentCol&nbsp;As&nbsp;Long)&nbsp;As&nbsp;Boolean<br>If&nbsp;StartRow&nbsp;&gt;&nbsp;EndRow&nbsp;Or&nbsp;StartRow&nbsp;&gt;&nbsp;GridObj.Rows&nbsp;Or&nbsp;CurrentCol&nbsp;&gt;&nbsp;GridObj.Cols&nbsp;Then<br>MsgBox&nbsp;&quot;对不起，行列设置错误！&quot;,&nbsp;vbOKOnly,&nbsp;App.Title<br>MergeRow&nbsp;=&nbsp;False<br>Exit&nbsp;Function<br>End&nbsp;If<br><br>For&nbsp;I&nbsp;=&nbsp;StartRow&nbsp;To&nbsp;EndRow<br>GridObj.MergeRow(I)&nbsp;=&nbsp;True<br>GridObj.TextArray(faIndex(GridObj,&nbsp;I,&nbsp;CurrentCol))&nbsp;=&nbsp;RowValue<br>GridObj.ColAlignment(CurrentCol)&nbsp;=&nbsp;flexAlignCenterCenter<br><br>Next&nbsp;I<br>GridObj.MergeCol(CurrentCol)&nbsp;=&nbsp;True<br>MergeRow&nbsp;=&nbsp;True<br><br>End&nbsp;Function<br><br>&#39;&#39;转换索引<br>Public&nbsp;Function&nbsp;faIndex(GridObj&nbsp;As&nbsp;Object,&nbsp;ByVal&nbsp;row&nbsp;As&nbsp;Integer,&nbsp;ByVal&nbsp;col&nbsp;As&nbsp;Integer)&nbsp;As&nbsp;Long<br>If&nbsp;row&nbsp;&gt;&nbsp;GridObj.Rows&nbsp;Or&nbsp;row&nbsp;&lt;&nbsp;0&nbsp;Or&nbsp;col&nbsp;&gt;&nbsp;GridObj.Cols&nbsp;Or&nbsp;col&nbsp;&lt;&nbsp;0&nbsp;Then<br>MsgBox&nbsp;&quot;对不起，行列设置错误！&quot;,&nbsp;vbOKOnly,&nbsp;App.Title<br>faIndex&nbsp;=&nbsp;-1<br><br>Exit&nbsp;Function<br>End&nbsp;If<br><br>faIndex&nbsp;=&nbsp;row&nbsp;*&nbsp;GridObj.Cols&nbsp;+&nbsp;col<br><br>End&nbsp;Function<br><br><br>&#39;&#39;插入行<br>Public&nbsp;Function&nbsp;SetItem(GridObj&nbsp;As&nbsp;Object,&nbsp;ByVal&nbsp;row&nbsp;As&nbsp;Integer,&nbsp;ByVal&nbsp;col&nbsp;As&nbsp;Integer,&nbsp;ByVal<br><br>SetValue&nbsp;As&nbsp;String)&nbsp;As&nbsp;Boolean<br>If&nbsp;row&nbsp;&gt;&nbsp;GridObj.Rows&nbsp;Or&nbsp;row&nbsp;&lt;&nbsp;0&nbsp;Or&nbsp;col&nbsp;&gt;&nbsp;GridObj.Cols&nbsp;Or&nbsp;col&nbsp;&lt;&nbsp;0&nbsp;Then<br>MsgBox&nbsp;&quot;对不起，行列设置错误！&quot;,&nbsp;vbOKOnly,&nbsp;App.Title<br>SetItem&nbsp;=&nbsp;False<br>Exit&nbsp;Function<br>End&nbsp;If<br>GridObj.TextArray(faIndex(GridObj,&nbsp;row,&nbsp;col))&nbsp;=&nbsp;SetValue<br><br>SetItem&nbsp;=&nbsp;True<br>End&nbsp;Function<br><br>&#39;&#39;得到单元格值<br>Public&nbsp;Function&nbsp;GetItem(GridObj&nbsp;As&nbsp;Object,&nbsp;ByVal&nbsp;row&nbsp;As&nbsp;Integer,&nbsp;ByVal&nbsp;col&nbsp;As&nbsp;Integer)&nbsp;As&nbsp;String<br><br>If&nbsp;row&nbsp;&gt;&nbsp;GridObj.Rows&nbsp;Or&nbsp;row&nbsp;&lt;&nbsp;0&nbsp;Or&nbsp;col&nbsp;&gt;&nbsp;GridObj.Cols&nbsp;Or&nbsp;col&nbsp;&lt;&nbsp;0&nbsp;Then<br>MsgBox&nbsp;&quot;对不起，行列设置错误！&quot;,&nbsp;vbOKOnly,&nbsp;App.Title<br>GetItem&nbsp;=&nbsp;&quot;&quot;<br>Exit&nbsp;Function<br>End&nbsp;If<br>GetItem&nbsp;=&nbsp;GridObj.TextArray(faIndex(GridObj,&nbsp;row,&nbsp;col))<br>End&nbsp;Function<br><br>在msflexgrid控件中每一个cell格的内容是不可以由用户直接编辑的但是我们可以通过一些小技<br>巧来方便的实现这编辑功能来扩展msflexgrid的应用（在实际应用中这是很常用的功能）。<br><br>你只需按下面的做即可轻松实现编辑msflexgrid控件数据的功能<br><br>例在窗体上放一文本框txtvalue，和一msflexgrid控件grid<br><br>‘文本框控件的keypress事件<br>private&nbsp;sub&nbsp;txtvalue_keypress(keyascii&nbsp;as&nbsp;integer)<br>‘放入一些处理过程，如只需输入数字时的处理<br><br>dim&nbsp;i<br>i=1<br>end&nbsp;sub<br><br>private&nbsp;sub&nbsp;txtvalue_change()<br>grid.text&nbsp;=&nbsp;txtvalue.text<br>end&nbsp;sub<br><br><br>&#39;在grid的entercell事件中加入下例代码<br>private&nbsp;sub&nbsp;grid_entercell()<br>txtvalue.text&nbsp;=&nbsp;grid.text<br>txtvalue.selstart&nbsp;=&nbsp;0<br>txtvalue.sellength&nbsp;=&nbsp;len(txtvalue.text)<br>end&nbsp;sub<br><br>&#39;当用户输入数据时直接调用文本框的keypress事件<br>private&nbsp;sub&nbsp;grid_keypress(keyascii&nbsp;as&nbsp;integer)<br>txtvalue_keypress&nbsp;keyascii<br>end&nbsp;sub<br><br>ok,这样一个可编辑的msflexgrid控件就完成了，简单吧!!<br><br>原理<br>当用户点击msflexgrid中的某个cell格要输入数据时,产生entercell事件，在这里我们对文本<br>框进行初始化，输入当前cell格中的内容，并且选中所有文本。当用户要按下按键进行输入时，就直<br>接调用txtvalue的事件，由文本框来处理.<br><br>处理的结果同grid的当前cell同步，使用户编辑cell格就象使用文本框一样方便。<br><br>&nbsp;<br><br>网格单元格中文字的多行显示很简单，只要把WordWarp属性改为True就可以了。<br><br>&nbsp;<br><br>&nbsp;<br><br>1.VB6自带MSHFlexGrid只支持2048条记录显示,这个问题通过装VB6&nbsp;的SP6解决.<br>2.TopRow属性的使用,这个属性可以使用代码移动MSHFlexGrid的行显示,如要做一个从上至下的滚动显示，使用这个属性解决起来非常方便<br>3.使用选码高亮即选中显示某一行,如要选中第三行,可以使用代码:<br>MSHFlexGrid1.Row&nbsp;=&nbsp;3<br>MSHFlexGrid1.TopRow&nbsp;=3<br>myMSHFlexGrid.ColSel&nbsp;=&nbsp;MSHFlexGrid1.Cols&nbsp;-&nbsp;1<br><br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=388</link><title><![CDATA[FlexCell使用说明]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-9-24 19:18:57</pubDate><guid>http://blog.m916.com/blogview.asp?logID=388</guid><description><![CDATA[<p id=fp><br>FlexCell是一款比较美观的报表控件:<br>&#39;合并单元格<br>Call&nbsp;Grid1.Range(1,&nbsp;1,&nbsp;2,&nbsp;1).Merge<br>&#39;给单元格赋值<br>Grid1.Cell(1,&nbsp;1).Text&nbsp;=&nbsp;&quot;项&nbsp;&nbsp;&nbsp;目&quot;<br>&#39;设置字体为加粗<br>Grid1.Cell(1,&nbsp;1).Font.Bold&nbsp;=&nbsp;True<br>&#39;设置单元格内容居中<br>Grid1.Cell(1,&nbsp;1).Alignment&nbsp;=&nbsp;cellCenterGeneral<br>For&nbsp;row&nbsp;=&nbsp;3&nbsp;To&nbsp;10<br>Grid1.Cell(row,&nbsp;1).Text&nbsp;=&nbsp;&quot;地区&quot;<br>Next&nbsp;row<br>&nbsp;<br>For&nbsp;col&nbsp;=&nbsp;2&nbsp;To&nbsp;5&nbsp;Step&nbsp;2<br>Call&nbsp;Grid1.Range(1,&nbsp;col,&nbsp;1,&nbsp;col&nbsp;+&nbsp;1).Merge<br>Grid1.Cell(1,&nbsp;col).Text&nbsp;=&nbsp;&quot;产品&quot;<br>Grid1.Cell(1,&nbsp;col).Alignment&nbsp;=&nbsp;cellCenterCenter<br>Grid1.Cell(2,&nbsp;col).Text&nbsp;=&nbsp;&quot;销量&quot;<br>Grid1.Cell(2,&nbsp;col).Alignment&nbsp;=&nbsp;cellCenterCenter<br>Next&nbsp;col<br>For&nbsp;col&nbsp;=&nbsp;3&nbsp;To&nbsp;5&nbsp;Step&nbsp;2<br>Grid1.Cell(2,&nbsp;col).Text&nbsp;=&nbsp;&quot;销量吨&quot;<br>Grid1.Cell(2,&nbsp;col).Alignment&nbsp;=&nbsp;cellCenterCenter<br>Next&nbsp;col<br>&#39;设置固定列行<br>Grid1.FixedCols&nbsp;=&nbsp;2<br>Grid1.FixedRows&nbsp;=&nbsp;3<br>&#39;让原有的固定列行隐藏<br>Grid1.RowHeight(0)&nbsp;=&nbsp;0<br>Grid1.Column(0).Width&nbsp;=&nbsp;0<br>&#39;设置固定行列的颜色<br>Grid1.BackColorFixed&nbsp;=&nbsp;&amp;H80000013<br>&nbsp;<br>Grid1.Cell(3,&nbsp;2).Text&nbsp;=&nbsp;&quot;测试换行并自动调整行高&quot;<br>&#39;设置单元格自动换行<br>Grid1.Cell(3,&nbsp;2).WrapText&nbsp;=&nbsp;True<br>&#39;设置自动调整行高<br>Grid1.AutoFitRowHeight&nbsp;(3)<br><br><br>Private&nbsp;Sub&nbsp;Preview_Click()<br>With&nbsp;Grid1.PageSetup<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置页眉<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Header&nbsp;=&nbsp;&quot;FlexCell表格测试打印&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.HeaderAlignment&nbsp;=&nbsp;cellCenter&nbsp;&#39;cellLift<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.HeaderFont.Name&nbsp;=&nbsp;&quot;Times&nbsp;New&nbsp;Roman&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.HeaderFont.Size&nbsp;=&nbsp;14<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.HeaderFont.Bold&nbsp;=&nbsp;True<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置页脚<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Footer&nbsp;=&nbsp;&quot;共&nbsp;&amp;N&nbsp;页，第&nbsp;&amp;P&nbsp;页&nbsp;&nbsp;&nbsp;&nbsp;打印日期：&amp;D&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.FooterAlignment&nbsp;=&nbsp;cellCenter<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.FooterFont.Name&nbsp;=&nbsp;&quot;Verdana&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.FooterFont.Size&nbsp;=&nbsp;8<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;设置页边距<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.LeftMargin&nbsp;=&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RightMargin&nbsp;=&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.TopMargin&nbsp;=&nbsp;3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.BottomMargin&nbsp;=&nbsp;3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.HeaderMargin&nbsp;=&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.FooterMargin&nbsp;=&nbsp;2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PaperSize&nbsp;=&nbsp;cellPaperA3&nbsp;&nbsp;&#39;A3纸<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Orientation&nbsp;=&nbsp;cellPortrait&nbsp;&nbsp;&#39;竖向打印<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CenterHorizontally&nbsp;=&nbsp;True&nbsp;&nbsp;&#39;打印内容水平居中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PrintFixedColumn&nbsp;=&nbsp;True&nbsp;&#39;打印固定列<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PrintFixedRow&nbsp;=&nbsp;True&nbsp;&#39;打印固定行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.PrintGridlines&nbsp;=&nbsp;True&nbsp;&#39;打印单元格边框<br>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;With<br>Grid1.PrintPreview<br>End&nbsp;Sub<br>但是,其在导出到EXCEL时,无法设置一个报表名称,自动插入到EXCEL的第一行,^_^<br>自己写一个:<br>Private&nbsp;Sub&nbsp;daochu_Click()<br>Dim&nbsp;row&nbsp;As&nbsp;Long<br>Dim&nbsp;col&nbsp;As&nbsp;Long<br>&#39;防止重画<br>Grid1.AutoRedraw&nbsp;=&nbsp;False<br>&#39;隐藏固定行列<br>Grid1.RowHeight(0)&nbsp;=&nbsp;0<br>Grid1.Column(0).Width&nbsp;=&nbsp;0<br>&#39;设置固定行列<br>Grid1.FixedCols&nbsp;=&nbsp;1<br>Grid1.FixedRows&nbsp;=&nbsp;1<br>&#39;插入导出的报表名称<br>Grid1.Range(1,&nbsp;1,&nbsp;1,&nbsp;11).Selected<br>Grid1.Selection.InsertRows<br>Grid1.Selection.Merge<br>Grid1.Cell(1,&nbsp;1).Text&nbsp;=&nbsp;&quot;FlexCell表格测试&quot;<br>Grid1.Cell(1,&nbsp;1).Font.Size&nbsp;=&nbsp;16<br>Grid1.Cell(1,&nbsp;1).Alignment&nbsp;=&nbsp;cellCenterCenter<br>Grid1.Cell(1,&nbsp;1).Font.Bold&nbsp;=&nbsp;True<br>&#39;加边框<br>Grid1.Range(0,&nbsp;0,&nbsp;0,&nbsp;0).Selected<br>With&nbsp;Grid1.Selection<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellEdgeLeft)&nbsp;=&nbsp;cellThick<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellEdgeRight)&nbsp;=&nbsp;cellThick<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellEdgeTop)&nbsp;=&nbsp;cellThick<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellEdgeBottom)&nbsp;=&nbsp;cellThick<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellInsideHorizontal)&nbsp;=&nbsp;cellThin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Borders(cellInsideVertical)&nbsp;=&nbsp;cellThin<br>End&nbsp;With<br>&#39;导出EXCEL<br>Me.Grid1.ExportToExcel&nbsp;App.Path&nbsp;&amp;&nbsp;&quot;/test.xls&quot;,&nbsp;True,&nbsp;True<br>MsgBox&nbsp;&quot;导出成功！&quot;,&nbsp;vbInformation,&nbsp;&quot;金蝶提示&quot;<br>&#39;导出后删除报表名称<br>Grid1.Range(1,&nbsp;1,&nbsp;1,&nbsp;11).Selected<br>Grid1.Selection.DeleteByRow<br>&#39;重新设置固定行列(恢复到导出之前)<br>Grid1.FixedCols&nbsp;=&nbsp;2<br>Grid1.FixedRows&nbsp;=&nbsp;3<br>&#39;恢复重画<br>Grid1.AutoRedraw&nbsp;=&nbsp;True<br>End&nbsp;Sub</p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=387</link><title><![CDATA[网站因奥运关闭了2个月]]></title><author>yifan</author><category>日志</category><pubDate>2008-9-23 19:13:59</pubDate><guid>http://blog.m916.com/blogview.asp?logID=387</guid><description><![CDATA[<p id=fp><br>　　网站因为奥运关闭了两个月，这两个月中间我没有管理我的Blog.m916.com，WWW.m916.com也停止了运行，Google的广告可能为“0”，不知上班的一天怎么有这么多的事情要去完成。有时好累啊。<br>　　最近在编写一个程序，学校运动会管理系统，也许只要工作每天有点空闲的话，再有２个月，我的学校运动会管理系统2.0就可以完工了。到时候想好好的找一个安静的地方，喝上点点啤酒。</p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=386</link><title><![CDATA[人生]]></title><author>yifan</author><category>日志</category><pubDate>2008-7-24 9:02:37</pubDate><guid>http://blog.m916.com/blogview.asp?logID=386</guid><description><![CDATA[<p id=fp><div align="center"><font size="3"><font color="Red">人生</font></font></div><br><br>　　人生就如我们面前使用的电脑和敲击的键盘一样，没有目的和目标，我们何需打开电脑？没有敲击，如何为电脑发出指令？没有想好，何需就轻易发出指令？没有退出，何谈重新开始？没有复制和粘贴，何需借鉴人生？确认是一种勇气，放弃有时也不失为一种明智，只是少一些重来，多一份肯定，人生的记忆和经历不能删除，完美设计并准确、和谐地使用键盘每一个键，才能在电脑里画出最美的图画和写出最精彩的文章。<br><br>　　人生的关键在于思想、精神和心情，努力让自己的思想明澈，让自己的精神充实而有所支撑，让自己每天都有一个豁达、平和和开朗的心情，这很重要。<br><br>　　人生就如上演一场戏，从一个人出生开始，他便悄悄非人力的安排被迫登场了。随着时间和剧情的推进，剧情的场面和情节逐步变得宏大和复杂。世界和社会是一个大舞台，家庭是一个小舞台，我们每个人都在大小舞台上扮演着一个、两个甚至更多个角色。随着时间和剧情的推进，我们扮演的角色便开始不以我们的意愿和意志所左右，它开始要求我们要适应整个大小剧情的变化，包括你的思想、观点和行为，否则我们一旦稍有差错，便与整个大小剧情相冲突，仅仅做为一个剧情角色的我们只有根据剧情的变化去迎合它、配合它和适应它，否则我们便面临被驱逐出剧情和舞台的危险，因此，做为剧情和舞台的每一个角色的我们，只有被动、迎合、配合和适应。我们出场时的角色可以说是固定的、命中注定的，但随着时间、剧情和舞台的变化，我们的角色也是可以变换的，因为我们逐步有了自己的思想、世界观和人生观，我们可以根据剧情和舞台的变化，分析剧情的演化规律，并根据剧情中各色人物的身份和舞台场景的变换努力调整自己的心态、行为和目的，这样一来，我们又是主动的。随着我们演技的不断丰富和提高，迎合和适应剧情、舞台的熟练度不断增强，我们的精神开始变得舒缓，思想和观念随之变得更加明澈和豁达。人生就如一台戏，它需要每一个角色，黑的、白的、红的、绿的、完整的、残缺的等等，而且缺一不可。大自然有大自然的规律，剧情和舞台也有剧情和舞台的规则，学习着、分析着、吸取着、聪明着，变换着、适应着、快乐着，这才是我们演好每一个角色应持的基本态度。<br><br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=385</link><title><![CDATA[中国教师是万能妖怪]]></title><author>yifan</author><category>日志</category><pubDate>2008-7-23 9:44:33</pubDate><guid>http://blog.m916.com/blogview.asp?logID=385</guid><description><![CDATA[<p id=fp><font size="3"><font color="Red"><div align="center">中国教师是万能妖怪</div></font></font><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当老师先得有知识，世间各行各业，惟将读书生活形容为“寒窗”；头悬梁锥刺股那样血淋淋的可怕，也只用于读书那里。可见，学知识不是件容易的事，但老师没有知识当然不行。当老师还得有高尚的品德。不仅要学为人师，还得行为示范。入了这个行当，就有一个牌坊给你立在那里，你得存天理，还得灭人欲。你不能想升官，不能图发财，不能贪生怕死，不能插浑打科，时刻得摆出标兵身材模范脸。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这也罢了，反正中国的读书人就那副奴才相，尚可夹着尾巴忍受或维持。但中国是一个重教的国家，百年大事，教育为本，对老师的要求以往是有些太宽了。如今，他们不仅要当文状元文探花什么的，还得当武状元，至少是个武秀才等等。要是老师有这个学历，今年汶川地震，谭千秋老师的生命就不会被摧垮，范美忠更不用逃跑。只要他们一使用乾坤大挪移，教室就可以轻轻被稳住，哪里劳烦得着网友们辩论、教育部立法？<br><br>&nbsp;&nbsp;&nbsp;&nbsp;我刚认为文武双全德才兼备就已经是千载难逢的标兵好老师了，时代要求马上又进了一步：要做老师，还得继续去修炼，拿个警校的资格证回来。这不？最近又有活生生的例子：安徽一个被称作杨不管的老师，因为学生斗殴时没有及时制止，致使一方死亡。就怪这杨老师对犯罪学造诣不高，分不清打闹的孩子哪个能惹祸，那个在玩耍：那个杀人的孩子刚有动机，他就应嗖地一声出招，大喊一声：“手下留人！”振麻他的手臂，怎么能让造成这样的悲剧？<br><br>&nbsp;&nbsp;&nbsp;&nbsp;再往下看，光有文有武，有德，有制止犯罪的能力，依然不够老师的任职资格，还得担当义务家长：打死同学的，和砍掉老师指头的安徽籍学生，都是留守青少年。被砍掉几根手指头的崔老师工作的学校，仅有300余名学生，留守孩子就占20%。老师们一致反映：这些孩子难带，管理很麻烦。而据几年前统计，四川阆中等地一些学校，留守少年儿童远超出上述比例，这类孩子学坏和犯罪，大家都认为是缺乏家教和父母之爱。他们互砍或砍老师，犯罪了，老师就得承担责任，比如：杨不管杨老师和该校校长都遭受了处罚，安徽方面针对此事，还专门有文件对老师的行为规范做了教师法、教育法以外的规定。所以，要想学生不犯罪，老师就得自觉承担起义务家长的作用来，把这些孩子收留到自家，等都培养成才后交给他们的父母。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;说实话，我真有点为中小学老师捏把汗：不是替他们推卸做老师的责任，而是感到老师这行当，普通人难以胜任：房子盖成豆腐渣工程，塌了教师的脊梁得扛；父母都出外打工了，孩子留家里没人管教，打架斗殴成性搞出人命，老师又得赔款又被撤职。所以，老师为了保住手指头，防止自己学生互殴致死致残，要么赶紧辞职种庄稼去；要么拜师学武艺进警校练格斗学犯罪心理学，并替别人义务教养孩子。否则，你的职业生涯将会死的很难堪。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;看来，能够当好教师的，不能是人，应当是传说中的妖怪。因为时代变化太快了，天灾人祸层出不穷，以后还不知需要教师干什么呢。上穷碧落下黄泉的本事都得具备才行。<br><br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=384</link><title><![CDATA[javascript常用的表单验证]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-6-19 11:32:06</pubDate><guid>http://blog.m916.com/blogview.asp?logID=384</guid><description><![CDATA[<p id=fp><font color="Red"><font size="4"><div align="center">javascript常用的表单验证</div></font></font><br><br><br><font size="3">//&nbsp;检查是否为数字</font><br>function&nbsp;checkIsInteger(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str&nbsp;==&nbsp;&quot;&quot;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str.search(/^[0-9]+$/)&nbsp;&lt;&nbsp;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br><font size="3">//检查是否整数</font><br>function&nbsp;CheckNum(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!str&nbsp;||&nbsp;isNaN(str)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str=(str&nbsp;*&nbsp;1).toString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.indexOf(&quot;.&quot;)&nbsp;==&nbsp;-1){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>}<br><br><font size="3">//&nbsp;检查是否为有效的密码，密码只允许由ascii组成，此函数只在修改或注册密码时使用</font><br>function&nbsp;checkValidPasswd(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^[x00-x7f]+$/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!&nbsp;reg.test(str)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str.length&nbsp;&lt;&nbsp;6&nbsp;||&nbsp;str.length&nbsp;&gt;&nbsp;16){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>}<br><br><font size="3">//&nbsp;检查是否为中文</font><br>function&nbsp;isChn(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^[u4E00-u9FA5]+$/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!reg.test(str)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>}<br><br><font size="3">//&nbsp;检查是否为有效的真实姓名，只能含有中文或大写的英文字母</font><br>function&nbsp;isValidTrueName(strName){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;str&nbsp;=&nbsp;Trim(strName);&nbsp;&nbsp;&nbsp;//判断是否为全英文大写或全中文，可以包含空格<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^[A-Z&nbsp;u4E00-u9FA5]+$/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(reg.test(str)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>}<br><br><font size="3">//检查邮箱</font><br>function&nbsp;isEmail(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;reg.test(str);<br>}<br><br><font size="3">//检查电话号码</font><br>function&nbsp;isTel(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg=/^([0-9]|[\-])+$/g&nbsp;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(str.length&lt;7&nbsp;||&nbsp;str.length&gt;18){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;reg.exec(str);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br><font size="3">//检查年龄</font><br>function&nbsp;isAge(str){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;mydate=new&nbsp;Date;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;now=mydate.getFullYear();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str&nbsp;&lt;&nbsp;now-60&nbsp;||&nbsp;str&nbsp;&gt;&nbsp;now-18){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>}<br><br><font size="3">//是否为合法的日期格式:YYYY-MM-DD</font><br>function&nbsp;isDateFormat(txt){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(txt==null&nbsp;||&nbsp;txt&nbsp;==&nbsp;&quot;&quot;){return&nbsp;false;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;regex&nbsp;=&nbsp;/[0-9]{1,4}-[0-9]{1,2}-[0-9]{1,2}/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;regex.test(txt)&nbsp;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;noArr&nbsp;=&nbsp;txt.split(&quot;-&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;year&nbsp;=&nbsp;eval(noArr[0]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;month&nbsp;=&nbsp;eval(noArr[1]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;day&nbsp;=&nbsp;eval(noArr[2]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(&nbsp;year&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;month&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;month&nbsp;&gt;&nbsp;12&nbsp;||&nbsp;day&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;day&nbsp;&gt;&nbsp;31)&nbsp;{return&nbsp;false;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((month&nbsp;==&nbsp;4&nbsp;||&nbsp;month&nbsp;==&nbsp;6&nbsp;||&nbsp;month&nbsp;==&nbsp;9&nbsp;||&nbsp;month&nbsp;==&nbsp;11)&nbsp;&amp;&amp;&nbsp;day&nbsp;&gt;&nbsp;30){return&nbsp;false;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(month&nbsp;==&nbsp;2){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((year&nbsp;%&nbsp;4&nbsp;!=&nbsp;0)&nbsp;&amp;&amp;&nbsp;day&nbsp;&gt;&nbsp;29)&nbsp;{&nbsp;return&nbsp;false;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(year&nbsp;%&nbsp;4&nbsp;==&nbsp;0){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(year&nbsp;%&nbsp;100&nbsp;==&nbsp;0&nbsp;&amp;&amp;&nbsp;year&nbsp;%&nbsp;400&nbsp;!=&nbsp;0&nbsp;&amp;&amp;&nbsp;day&nbsp;&gt;&nbsp;29){return&nbsp;false;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(day&nbsp;&gt;&nbsp;28){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br><font size="3">//检测15位或18位的身份证号</font><br>function&nbsp;isIdCardNum(txt){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(txt&nbsp;==&nbsp;null&nbsp;||&nbsp;txt&nbsp;==&nbsp;&quot;&quot;){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;idNo&nbsp;=&nbsp;txt.toString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;len&nbsp;=&nbsp;idNo.length;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;noArr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;dateStr=&quot;&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(len&nbsp;!=&nbsp;15&nbsp;&amp;&amp;&nbsp;len&nbsp;!=&nbsp;18){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(len&nbsp;==&nbsp;15){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg&nbsp;=&nbsp;/(\d{3})(\d{3})(\d{2})(\d{2})(\d{2})(\d{3})/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(reg.test(idNo)==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noArr&nbsp;=&nbsp;reg.exec(idNo);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateStr&nbsp;=&nbsp;&quot;19&quot;+noArr[3]+&quot;-&quot;+noArr[4]+&quot;-&quot;+noArr[5];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;isDateFormat(dateStr);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg&nbsp;=&nbsp;/(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})(\d{1})([0-9xX]{1})/;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(reg.test(idNo)==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noArr&nbsp;=&nbsp;reg.exec(idNo);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateStr&nbsp;=&nbsp;noArr[7]+noArr[8]+noArr[9]+noArr[10]+&quot;/&quot;+noArr[11]+noArr[12]+&quot;/&quot;+noArr[13]+noArr[14];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isNaN(new&nbsp;Date(dateStr))&nbsp;==&nbsp;false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;wi&nbsp;=&nbsp;new&nbsp;Array(0,7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;amt&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;chkNo&nbsp;=&nbsp;new&nbsp;Array(&quot;1&quot;,&quot;0&quot;,&quot;X&quot;,&quot;9&quot;,&quot;8&quot;,&quot;7&quot;,&quot;6&quot;,&quot;5&quot;,&quot;4&quot;,&quot;3&quot;,&quot;2&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;18;i++){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;amt&nbsp;+=&nbsp;(noArr[i]*wi[i]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(chkNo[amt&nbsp;%&nbsp;11]&nbsp;==&nbsp;noArr[18].toUpperCase());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=383</link><title><![CDATA[IE自带的打印功能]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-6-16 9:56:20</pubDate><guid>http://blog.m916.com/blogview.asp?logID=383</guid><description><![CDATA[<p id=fp><font size="3"><font color="Red"><div align="center">IE自带的打印功能</div></font></font><br>首先在网页中添加：&nbsp;<br><br>&lt;OBJECT&nbsp;id=&quot;WebBrowser&quot;&nbsp;height=&quot;0&quot;&nbsp;width=&quot;0&quot;&nbsp;classid=&quot;CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&quot;&nbsp;<br>VIEWASTEXT&gt;&nbsp;<br>&lt;/OBJECT&gt;&nbsp;<br><br>然后就可以依次加入功能按钮了：&nbsp;<br><br>&lt;input&nbsp;onclick=&quot;document.all.WebBrowser.ExecWB(6,1)&quot;&nbsp;type=&quot;button&quot;&nbsp;value=&quot;打印&quot;&gt;&nbsp;&lt;input&nbsp;onclick=&quot;document.all.WebBrowser.ExecWB(6,6)&quot;&nbsp;type=&quot;button&quot;&nbsp;value=&quot;直接打印&quot;&gt;&nbsp;<br>&lt;input&nbsp;onclick=&quot;document.all.WebBrowser.ExecWB(8,1)&quot;&nbsp;type=&quot;button&quot;&nbsp;value=&quot;页面设置&quot;&gt;&nbsp;<br>&lt;input&nbsp;onclick=&quot;document.all.WebBrowser.ExecWB(7,1)&quot;&nbsp;type=&quot;button&quot;&nbsp;value=&quot;打印预览&quot;&gt;&amp;nbsp;&lt;INPUT&nbsp;type=&quot;button&quot;&nbsp;value=&quot;关闭窗口&quot;&nbsp;onclick=&quot;javascript:window.close()&quot;&gt;&nbsp;<br><br>将这两块东西放到&lt;center&nbsp;class=noprint&gt;&lt;/center&gt;就不会打印这些按钮了。当然要定义noprint了：&nbsp;<br><br>&lt;style&nbsp;media=&quot;print&quot;&gt;.Noprint&nbsp;{&nbsp;DISPLAY:&nbsp;none&nbsp;}&lt;/style&gt;只要把不想打印的东西的css设置成noprint就可以了。&nbsp;<br><br>现在就实现了基本的web打印，需要注意的情况如下：&nbsp;<br><br>必须将ie的internet选项的安全设置中对于没有标记为安全的ActiveX控件进行...设置成提示或者启用，否则会报错，导致不可用。&nbsp;<br>如果在vs.net编辑环境下编辑该页面，它经常自动的给object添加多余的参数，有了这些东西，打印就会出错，所以要记得最后保存的时候删除它们。&nbsp;<br>为了简便并且达到最好的效果，我们可以在一个页面实现编辑和打印，这时候会需要很多的textbox，我们把它的css设置成.edittext&nbsp;<br>{&nbsp;<br>overflow-y:visible;&nbsp;<br>width:&nbsp;100%;&nbsp;<br>border-top:&nbsp;none;&nbsp;<br>border-right:&nbsp;none;&nbsp;<br>border-bottom:&nbsp;none;&nbsp;<br>border-left:&nbsp;none;&nbsp;<br>}就可以实现在打印的时候不显示边框和multiline的textbox不显示滚动条了。&nbsp;<br><br>还有一些小经验就是在设置标格宽度的时候，对于A4纸张，横打用920，竖打用640，效果最好。&nbsp;<br><br>呵呵，以上都是我的一些经验之谈，可能有些错误或者大家有更好的办法，欢迎批评指正。&nbsp;<br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=382</link><title><![CDATA[也谈WEB打印技术]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-6-16 9:39:53</pubDate><guid>http://blog.m916.com/blogview.asp?logID=382</guid><description><![CDATA[<p id=fp>（1）&lt;script&nbsp;defer&gt;&nbsp;<br>function&nbsp;SetPrintSettings()&nbsp;{&nbsp;<br>　//&nbsp;--&nbsp;advanced&nbsp;features&nbsp;<br>　factory.printing.SetMarginMeasure(2)&nbsp;//&nbsp;measure&nbsp;margins&nbsp;in&nbsp;inches&nbsp;<br>　factory.SetPageRange(false,&nbsp;1,&nbsp;3)&nbsp;//&nbsp;need&nbsp;pages&nbsp;from&nbsp;1&nbsp;to&nbsp;3&nbsp;<br>　factory.printing.printer&nbsp;=&nbsp;&quot;HP&nbsp;DeskJet&nbsp;870C&quot;&nbsp;<br>　factory.printing.copies&nbsp;=&nbsp;2&nbsp;<br>　factory.printing.collate&nbsp;=&nbsp;true&nbsp;<br>　factory.printing.paperSize&nbsp;=&nbsp;&quot;A4&quot;&nbsp;<br>　factory.printing.paperSource&nbsp;=&nbsp;&quot;Manual&nbsp;feed&quot;&nbsp;<br><br>　//&nbsp;--&nbsp;basic&nbsp;features&nbsp;<br>　factory.printing.header&nbsp;=&nbsp;&quot;This&nbsp;is&nbsp;MeadCo&quot;&nbsp;<br>　factory.printing.footer&nbsp;=&nbsp;&quot;Advanced&nbsp;Printing&nbsp;by&nbsp;ScriptX&quot;&nbsp;<br>　factory.printing.portrait&nbsp;=&nbsp;false&nbsp;<br>　factory.printing.leftMargin&nbsp;=&nbsp;1.0&nbsp;<br>　factory.printing.topMargin&nbsp;=&nbsp;1.0&nbsp;<br>　factory.printing.rightMargin&nbsp;=&nbsp;1.0&nbsp;<br>　factory.printing.bottomMargin&nbsp;=&nbsp;1.0&nbsp;<br>}&nbsp;<br>&lt;/script&gt;&nbsp;<br><br>（2）&nbsp;<br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;&nbsp;<br>　　function&nbsp;printsetup(){&nbsp;<br>　　//&nbsp;打印页面设置&nbsp;<br>　　wb.execwb(8,1);&nbsp;<br>　　}&nbsp;<br>　　function&nbsp;printpreview(){&nbsp;<br>　　//&nbsp;打印页面预览&nbsp;<br>　　　　&nbsp;<br>　　wb.execwb(7,1);&nbsp;<br>　　　　　&nbsp;<br>　　　　&nbsp;<br>　　}&nbsp;<br><br>　　function&nbsp;printit()&nbsp;<br>　　{&nbsp;<br>　　if&nbsp;(confirm(&#39;确定打印吗？&#39;))&nbsp;{&nbsp;<br>　　wb.execwb(6,6)&nbsp;<br>　　}&nbsp;<br>　　}&nbsp;<br>　　&lt;/script&gt;&nbsp;<br>&lt;/head&gt;&nbsp;<br>&lt;body&gt;&nbsp;<br>&lt;OBJECT&nbsp;classid=&quot;CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&quot;&nbsp;<br><br>height=0&nbsp;id=wb&nbsp;name=wb&nbsp;width=0&gt;&lt;/OBJECT&gt;&nbsp;<br>&lt;input&nbsp;type=button&nbsp;name=button_print&nbsp;value=&quot;打印&quot;&nbsp;<br><br>onclick=&quot;javascript:printit()&quot;&gt;&nbsp;<br>&lt;input&nbsp;type=button　name=button_setup&nbsp;value=&quot;打印页面设置&quot;&nbsp;<br><br>onclick=&quot;javascript:printsetup();&quot;&gt;&nbsp;<br>&lt;input&nbsp;type=button　name=button_show&nbsp;value=&quot;打印预览&quot;&nbsp;<br><br>onclick=&quot;javascript:printpreview();&quot;&gt;&nbsp;<br>&lt;input&nbsp;type=button&nbsp;name=button_fh&nbsp;value=&quot;关闭&quot;&nbsp;<br><br>onclick=&quot;javascript:window.close();&quot;&gt;&nbsp;<br><br>------------------------------------------------&nbsp;<br>关于这个组件还有其他的用法，列举如下：&nbsp;<br>WebBrowser.ExecWB(1,1)&nbsp;打开&nbsp;<br>Web.ExecWB(2,1)&nbsp;关闭现在所有的IE窗口，并打开一个新窗口&nbsp;<br>Web.ExecWB(4,1)&nbsp;保存网页&nbsp;<br>Web.ExecWB(6,1)&nbsp;打印&nbsp;<br>Web.ExecWB(7,1)&nbsp;打印预览&nbsp;<br>Web.ExecWB(8,1)&nbsp;打印页面设置&nbsp;<br>Web.ExecWB(10,1)&nbsp;查看页面属性&nbsp;<br>Web.ExecWB(15,1)&nbsp;好像是撤销，有待确认&nbsp;<br>Web.ExecWB(17,1)&nbsp;全选&nbsp;<br>Web.ExecWB(22,1)&nbsp;刷新&nbsp;<br>Web.ExecWB(45,1)&nbsp;关闭窗体无提示&nbsp;<br><br>2、分页打印&nbsp;<br>&lt;HTML&gt;&nbsp;<br>&lt;HEAD&gt;&nbsp;<br>&lt;STYLE&gt;　　&nbsp;<br>　　P&nbsp;{page-break-after:&nbsp;always}&nbsp;<br>&lt;/STYLE&gt;&nbsp;<br>&lt;/HEAD&gt;&nbsp;<br>&lt;BODY&gt;&nbsp;<br>&lt;%while&nbsp;not&nbsp;rs.eof%&gt;&nbsp;<br>&lt;P&gt;&lt;%=rs(0)%&gt;&lt;/P&gt;&nbsp;<br>&lt;%rs.movenext%&gt;&nbsp;<br>&lt;%wend%&gt;&nbsp;<br>&lt;/BODY&gt;&nbsp;<br>&lt;/HTML&gt;&nbsp;<br><br>3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号&nbsp;<br>（1）ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉，打印就不出来了。&nbsp;<br>（2）&lt;HTML&gt;&nbsp;<br>&lt;HEAD&gt;&nbsp;<br>&lt;TITLE&gt;&nbsp;New&nbsp;Document&nbsp;&lt;/TITLE&gt;&nbsp;<br>&lt;META&nbsp;NAME=&quot;Generator&quot;&nbsp;CONTENT=&quot;EditPlus&quot;&gt;&nbsp;<br>&lt;META&nbsp;NAME=&quot;Author&quot;&nbsp;CONTENT=&quot;YC&quot;&gt;&nbsp;<br>&lt;script&nbsp;language=&quot;VBScript&quot;&gt;&nbsp;<br>dim&nbsp;hkey_root,hkey_path,hkey_key&nbsp;<br>hkey_root=&quot;HKEY_CURRENT_USER&quot;&nbsp;<br>hkey_path=&quot;\Software\Microsoft\Internet&nbsp;Explorer\PageSetup&quot;&nbsp;<br>&#39;//设置网页打印的页眉页脚为空&nbsp;<br>function&nbsp;pagesetup_null()&nbsp;<br>　　on&nbsp;error&nbsp;resume&nbsp;next&nbsp;<br>　　Set&nbsp;RegWsh&nbsp;=&nbsp;CreateObject(&quot;WScript.Shell&quot;)&nbsp;<br>　　hkey_key=&quot;\header&quot;　　&nbsp;<br>　　RegWsh.RegWrite&nbsp;hkey_root+hkey_path+hkey_key,&quot;&quot;&nbsp;<br>　　hkey_key=&quot;\footer&quot;&nbsp;<br>　　RegWsh.RegWrite&nbsp;hkey_root+hkey_path+hkey_key,&quot;&quot;&nbsp;<br>end&nbsp;function&nbsp;<br>&#39;//设置网页打印的页眉页脚为默认值&nbsp;<br>function&nbsp;pagesetup_default()&nbsp;<br>　　on&nbsp;error&nbsp;resume&nbsp;next&nbsp;<br>　　Set&nbsp;RegWsh&nbsp;=&nbsp;CreateObject(&quot;WScript.Shell&quot;)&nbsp;<br>　　hkey_key=&quot;\header&quot;　　&nbsp;<br>　　RegWsh.RegWrite&nbsp;hkey_root+hkey_path+hkey_key,&quot;&amp;w&amp;b页码，&amp;p/&amp;P&quot;&nbsp;<br>　　hkey_key=&quot;\footer&quot;&nbsp;<br>　　RegWsh.RegWrite&nbsp;hkey_root+hkey_path+hkey_key,&quot;&amp;u&amp;b&amp;d&quot;&nbsp;<br>end&nbsp;function&nbsp;<br>&lt;/script&gt;&nbsp;<br>&lt;/HEAD&gt;&nbsp;<br><br>&lt;BODY&gt;&nbsp;<br>&lt;br/&gt;&nbsp;<br>&lt;br/&gt;&nbsp;<br>&lt;br/&gt;&nbsp;<br>&lt;br/&gt;&nbsp;<br>&lt;br/&gt;&nbsp;<br>&lt;br/&gt;&lt;p&nbsp;align=center&gt;&nbsp;<br>&lt;input&nbsp;type=&quot;button&quot;&nbsp;value=&quot;清空页码&quot;&nbsp;onclick=pagesetup_null()&gt;&nbsp;&lt;input&nbsp;type=&quot;button&quot;&nbsp;value=&quot;恢复页吗&quot;&nbsp;onclick=pagesetup_default()&gt;&lt;br/&gt;&nbsp;<br><br>&lt;/p&gt;&nbsp;<br>&lt;/BODY&gt;&nbsp;<br>&lt;/HTML&gt;</p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=381</link><title><![CDATA[巧用javascript中String的函数replace()]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-6-12 11:04:28</pubDate><guid>http://blog.m916.com/blogview.asp?logID=381</guid><description><![CDATA[<p id=fp>在javascript中，String的函数replace()简直太让人喜爱了。它灵活而强大的字符替换处理能力，让我不禁想向大家介绍它。<br><br>　　replace()最简单的算是能力就是简单的字符替换。示例代码如下：<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>//在此我想将字母a替换成字母A<br>alert(strM.replace(&quot;a&quot;,&quot;A&quot;));<br>&lt;/script&gt;<br><br>　　我想大家运行后可以看到结果，它只替换了首字母。但如果加上正则表达式结果就不一样了！呵呵，没错。replace()支持正则表达式，它可以按照正则表达式的规则匹配字符或字符串，然后给予替换！<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>//在此我想将字母a替换成字母A<br>alert(strM.replace(/a/,&quot;A&quot;));<br>&lt;/script&gt;<br><br>　　呵呵，您一定发现了。这样还是只替换了第一个字母a。如果您熟悉正则，那这就难不住您。稍加修改就OK了。<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>//在此将字母a全部替换成字母A<br>alert(strM.replace(/a/g,&quot;A&quot;));<br>&lt;/script&gt;<br><br>　　还可以这样，看看效果！<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>alert(strM.replace(/(javascript)\s*(is)/g,&quot;$1&nbsp;$2&nbsp;fun.&nbsp;it&nbsp;$2&quot;));<br>&lt;/script&gt;<br><br>　　我这儿举的例子都是很简单的应用，replace()在此点上与您使用正则表达式的能力成正比。您正则表达式越强，呵呵，那您就会越疯狂的爱上它。<br><br>　　当然，我这儿推荐replace()的原因并不因为它能与正则表达式合作，而在于它还能与函数进行合作，发挥出强大的功能。<br><br>　　先看看简单例子：将所有单词首字母换成大写。<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>function&nbsp;change(word)<br>{<br>　return&nbsp;word.indexOf(0).toUpperCase()+word.substring(1);<br>}<br>alert(strM.replace(/\b\w+\b/g,change));<br>&lt;/script&gt;<br><br>　　由上可知，当正则表达式有&quot;g&quot;标志时，代表将处理整个字符串，即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数，具体个数视正则表达式而定。<br><br>　　有了函数与正则表达式的配合，replace()处理字符串的功能空前强大起来了！<br><br>　　最后还举个例子，将字符串所有单词倒序，用replace()处理是如此简单。<br><br>&lt;script&nbsp;language=&quot;javascript&quot;&gt;<br>var&nbsp;strM&nbsp;=&nbsp;&quot;javascript&nbsp;is&nbsp;a&nbsp;good&nbsp;script&nbsp;language&quot;;<br>function&nbsp;change(word)<br>{<br>　var&nbsp;result&nbsp;=&nbsp;word.match(/(\w)/g);<br>if&nbsp;(&nbsp;result&nbsp;)<br>{<br>　var&nbsp;str&nbsp;=&nbsp;&quot;&quot;;<br>　&nbsp;for&nbsp;(&nbsp;var&nbsp;i=result.length-1;&nbsp;i&gt;=0;&nbsp;i--&nbsp;)<br>　{<br>　　&nbsp;str&nbsp;+=&nbsp;result;<br>　}<br>　return&nbsp;str;<br>}<br>else<br>{<br>　&nbsp;return&nbsp;&quot;null&quot;;<br>}<br>}<br>alert(strM.replace(/\b(\w)+\b/g,change));<br>&lt;/script&gt;　&nbsp;<br></p>]]></description></item><item><link>http://blog.m916.com/blogview.asp?logID=380</link><title><![CDATA[javascript字符串相减函数]]></title><author>yifan</author><category>不断的学习</category><pubDate>2008-6-10 23:18:20</pubDate><guid>http://blog.m916.com/blogview.asp?logID=380</guid><description><![CDATA[<p id=fp>function&nbsp;Str_sub(str1,str2)&nbsp;/*&nbsp;字符串相减函数*/<br>{<br>var&nbsp;strA,strB,strI,strN,strC;<br>strA=str1;<br>strB=str2;<br>strI=strB.length;<br>strN=strA.indexOf(strB);<br>strC=strA.substring(0,strN)+strA.substring((strN+strI),(strA.length));<br>return&nbsp;strC;<br>}</p>]]></description></item>
</channel>
</rss>