作者:死在水中的鱼(死鱼)
以前老觉得FORM里的FILE按钮不够完美,因为它没有FILTER,所以一打开窗口就全部文件也给显示出来。于是调用了系统的OpenDialog控件,这样以后写上传文件时就能够的显得个性化了。。但只对WIN系统有用!!!
测试代码如下:直接保存为一个HTM文件即可以看效果
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> OpenDialog控件测试 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<object id=FileDialog style="left: 0px; TOP: 0px" classid="clsid:f9043c85-f6f2-101a-a3c9-08002b2f49fb" codebase="http://activex.microsoft.com/controls/vb5/comdlg32.cab">
</object>
<input type=button value="打开文件" onclick='OpenFile()'><input type=button value="选择颜色" onclick='OpenColor()'><input type=button value="选择字体" onclick='OpenFont()'>
<div align=left id=App style="border:1 solid #000000;background-color:#FFFFFF;height:300px;overflow:auto;width:100%;z-index:2" contentEditable></div>
<SCRIPT LANGUAGE="VBScript">
'/***************************文件窗口测试****************************************
Sub OpenFile
On Error Resume Next
Dim sFilter
With FileDialog
.FileName=""
.DialogTitle="请选择要打开的文件"
.Flags=4+4096 '打开文件窗口的样式; 4 = 隐藏“只读文件”按钮选项 4096 = 选择的文件必须存在 512 = 可以选择多文件(但窗口样式会改变成旧时系统的窗口样式)
sFilter="可执行文件(*.exe,com)|*.exe;*.com"
sFilter=sFilter + "|图片文件(*.jpeg,jpg,gif,png)|*.jpeg;*.jpg;*.gif;*.png;*.bmp"
sFilter=sFilter + "|所有文件(*.*)|*.*"
.Filter=sFilter '打开文件窗口的过滤器
.CancelError = True
.ShowOpen '写成.ShowSave则是显示保存文件的窗口
If Err.Number<>0 Then
Err.Clear
document.all.App.innerText = "你没有选择任何文件"
Exit Sub
End If
document.all.App.innerText= "你选择的文件是:"+.FileName
End With
End Sub
'/***************************颜色窗口测试****************************************
Sub OpenColor
On Error Resume Next
Dim sColor
With FileDialog
.CancelError = True
.Flags=2 '1 = 不显示自定义颜色面板 2 = 先显示自定义颜色面板
.ShowColor
If Err.Number<>0 Then
Err.Clear
document.all.App.innerText = "你没有选择任何颜色"
document.all.App.style.background="#FFFFFF"
Exit Sub
End If
sColor="#"+Left(StrReverse("000000"+Cstr(Hex(.Color))),6)
document.all.App.innerHTML= "<font color="+sColor+">你选择的颜色是:"+sColor+"</font>"
End With
End Sub
'/***************************字体窗口测试****************************************
Sub OpenFont
On Error Resume Next
Dim sFont,sColor
With FileDialog
.CancelError = True
.Flags=3 + 256
'1 = 屏幕字体集 2 = 打印机字体集 3 = 包含1,2的字体集 256 = 显示字体效果栏(颜色,下划线,删除线等)
.ShowFont
If Err.Number<>0 Then
Err.Clear
document.all.App.innerText = "你没有选择任何字体"
Exit Sub
End If
sFont="名称:"+.FontName+" 字体大小:"+Cstr(.FontSize)
If .FontBold Then
sFont=sFont+" 粗体:是"
Else
sFont=sFont+" 粗体:否"
End If
If .FontItalic Then
sFont=sFont+" 斜体:是"
Else
sFont=sFont+" 斜体:否"
End If
If .FontStrikeThru Then
sFont=sFont+" 删除线:是"
Else
sFont=sFont+" 删除线:否"
End If
If .FontUnderLine Then
sFont=sFont+" 下划线:是"
Else
sFont=sFont+" 下划线:否"
End If
sColor="#"+Left(StrReverse("000000"+Cstr(Hex(.Color))),6)
sFont=sFont+" 字体颜色:"+sColor
document.all.App.innerText= "你选择的字体是:"+sFont
End With
End Sub
</SCRIPT>
</BODY>
</HTML>