Что нового

Копировать данные из ListView

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Всем доброго времени суток :IL_AutoIt_1: :IL_AutoIt_1: :IL_AutoIt_1:
Пытаюсь сделать таблицу с возможностью сортировки столбцов.
Использовал, немного отредактированный вот такой пример:
Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Global $hListView, $hListView2
_Example1()
Func _Example1()
    Local $hImage, $aIcons[3] = [0, 3, 6] ; Объявляем массивы и переменные
    Local $iExWindowStyle = BitOR($WS_EX_DLGMODALFRAME, $WS_EX_CLIENTEDGE); Объявляем массивы и переменные
    Local $iExListViewStyle = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES, $LVS_EX_GRIDLINES,$LVS_EX_DOUBLEBUFFER); Объявляем переменную стиля таблицы:
    GUICreate("Таблица",500,400); создаем GUI окно
    $hListView = GUICtrlCreateListView("url адрес|название|кол-во", 10, 10, 480, 380, -1, $iExWindowStyle); Создаёт таблицу ListView в GUI
    _GUICtrlListView_SetExtendedListViewStyle($hListView, $iExListViewStyle); Устанавливает расширенные стили
    _AddRow($hListView, "www.и_так_далее|*****|312312312313")
    GUISetState()
    _GUICtrlListView_RegisterSortCallBack($hListView)
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $hListView
                ; Kick off the sort callback
                _GUICtrlListView_SortItems($hListView, GUICtrlGetState($hListView))
        EndSwitch
    WEnd
    _GUICtrlListView_UnRegisterSortCallBack($hListView)
    GUIDelete()
EndFunc   ;==>_Example1
Func _AddRow($hWnd, $sItem,$iPlus = 0)
    Local $aItem = StringSplit($sItem, "|")
    Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1],$iPlus, _GUICtrlListView_GetItemCount($hWnd) + 9999)
    _GUICtrlListView_SetColumnWidth($hWnd, 0, $LVSCW_AUTOSIZE_USEHEADER)
    For $x = 2 To $aItem[0]
        _GUICtrlListView_AddSubItem($hWnd, $iIndex, $aItem[$x], $x - 1,$iPlus)
        _GUICtrlListView_SetColumnWidth($hWnd, $x - 1, $LVSCW_AUTOSIZE)
    Next
EndFunc   ;==>_AddRow


но мне еще необходимо, что б я мог копировать выделенные столбцы через CTR+С и в дальнейшем использовать в Excel например.
Подскажите пожалуйста, как это организовать?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Код:
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
HotKeySet('{ENTER}', 'Copy')
$Form1 = GUICreate("Form1", 532, 310, 192, 124)
Global $ListView1 = GUICtrlCreateListView("", 16, 16, 498, 278, $LVS_SHOWSELALWAYS, $LVS_EX_GRIDLINES + $LVS_EX_FULLROWSELECT)
GUISetState(@SW_SHOW)
_GUICtrlListView_AddColumn($ListView1, "Параметр", 250)
_GUICtrlListView_AddColumn($ListView1, "Значение", 250)
_GUICtrlListView_AddItem($ListView1, 'qwerty')
_GUICtrlListView_AddSubItem($ListView1, 0, 'asdfgh', 1)
_GUICtrlListView_AddItem($ListView1, '1234')
_GUICtrlListView_AddSubItem($ListView1, 1, '5678', 1)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

Func Copy()
	Local $selectind = _GUICtrlListView_GetSelectedIndices($ListView1, True)
	If IsArray($selectind) Then
		If $selectind[0] > 0 Then
		Local $text = ''
			For $i = 1 To $selectind[0]
				$text &= _GUICtrlListView_GetItemText($ListView1, $selectind[$i]) & '|' & _GUICtrlListView_GetItemText($ListView1, $selectind[$i], 1) & @LF
			Next
			ClipPut($text)
		EndIf
	EndIf
EndFunc   ;==>Copy
только смени горячую клавишу
 
Автор
J

JIereHga2010

Новичок
Сообщения
68
Репутация
0
Понятно, спасибо, а я думал, что можно выставить какое то свойство в таблице, что б данные можно было копировать...
Помогло
 
Верх