📄 listbox.htc
字号:
<PUBLIC:COMPONENT>
<PUBLIC:DEFAULTS/>
<PUBLIC:attach event="ondocumentready" onevent="initElement()" />
<PUBLIC:attach event="ondetach" onevent="cleanupElement()" />
<PUBLIC:attach event="onmouseover" onevent="elementOnMouseOver()" />
<PUBLIC:attach event="onmouseout" onevent="elementOnMouseOut()" />
<PUBLIC:attach event="onclick" onevent="elementOnClick()" />
<PUBLIC:attach event="ondblclick" onevent="elementOnDoubleClick()" />
<PUBLIC:attach event="onselectstart" onevent="elementOnSelect()" />
<PUBLIC:property name="value" value="" />
<PUBLIC:property name="text" value="" />
<PUBLIC:property name="selectedIndex" value=-1 />
<PUBLIC:property name="sortType" value="Ascending" />
<PUBLIC:method name="itemCount" />
<PUBLIC:method name="sort" />
<PUBLIC:method name="addItem" />
<PUBLIC:method name="removeItem" />
<PUBLIC:method name="showItem" />
<PUBLIC:method name="hideItem" />
<PUBLIC:method name="getItemIndex" />
<PUBLIC:method name="getItemText" />
<PUBLIC:method name="getItemChecked" />
<PUBLIC:method name="getItemValue" />
<PUBLIC:method name="getItemHTML" />
<PUBLIC:method name="getItemTag" />
<PUBLIC:method name="setSelectedItem" />
<PUBLIC:event name="onchange" id="onchange" />
<PUBLIC:event name="ondoubleclick" id="ondoubleclick" />
<script language="jscript">
var imageCell = 0 ;
var captionCell = 1 ;
var valueCell = 2 ;
var tagCell = 3 ;
var optionsElement = null ;
function initElement() {
optionsElement = element.children[0] ;
with (optionsElement) {
for (var i = 0; i < rows.length; i++) {
with (rows[i].children[imageCell]) {
if (children.length == 0) {
var imgElement = document.createElement("IMG") ;
imgElement.src = element.currentStyle.noImageUrl ;
insertAdjacentElement("beforeEnd", imgElement) ;
}
else {
children[0].hideFocus = true ;
}
}
}
}
}
function cleanupElement() {
optionsElement = null ;
}
function elementOnMouseOver() {
var el = getRealItem(window.event.srcElement) ;
if (el.tagName == "TR") {
el.className = "2k3ListboxItemOver" ;
}
el = null ;
}
function elementOnMouseOut() {
var el = getRealItem(window.event.srcElement) ;
if (el.tagName == "TR") {
if (element.selectedIndex == el.rowIndex) {
el.className = "2k3ListboxItemSelected" ;
}
else {
el.className = "2k3ListboxItem" ;
}
}
el = null ;
}
function elementOnClick() {
var el = getRealItemClick(window.event.srcElement)
if (el.tagName == "TR") {
if (element.selectedIndex != -1) {
el.parentElement.children[element.selectedIndex].className = "2k3ListboxItem" ;
}
el.className = "2k3ListboxItemSelected" ;
element.selectedIndex = el.rowIndex ;
element.text = el.children[captionCell].innerText ;
element.value = el.children[valueCell].innerText ;
onchange.fire() ;
}
el = null ;
}
function elementOnDoubleClick() {
with (window.event) {
var el = getRealItemClick(srcElement) ;
cancelBubble = true ;
returnValue = false ;
}
if (el.tagName == "TR") {
ondoubleclick.fire() ;
}
el = null ;
return false ;
}
function elementOnSelect() {
with (window.event) {
cancelBubble = true ;
returnValue = false ;
}
return false ;
}
function itemCount() {
return optionsElement.rows.length ;
}
function sort() {
var bReverse = (sortType == "Descending") ;
for (var i = 0; i < optionsElement.rows.length; i++) {
var strRowInsert = (optionsElement.rows[i].children[captionCell].innerText).toLowerCase() ;
for (var s = 0; s <= i; s++) {
var strRowCurrent = (optionsElement.rows[s].children[captionCell].innerText).toLowerCase() ;
if (((!bReverse && strRowInsert < strRowCurrent) || (bReverse && strRowInsert > strRowCurrent)) && (i != s)) {
with (optionsElement.insertRow(optionsElement.rows[s].rowIndex)) {
className = "2k3ListboxItem" ;
for (var c = 0; c <= 3; c++) { insertCell(c) }
with (children[imageCell]) {
className = "2k3ListboxImage" ;
innerHTML = optionsElement.rows[i + 1].children[imageCell].innerHTML ;
}
with (children[captionCell]) {
className = "2k3ListboxCaption" ;
innerHTML = optionsElement.rows[i + 1].children[captionCell].innerHTML ;
}
with (children[valueCell]) {
className = "2k3ListboxValue" ;
innerText = optionsElement.rows[i + 1].children[valueCell].innerText ;
}
with (children[tagCell]) {
className = "2k3ListboxTag" ;
innerText = optionsElement.rows[i + 1].children[tagCell].innerText ;
}
}
optionsElement.deleteRow(optionsElement.rows[i + 1].rowIndex) ;
break ;
}
}
}
setSelectedItem(getItemIndex(element.text)) ;
}
function addItem(itmType, text, value, itemIndex, exData, tagData) {
var objNewRow = optionsElement.insertRow(itemIndex) ;
with (objNewRow) {
className = "2k3ListboxItem" ;
for (var c = 0; c <= 3; c++) { insertCell(c) }
with (children[imageCell]) {
className = "2k3ListboxImage" ;
switch ((itmType).toLowerCase()) {
case "n":
innerHTML = "<img src='" + element.currentStyle.noImageUrl + "'>" ;
break ;
case "i":
if (exData == "") {
exData = element.currentStyle.noImageUrl ;
}
innerHTML = "<img src='" + exData + "'>" ;
break ;
case "c":
if (exData == "" || (exData).toLowerCase() == "false" || !exData) {
innerHTML = "<input type='checkbox' hidefocus style='height: 15px; overflow: hidden;'>" ;
}
else {
innerHTML = "<input type='checkbox' hidefocus checked style='height: 15px; overflow: hidden;'>" ;
}
break ;
}
}
with (children[captionCell]) {
className = "2k3ListboxCaption" ;
innerHTML = text ;
}
with (children[valueCell]) {
className = "2k3ListboxValue" ;
innerText = value ;
}
with (children[tagCell]) {
className = "2k3ListboxTag" ;
innerText = tagData ;
}
}
setSelectedItem(getItemIndex(element.text)) ;
}
function removeItem(itemIndex) {
optionsElement.deleteRow(itemIndex) ;
if (element.selectedIndex == itemIndex) {
element.selectedIndex = -1 ;
element.text = "" ;
element.value = "" ;
onchange.fire() ;
}
}
function showItem(itemIndex) {
optionsElement.rows[itemIndex].style.display = "" ;
}
function hideItem(itemIndex) {
optionsElement.rows[itemIndex].style.display = "none" ;
if (selectedIndex == itemIndex) {
element.selectedIndex = -1 ;
element.text = "" ;
element.value = "" ;
onchange.fire() ;
}
}
function getItemIndex(itemText) {
with (optionsElement) {
for (var i = 0; i < rows.length; i++) {
with (rows[i].children[captionCell]) {
if (innerText == itemText) {
return rows[i].rowIndex ;
}
}
}
}
return -1 ;
}
function getItemText(itemIndex) {
return optionsElement.rows[itemIndex].children[captionCell].innerText ;
}
function getItemValue(itemIndex) {
return optionsElement.rows[itemIndex].children[valueCell].innerText ;
}
function getItemHTML(itemIndex) {
return optionsElement.rows[itemIndex].children[captionCell].innerHTML ;
}
function getItemTag(itemIndex) {
return optionsElement.rows[itemIndex].children[tagCell].innerText ;
}
function getItemChecked(itemIndex) {
with (optionsElement.rows[itemIndex].children[imageCell]) {
if (children[0].tagName != "INPUT") {
return false ;
}
else {
return children[0].checked ;
}
}
}
function setSelectedItem(itemIndex) {
if (itemIndex == -1) {
if (element.selectedIndex != -1) {
if (element.selectedIndex > optionsElement.rows.length - 1) {
element.selectedIndex = -1 ;
element.text = "" ;
element.value = "" ;
return ;
}
optionsElement.rows[element.selectedIndex].className = "2k3ListboxItem" ;
element.selectedIndex = -1 ;
element.text = "" ;
element.value = "" ;
onchange.fire() ;
}
}
else {
if (element.selectedIndex > optionsElement.rows.length - 1) {
element.selectedIndex = -1 ;
element.text = "" ;
element.value = "" ;
return ;
}
if (element.selectedIndex != -1) {
optionsElement.rows[element.selectedIndex].className = "2k3ListboxItem" ;
}
with (optionsElement.rows[itemIndex]) {
className = "2k3ListboxItemSelected" ;
element.selectedIndex = rowIndex ;
element.text = children[captionCell].innerText ;
element.value = children[valueCell].innerText ;
}
onchange.fire() ;
}
}
function getRealItem(el) {
if (el != null) {
if (el.tagName == "IMG") { el = el.parentElement ; }
if (el.tagName == "INPUT") { el = el.parentElement ; }
if (el.tagName == "LI") { el = el.parentElement ; }
switch (el.className) {
case "2k3ListboxImage":
return el.parentElement ;
break ;
case "2k3ListboxCaption":
return el.parentElement ;
break ;
default:
return el ;
break ;
}
}
else {
return el ;
}
}
function getRealItemClick(el) {
if (el != null) {
if (el.tagName == "IMG") { el = el.parentElement ; }
if (el.tagName == "LI") { el = el.parentElement ; }
switch (el.className) {
case "2k3ListboxImage":
return el.parentElement ;
break ;
case "2k3ListboxCaption":
return el.parentElement ;
break ;
default:
return el ;
break ;
}
}
else {
return el ;
}
}
</script>
</PUBLIC:COMPONENT>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -