ActiveX компонент ListView устанавливается вместе с Microsoft Office и содержится в библиотеке MSCOMCTL.OCX
Это необходимый инструмент для вывода различных списков в виде таблицы.
Разместить объект на странице можно так:
<OBJECT ID="ListView1" WIDTH=375 HEIGHT=580 CLASSID="CLSID:BDD1F04B-858B-11D1-B16A-00C0F0283628" style="margin: 5px; border: 1px solid;">
<PARAM NAME="SortKey" VALUE="0">
<PARAM NAME="View" VALUE="3">
<PARAM NAME="Arrange" VALUE="0">
<PARAM NAME="LabelEdit" VALUE="1">
<PARAM NAME="NumItems" VALUE="0">
</OBJECT>
<html>
<script language="vbscript">
Sub Window_Onload
' Добавляем колонки
ListView1.ColumnHeaders.Add , , "ID", 50
ListView1.ColumnHeaders.Add , , "Наименование", 290
' Читаем файл подключения. Такая конструкция используется во всех примерах, где описана работа с БД.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = CreateObject("WScript.Shell")
path = WshShell.CurrentDirectory
udlFile = "sm.udl"
strFilePath = Path & "" & udlFile 'Читаем файл подключения
Const For_Reading = 1
Const Tristate_True = -1
Set objTS = objFSO.OpenTextFile(strFilePath, For_Reading, False, Tristate_True)
objTS.SkipLine
objTS.SkipLine
Udlread=objTS.Readline
Set DBConn = CreateObject("ADODB.Connection")' Здесь может быть любой другой источник данных ODBC, главное это указать его в udl
DBConn.Open(Udlread) 'Пробуем подключится
SQLstr = "SELECT * FROM CLASSIF_TREE_CHILD(0, 119, 1) order by ID_CLASSIF"
Set DBrecords=DBConn.Execute(SQLstr)
While Not DBrecords.EOF
SqRec="select * from cardscla where classif="+Cstr(DBrecords.Fields(0).Value)
set SdbRec=DBConn.Execute(SqRec)
if SdbRec.EOF then
else
Call AddItem(Cstr(DBrecords.Fields(0).Value),Cstr(DBrecords.Fields(2).Value)) ' Вызываем процедуру заполнения ListView
end if
DBrecords.MoveNext
Wend
End Sub
Sub AddItem(ID, Name) ' Заполнение строк
With ListView1.ListItems.Add(, , ID)
With .ListSubItems
.Add ,, Name
End With
End With
End Sub
</script>
<body scroll="NO" style="text-align: center">
<b><font size=2 color="black">Выберите группы товаров</font></b><br>
<OBJECT ID="ListView1" WIDTH=580 HEIGHT=580 CLASSID="CLSID:BDD1F04B-858B-11D1-B16A-00C0F0283628" style="margin: 5px; border: 1px solid;">
<PARAM NAME="SortKey" VALUE="0">
<PARAM NAME="View" VALUE="3">
<PARAM NAME="Arrange" VALUE="0">
<PARAM NAME="LabelEdit" VALUE="1">
<PARAM NAME="SortOrder" VALUE="0">
<PARAM NAME="Sorted" VALUE="0">
<PARAM NAME="MultiSelect" VALUE="0">
<PARAM NAME="LabelWrap" VALUE="-1">
<PARAM NAME="HideSelection" VALUE="0">
<PARAM NAME="HideColumnHeaders" VALUE="0">
<PARAM NAME="OLEDragMode" VALUE="0">
<PARAM NAME="OLEDropMode" VALUE="0">
<PARAM NAME="AllowReorder" VALUE="-1">
<PARAM NAME="Checkboxes" VALUE="0">
<PARAM NAME="FlatScrollBar" VALUE="0">
<PARAM NAME="FullRowSelect" VALUE="-1">
<PARAM NAME="GridLines" VALUE="-1">
<PARAM NAME="HotTracking" VALUE="0">
<PARAM NAME="HoverSelection" VALUE="0">
<PARAM NAME="PictureAlignment" VALUE="0">
<PARAM NAME="TextBackground" VALUE="0">
<PARAM NAME="ForeColor" VALUE="-2147483640">
<PARAM NAME="BackColor" VALUE="-2147483624">
<PARAM NAME="BorderStyle" VALUE="0">
<PARAM NAME="Appearance" VALUE="0">
<PARAM NAME="MousePointer" VALUE="0">
<PARAM NAME="Enabled" VALUE="1">
<PARAM NAME="NumItems" VALUE="0">
</OBJECT>
</boby></html>
Sub ListView1_ColumnClick(ColumnHeader) ' Сортировка при нажатии на заголовок столбца
With ListView1
.Sorted = False
.SortKey = ColumnHeader.Index - 1
If .SortOrder = 0 Then
.SortOrder = 1
Else
.SortOrder = 0
End If
.Sorted = True
End With
End Sub
Реакция на двойной клик в строке:
Sub ListView1_DblClick()
che=ListView1.SelectedItem.text
if Left(ListView1.SelectedItem.ListSubItems(1), 9)<>" ВЫБРАНО " then ' помечаем выбраную строку словом "ВЫБРАНО"
ListView1.SelectedItem.ListSubItems(1)=" ВЫБРАНО " + ListView1.SelectedItem.ListSubItems(1)
Else
ListView1.SelectedItem.ListSubItems(1)=Right(ListView1.SelectedItem.ListSubItems(1),len(ListView1.SelectedItem.ListSubItems(1))-9)
end if
With ListView1 ' Сртируем список так, чтобы выбранные элементы оказывались сверху
.Sorted = False
.SortKey = 1
If .SortOrder = 0 Then
.SortOrder = 1
Else
.SortOrder = 0
End If
.Sorted = True
End With
With ListView1
.Sorted = False
.SortKey = 1
If .SortOrder = 0 Then
.SortOrder = 1
Else
.SortOrder = 0
End If
.Sorted = True
End With
end sub
Реакция на кнопки Enter и Esc:
Sub ListView1_KeyPress(Key)
FndIt = Chr(key)
if key=27 then window.close
if key=13 then Call ListView1_DblClick()
if key=32 then call ready()
end Sub
Новые комментарии