在黑暗中举起探索的火炬的网志
在喧闹、混杂的生活中
你应该与你的心灵和平相处
尽管这世上有很多假冒和欺骗
有很多单调乏味的工作
和众多破灭的梦幻
它仍然是一个美好的世界
记住:你应该努力去追求幸福。
是的,记住:你应该努力去追求幸福。
每个早晨灿烂的太阳升起的时候,
每个人都应
-
2004-12-09
[原创]本人编写的两个Oracle的帮助小工具 - [VB开发专辑]
本人编写的两个Oracle的帮助小工具,DB_Table_Struct.XLS可以用于创建Oracle
的表结构,在上一个版本的基础上增加了向用户提示的部分,修正了多表创建时多输
出文件的BUG;
CreateDatumXLS.xls是用来在Oracle创建数据的小工具.
两个工具的用法都比较简单,填空再按快捷健输出就可以,大家可以先试试样例再正
式使用,有问题请通知我.
注:此两个工具都可以随意分发使用修改,但具体修改的地方必须声明并非本人书写,
本人放弃除署名权外的任何权利.
下载地址:http://www.helihuo.net/non-cgi/usr/35/35_2407.rar -
2004-05-27
[原創] 一個自動轉移焦點的文本框類 - [VB开发专辑]
’******************************************************************************
’* クラス 名称 :clsAutoTabTxt
’*
’* クラス 概要 :Enterキーを押すとき、自動的にfocusを移す。
’******************************************************************************
Option Explicit
’ クラスの属性をセットする。
Private WithEvents mtxt As TextBox
’******************************************************************************
’ 関数名称 :Attach()
’
’ 目的説明 :このクラスを外部テキストボックスにセットする。
’ 入力引数 :
’ txtOut:外部テキストボックスのリファレンス。
’ 戻り値 :なし
’ 関数著者 :何楊 (hey@dhc.com.cn)
’******************************************************************************
Public Sub Attach(txtOut As TextBox)
Set mtxt = txtOut
End Sub
’******************************************************************************
’ 関数名称 :mtxt_KeyPress()
’
’ 目的説明 :テキストボックスに英数字だけ書き込み。
’ Enterキーを押すとき、自動的にfocusを移す。
’ 入力引数 :
’ KeyAscii:入力するキャラクタのAsciiコード。
’ 戻り値 :なし
’ 関数著者 :何楊 (hey@dhc.com.cn)
’******************************************************************************
Private Sub mtxt_KeyPress(KeyAscii As Integer)
If (KeyAscii > 57 Or KeyAscii < 48) And KeyAscii <> 8 And KeyAscii <> 13 Then
KeyAscii = 0
MsgBox E009, vbCritical, gstrTitleNormal
ElseIf KeyAscii = 13 Then
SendKeys "{tab}"
End If
End Sub
-
2004-05-27
[原創] 一個自動選擇內容的文本框類 - [VB开发专辑]
’******************************************************************************
’* クラス 名称 :clsAutoSelectTxt
’*
’* クラス 概要 :自動的にテキストボックスを選択する。
’******************************************************************************
Option Explicit
’ クラスの属性をセットする。
Private WithEvents mtxt As TextBox
’******************************************************************************
’ 関数名称 :Attach()
’
’ 目的説明 :このクラスを外部テキストボックスにセットする。
’ 入力引数 :
’ txtOut:外部テキストボックスのリファレンス。
’ 戻り値 :なし
’ 関数著者 :何楊 (hey@dhc.com.cn)
’******************************************************************************
Public Sub Attach(txtOut As TextBox)
Set mtxt = txtOut
End Sub
’******************************************************************************
’ 関数名称 :mtxt_GotFocus()
’
’ 目的説明 :テキストボックスがfocusを選択する時。
’ 入力引数 :なし
’ 戻り値 :なし
’ 関数著者 :何楊 (hey@dhc.com.cn)
’******************************************************************************
Private Sub mtxt_GotFocus()
mtxt.SelStart = 0
mtxt.SelLength = Len(mtxt)
End Sub
-
2004-01-26
利用Microsoft 的HTML分析器来获得Web站点的数据(转载) - [VB开发专辑]
From:http://www.microsoft.com/china/msdn/workshop/scrape.asp
利用 Microsoft 的 HTML 分析器来获得 Web 站点的数据
Jeremy Rule
Microsoft Corporation
2000年5月
摘要: 本文讨论如何收集来自 Web 的信息,并借助 Internet Explorer 的可重用分析器组件,将它分布到其他 Web 页或数据库。(打印共 7 页)
程序员面临的一个共同任务就是收集 Web 站点的数据,并将它分布到数据库或其他 Web 页。例如,程序员可能需要从气象站点获得天气预报图,从在线股票经纪人那里获得股票报价,以及从新闻站点获得行业新闻。然后,这些信息被放在一个 Web 页上,供 CIO、商人或销售经理使用。或者,也许程序员需要跟踪历来的气象资料,并需要每天将来自气象站的天气预报信息存入数据库。其应用不胜枚举。
过去,这些选择相当受限制。现在,通过使用象 WinInet.dll 这样的 HTTP 组件或许多其他第三方组件,您就可以获取 Web 页,并利用几百种字符串处理功能来获得网页中您所感兴趣的部分。这一技术已在应用,但很不理想。如果您致力于计算机科学(或者有足够的时间),就会为 HTML 创建一个分析器,以标记 Web 页,然后分析您需要的网页部分。不过,由于 Internet Explorer 的体系结构中已包含了可重复使用的用分析器,这些都不需要了。
Internet Explorer 不只是一个程序,更是许多可重复使用组件的集合与容器。在拆取 Web 页时,最有意思的两个组件是 shdocvw.dll 和 mshtml.dll。第一个组件 shdocvw.dll,包含称为 WebBrowser 的 Microsoft(R) ActiveX(R) 控件,它真实地显示 Web 页。在运行 Internet Explorer 时,显示 Web 页的主窗口就是这样的控件。第二个组件 mshtml.dll,含有能分析 WebBrowser 控件中所包含文档的 HTML 分析器。
可能有这种情况,在您的应用程序内部,已经用 WebBrowser 控件来驻留 Web 页,但仍需要重新创建一个小浏览器来启动 Web 页的拆取。
在文件菜单上,请单击新建工程,以创建“标准 EXE”,然后在工程菜单上单击部件,以添加 Microsoft HTML Object Library 和 Microsoft Internet Controls。(见图 1。)
图 1.
在工具箱中,可看见 WebBrowser 组件。拖动其中之一,文本框和主窗体上的命令按钮。将此文本框的 Text 属性设置为 “http://moneycentral.msn.com/”,将此命令按钮的 Caption 属性设置为“浏览(&B)”。(见图 2。)
图 2.
双击该命令按钮,然后在事件处理器中放入下列代码,导航至文本框中命名的 Web 站点:
Private Sub Command1_Click()
WebBrowser1.Navigate Text1.Text
End Sub
保存并运行该程序。试着按浏览按钮,导航到文本框中指定的站点。您已经创建了一个基本的 Web 浏览器 — 就其本身而言没什么用,甚至没什么意义,但它却是迈向 Web 拆取技术的第一步。
回到工程中,在代码窗口中选择 WebBrowser1 对象,然后选择 DocumentComplete 的事件处理器。一旦整个 Web 页下载到此浏览器中,即触发该事件:
Private Sub WebBrowser1_DocumentComplete_
(ByVal pDisp As Object, URL As Variant)
End Sub
传递到该事件中的 URL 就是我们导航所至的位置,它在日后确定浏览器所在的页面时将更为有用。WebBrowser 控件有一个属性称为 Document(文档),可将其视为 IHTMLDocument 来处理:
Private Sub WebBrowser1_DocumentComplete(_ ByVal pDisp As Object, URL As Variant)
Dim Doc As IHTMLDocument2
Set Doc = WebBrowser1.Document
//下一步:分析该文档
End Sub
较新的 IHTMLDocument2 具有 IHTMLDocument 中无法使用的特性。可对系统使用 IHTMLDocument 替代老版本的 Internet Explorer,如果您有勇气的话,甚至可以使用 IHTMLDocument3。补充说明一下,我们假设您已经导航到 Word 文档或 XML 文档,而非 HTML 文档。不要将变量 doc 声明为 IHTMLDocument2,可将其声明为 Word 的文档或 XML 的 DOMDocument。
在进行下一步之前,理解 HTML 文档的结构是非常重要的。和 XML 不一样,HTML 文档的组合有一定的自由度。例如,您会遇到未关闭标记的 HTML 文档。HTML 文档确实有某种结构。结构好的 HTML 文档通常具有下列元素:
<HTML>
<HEAD>
header information like the <TITLE>
</HEAD>
<BODY>
elements like <TABLE> and <A> and <IMG>
</BODY>
</HTML>
请注意 HTML 的树状结构。标记包含标记又包含标记,如此等等。特别是,每一个标记元素都包含一个 0 到 n 个标记元素的集合。<TABLE> 标记可以包含 <TR> 标记。每个 <TR> 标记可以包含 <TD> 标记,后者又可以包含其他标记如锚或图像等。
现在,分析整个 http://moneycentral.msn.com/,并在带 MSFT 符号的页填上第二个 <INPUT> 标记。然后,调用此窗体上的提交:
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim doc As IHTMLDocument2
Set doc = WebBrowser1.Document
If URL = _
"http:/ -
2004-01-21
VB中MsFlexGrid控件的使用细则(收集) - [VB开发专辑]
VB中MsFlexGrid控件的使用细则(收集)
>> 将文本赋值给MsFlexGrid的单元格
MsFlexGrid.TextMatrix(3,1)=”Hello”
>> 在MsFlexGrid控件单元格中插入背景图形
Set MsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)
>>选中某个单元
MsFlexGrid.Row=1
MsFlexGrid.Col=1
>>用粗体格式化当前选中单元
MsFlexGrid.CellFontBold=True
>> 添加新的一行
使用AddItem方法,用Tab字符分开不同单元格的内容
dim row as string
row=”AAA”&vbtab&”bbb”
MsFlexFrid1.addItem row
>>怎样来实现MSFlexGrid控件单数行背景为白色,双数的行背景为蓝色?
Dim i As Integer
With MSFlexGrid1
.AllowBigSelection = True ’ 设置网格样式
.FillStyle = flexFillRepeat
For i = 0 To .Rows - 1
.Row = i: .Col = .FixedCols
.ColSel = .Cols() - .FixedCols - 1
If i Mod 2 = 0 Then
.CellBackColor = &HC0C0C0 ’ 浅灰
Else
.CellBackColor = vbBlue ’ 兰色
End If
Next i
End With
>> MSFlexGrid控件如何移到最后一行
MSFlexGrid1.TopRow = MSFlexGrid1.Rows – 1
>>如何判断msflexgrid有无滚动条
Declare Function GetScrollRange Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos As Long, lpMaxPos As Long) As Long
Public Const SB_HORZ = &H0
Public Const SB_VERT = &H1
Public Function VsScroll(MshGrid As MSHFlexGrid) As Boolean ’判断水平滚动条的可见性
Dim i As Long
VsScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_HORZ, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then VsScroll = True
End Function
Public Function HeScroll(MshGrid As MSHFlexGrid) As Boolean ’判断垂直滚动条的可见性
Dim i As Long
HeScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_VERT, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then HeScroll = True
End Function
>>程序运行时,想动态增加MSFlexgrid的列数
在第2列后插入一列:
Private Sub Form_Load()
Me.MSHFlexGrid1.Cols = 5
MSHFlexGrid1.Rows = 2
For i = 0 To Me.MSHFlexGrid1.Cols - 1
Me.MSHFlexGrid1.TextMatrix(0, i) = i
Me.MSHFlexGrid1.TextMatrix(1, i) = i
Next
End Sub
Private Sub Command1_Click()
Me.MSHFlexGrid1.Cols = Me.MSHFlexGrid1.Cols + 1
Me.MSHFlexGrid1.ColPosition(5) = 3
End Sub
>> 请教MSFlexGrid中的对齐功能的使用
设置MSFlexGrid1.ColAlignment(index)=n
>>得到MSFlexGrid控件中当前选中的一行
msflexgrid1.rowsel就是当前选中行
>> 如何通过代码调节列宽度
msflexgrid1.colwidth(i)=4000
collected by junglesong
junglesong@etang.com
2004-1-21
共1页 1






