加载即时列表框会产生重复的条目
Loading on-the-fly listbox produces duplicate entries
加载时,此 HTA 列出 FolderX 中包含的文件并在列表框中显示它们的名称。当我 select 一个文件时,第二个列表框应该列出文件记录(简单的文本项目 - itemA,itemB,例如)。相反,它会在第一组和第二组之间用 space 列出两次记录。 msgbox 似乎显示我正在通过 FLFLBox_onChange 进行两次旅行。为什么会这样?
我不想 de-select 文件,因为它显示了我正在查看哪个文件的记录(是的,我可以将其放入另一个框中,但这是问题所在)?
谢谢。
<HTA:APPLICATION ID="FilelistBuilder" BORDER="thin" BORDERSTYLE="complex" maximizeButton="yes" minimizeButton="yes" />
<script language=vbscript>
option explicit
dim forReading, forWriting
forReading = 1
forWriting = 2
dim strNewFile, objFSO, objFile, objFiles, strLine, objOption, oFile, colFiles, objFolder
dim objShell, oExec, strWD,intFileCount
dim strTargetFLFL
strTargetFLFL = "C:\FolderX"
Sub Window_Onload
'Creates an on-the-fly listbox of files
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.getFolder(strTargetFLFL)
set colFiles = objFolder.files
intFileCount = 0
For Each oFile in colFiles
strLine = ofile.name
Set objOption = Document.createElement("OPTION")
objOption.Text = strLine
objOption.Value = strLine
FLFLBox.Add(objOption)
intFileCount = intFileCount +1
Next
End Sub
Sub FLFLBox_onChange
'Creates an on-the-fly list of file contents for selected file
dim strTargetFL, strContents, arrContents, ContentRecord
strTargetFL = strTargetFLFL & "\" & FLFLBox.value
msgbox "File Name: " & strTargetFL
Set objFile = objFSO.OpenTextFile(strTargetFL,forReading)
strContents = objFile.ReadAll
arrContents = split(strContents,vbnewline)
For Each ContentRecord in arrContents
Set objOption = Document.createElement("OPTION")
objOption.Text = ContentRecord
objOption.Value = ContentRecord
FLBox.Add(objOption)
Next
End Sub
sub Close_onclick
msgbox "The application will exit and any unsaved data will be lost"
window.close
end sub
</script>
</head>
<body>
<h1> ARPA </h1>
<h2> File List Builder</h2>
<BR>
<input type="button" name=Close value="Close">
<br>
<p>
</p>
</div>
<div id="Action style="position:absolute;top:10%;left:30%">
</div>
<div style="position:absolute;top:5%;left:60%">
List of Files - Click to List Contents;
</div>
<div id="FileListFileList" style="position:absolute;top:10%;left:60%;right:100%">
<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
</select>
</div>
<div style="position:absolute;top:30%;left:60%">
List File Contents
</div>
<div id="OneFileList" style="position:absolute;top:35%;left:60%;right:100%">
<select listbox name="FLBox" size="10">
</select>
</div>
<div id="FileEdit" style="position:absolute;left:60%">
</div>
</form>
</body>
</html>
您不需要 select 标签中的 onChange="FLFLBox_OnChange"
作为函数 FLFLBox_OnChange 运行s 因为您已为其指定名称.将它放在 select 标记中会导致它 运行 两次。
改变
<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
至
<select listbox name="FLFLBox" size="5">
加载时,此 HTA 列出 FolderX 中包含的文件并在列表框中显示它们的名称。当我 select 一个文件时,第二个列表框应该列出文件记录(简单的文本项目 - itemA,itemB,例如)。相反,它会在第一组和第二组之间用 space 列出两次记录。 msgbox 似乎显示我正在通过 FLFLBox_onChange 进行两次旅行。为什么会这样? 我不想 de-select 文件,因为它显示了我正在查看哪个文件的记录(是的,我可以将其放入另一个框中,但这是问题所在)? 谢谢。
<HTA:APPLICATION ID="FilelistBuilder" BORDER="thin" BORDERSTYLE="complex" maximizeButton="yes" minimizeButton="yes" />
<script language=vbscript>
option explicit
dim forReading, forWriting
forReading = 1
forWriting = 2
dim strNewFile, objFSO, objFile, objFiles, strLine, objOption, oFile, colFiles, objFolder
dim objShell, oExec, strWD,intFileCount
dim strTargetFLFL
strTargetFLFL = "C:\FolderX"
Sub Window_Onload
'Creates an on-the-fly listbox of files
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.getFolder(strTargetFLFL)
set colFiles = objFolder.files
intFileCount = 0
For Each oFile in colFiles
strLine = ofile.name
Set objOption = Document.createElement("OPTION")
objOption.Text = strLine
objOption.Value = strLine
FLFLBox.Add(objOption)
intFileCount = intFileCount +1
Next
End Sub
Sub FLFLBox_onChange
'Creates an on-the-fly list of file contents for selected file
dim strTargetFL, strContents, arrContents, ContentRecord
strTargetFL = strTargetFLFL & "\" & FLFLBox.value
msgbox "File Name: " & strTargetFL
Set objFile = objFSO.OpenTextFile(strTargetFL,forReading)
strContents = objFile.ReadAll
arrContents = split(strContents,vbnewline)
For Each ContentRecord in arrContents
Set objOption = Document.createElement("OPTION")
objOption.Text = ContentRecord
objOption.Value = ContentRecord
FLBox.Add(objOption)
Next
End Sub
sub Close_onclick
msgbox "The application will exit and any unsaved data will be lost"
window.close
end sub
</script>
</head>
<body>
<h1> ARPA </h1>
<h2> File List Builder</h2>
<BR>
<input type="button" name=Close value="Close">
<br>
<p>
</p>
</div>
<div id="Action style="position:absolute;top:10%;left:30%">
</div>
<div style="position:absolute;top:5%;left:60%">
List of Files - Click to List Contents;
</div>
<div id="FileListFileList" style="position:absolute;top:10%;left:60%;right:100%">
<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
</select>
</div>
<div style="position:absolute;top:30%;left:60%">
List File Contents
</div>
<div id="OneFileList" style="position:absolute;top:35%;left:60%;right:100%">
<select listbox name="FLBox" size="10">
</select>
</div>
<div id="FileEdit" style="position:absolute;left:60%">
</div>
</form>
</body>
</html>
您不需要 select 标签中的 onChange="FLFLBox_OnChange"
作为函数 FLFLBox_OnChange 运行s 因为您已为其指定名称.将它放在 select 标记中会导致它 运行 两次。
改变
<select listbox name="FLFLBox" size="5" onChange="FLFLBox_OnChange">
至
<select listbox name="FLFLBox" size="5">