Что нового

[Данные, строки] Как скопировать с таблицы массивов определенную ячейку?

HaeMHuK

Новичок
Сообщения
43
Репутация
0
Возможно ли скопировать определенную ячейку с таблицы массивов _ArrayDisplay?
Если да, то как.
Заранее спасибо.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ячейку нет, а строку можно :smile:
 
Автор
H

HaeMHuK

Новичок
Сообщения
43
Репутация
0
а через GUICtrlCreateListView можно, если сформирована таблица?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
HaeMHuK,
Код:
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>

$iItemOld = -1
$iSubItemOld = -1

Dim $aData[10][3]
For $i = 0 To 9
	$aData[$i][0] = 'Flight Crew ' & StringFormat('%02d', $i)
	$aData[$i][1] = StringFormat('%04d/%02d/%02d', Random(2009, 2011, 1), Random(1, 12, 1), Random(1, 28, 1))
	$aData[$i][2] = StringFormat('%04d/%02d/%02d', Random(2008, 2009, 1), Random(1, 12, 1), Random(1, 28, 1))
Next

$hMainGui = GUICreate('Demo', 400, 300)

$hListView = GUICtrlCreateListView('Name|Pass Date|Expire Date', 5, 5, 490, 290)
GUICtrlSendMsg($hListView, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

For $i = 0 To 9
	_GUICtrlListView_AddItem($hListView, $aData[$i][0], $i)
	_GUICtrlListView_AddSubItem($hListView, $i, $aData[$i][1], 1)
	_GUICtrlListView_AddSubItem($hListView, $i, $aData[$i][2], 2)
Next
;$hHeader = _GUICtrlListView_GetHeader($hListView)
GUICtrlSendMsg($hListView, $LVM_SETCOLUMNWIDTH, 0, -1)
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
	Local $hWndFrom, $iCode, $tNMHDR, $tInfo

	If Not IsHWnd($hListView) Then $hListView = GUICtrlGetHandle($hListView)
	$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
	$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
	$iCode = DllStructGetData($tNMHDR, 'Code')

	Switch $hWndFrom
		;Case $hHeader
			;ToolTip('')
		Case $hListView
			Switch $iCode
				Case $NM_CLICK;$LVN_HOTTRACK
					$tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
					$iItem = DllStructGetData($tInfo, 'Index')
					$iSubItem = DllStructGetData($tInfo, 'SubItem')
					If $iItem <> -1 And $iSubItem <> -1 Then
						If $iItemOld <> $iItem Then
							$iItemOld = $iItem
						EndIf
						If $iSubItemOld <> $iSubItem Then
							$iSubItemOld = $iSubItem
						EndIf
						ToolTip(_GUICtrlListView_GetItemText($hListView, $iItemOld, $iSubItemOld))
						;ToolTip($aData[$iItemOld][$iSubItemOld])
					Else
						ToolTip('')
					EndIf
				;Case Else
					;ToolTip('')
			EndSwitch
	EndSwitch
	Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY
 
Автор
H

HaeMHuK

Новичок
Сообщения
43
Репутация
0
Супер, спасибо. А можно как-то переделать, чтобы по нажатию копировалось?
 
Автор
H

HaeMHuK

Новичок
Сообщения
43
Репутация
0
Спасибо большое еще раз! То что надо.
 
Верх