Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] _arrayDisplay с определённой ячейки

Ответить
Настройки темы
[решено] _arrayDisplay с определённой ячейки

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Скажите пожалуйста можно ли использовать _arrayDisplay так чтобы она выводила массив например с 3 ячейки.

-------
Хочу научиться писать драйвера на с++


Отправлено: 17:47, 18-03-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
может както можно просто заново считать данные с массива? »
Всё можно, нужно покапаться в функции. У меня пока особо на это времени нет, сорри.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:37, 19-03-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
может както можно просто заново считать данные с массива »
я не особо силен в ГУИ, но думаю, что примерно так:
Код: Выделить весь код
#include <array.au3>

Dim $a[3][10]=[[1,2,3,4,5,6,7,8,9,0],[1,2,3,4,5,6,7,8,9,0]]
_ArrayDisplayCut($a)

Func _ArrayDisplayCut(ByRef $avArray, $sTitle = "Array: ListView Display", $iItemLimit = -1, $sSeparator = "", $sReplace = "|")
    If Not IsArray($avArray) Then Return SetError(1, 0, 0)
    ; Dimension checking
    Local $iDimension = UBound($avArray, 0), $iSubMax = UBound($avArray, 2) - 1
    If $iDimension > 2 Then Return SetError(2, 0, 0)
    If $iSubMax < 0 Then $iSubMax = 0
    ; Separator handling
;~  If $sSeparator = "" Then $sSeparator = Chr(1)
    If $sSeparator = "" Then $sSeparator = Chr(124)
    ; Declare variables
    Local $i, $j, $vTmp, $aItem, $avArrayText, $iBuffer = 64
    Local $iColLimit = 250, $iLVIAddUDFThreshold = 4000, $iWidth = 640, $iHeight = 480
    Local $iOnEventMode = Opt("GUIOnEventMode", 0), $sDataSeparatorChar = Opt("GUIDataSeparatorChar", $sSeparator)

    ; GUI Constants
    Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 0x66
    Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 0x40
    Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 0x0200
    Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 0x2
    Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 0x4
    Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
    Local Const $_ARRAYCONSTANT_LVIF_PARAM = 0x4
    Local Const $_ARRAYCONSTANT_LVIF_TEXT = 0x1
    Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (0x1000 + 29)
    Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (0x1000 + 4)
    Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (0x1000 + 44)
    Local Const $_ARRAYCONSTANT_LVM_INSERTITEMA = (0x1000 + 7)
    Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54)
    Local Const $_ARRAYCONSTANT_LVM_SETITEMA = (0x1000 + 6)
    Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 0x20
    Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 0x1
    Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 0x8
    Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 0x0200
    Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 0x00010000
    Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 0x00020000
    Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 0x00040000
    Local Const $_ARRAYCONSTANT_tagLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns"

    Local $iAddMask = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
    Local $tItem = DllStructCreate($_ARRAYCONSTANT_tagLVITEM), $pItem = DllStructGetPtr($tItem)
    DllStructSetData($tItem, "Param", 0)

    ; Set header up
    Local $sHeader = "Row"
    For $i = 0 To $iSubMax
        $sHeader &= $sSeparator & "Col " & $i
    Next

    ; Set interface up
    Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
    Local $aiGUISize = WinGetClientSize($hGUI)
    Local $hListView = 0
    Local $hCut = GUICtrlCreateButton("Cut Selected", 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20)
    GUICtrlSetResizing($hCut, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)

    Local $iRefresh = 1
    While 1
        If $iRefresh Then
            $iRefresh = 0
            GUISetState(@SW_LOCK, $hGUI)
            ; Create listview
            If $hListView Then GUICtrlDelete($hListView)
            $hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
            GUICtrlSetResizing($hListView, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
            GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
            GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
            GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
            Local $iUBound = UBound($avArray, 1) - 1
            If $iUBound >=0 Then
                ; Set limits for dimensions
                If $iSubMax > $iColLimit Then $iSubMax = $iColLimit
                If $iItemLimit = 1 Then $iItemLimit = $iLVIAddUDFThreshold
                If $iItemLimit < 1 Then $iItemLimit = $iUBound
                If $iUBound > $iItemLimit Then $iUBound = $iItemLimit
                If $iLVIAddUDFThreshold > $iUBound Then $iLVIAddUDFThreshold = $iUBound
                ; Convert array into text for listview
                Local $avArrayText[$iUBound + 1]
                For $i = 0 To $iUBound
                    $avArrayText[$i] = "[" & $i & "]"
                    For $j = 0 To $iSubMax
                        ; Get current item
                        If $iDimension = 1 Then
                            $vTmp = $avArray[$i]
                        Else
                            $vTmp = $avArray[$i][$j]
                        EndIf
                        ; Add to text array
                        $vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1)
                        $avArrayText[$i] &= $sSeparator & $vTmp

                        ; Set max buffer size
                        $vTmp = StringLen($vTmp)
                        If $vTmp > $iBuffer Then $iBuffer = $vTmp
                    Next
                Next
                $iBuffer += 1
                Local $tBuffer = DllStructCreate("char Text[" & $iBuffer & "]"), $pBuffer = DllStructGetPtr($tBuffer)
                DllStructSetData($tItem, "Text", $pBuffer)
                DllStructSetData($tItem, "TextMax", $iBuffer)
                ; Fill listview
                For $i = 0 To $iLVIAddUDFThreshold
                    GUICtrlCreateListViewItem($avArrayText[$i], $hListView)
                Next
                For $i = ($iLVIAddUDFThreshold + 1) To $iUBound
                    $aItem = StringSplit($avArrayText[$i], $sSeparator)
                    DllStructSetData($tBuffer, "Text", $aItem[1])

                    ; Add listview item
                    DllStructSetData($tItem, "Item", $i)
                    DllStructSetData($tItem, "SubItem", 0)
                    DllStructSetData($tItem, "Mask", $iAddMask)
                    GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_INSERTITEMA, 0, $pItem)

                    ; Set listview subitem text
                    DllStructSetData($tItem, "Mask", $_ARRAYCONSTANT_LVIF_TEXT)
                    For $j = 2 To $aItem[0]
                        DllStructSetData($tBuffer, "Text", $aItem[$j])
                        DllStructSetData($tItem, "SubItem", $j - 1)
                        GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETITEMA, 0, $pItem)
                    Next
                Next
                ; ajust window width
                $iWidth = 0
                For $i = 0 To $iSubMax + 1
                    $iWidth += GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0)
                Next
                If $iWidth < 250 Then $iWidth = 230
                WinMove($hGUI, "", Default, Default, $iWidth + 20)
                ; Show dialog
            EndIf
            GUISetState(@SW_UNLOCK, $hGUI)
        EndIf
        GUISetState(@SW_SHOW, $hGUI)

        While 1
            Switch GUIGetMsg()
                Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
                ExitLoop 2

                Case $hCut
                    ; Get selected indices [ _GUICtrlListView_GetSelectedIndices($hListView, True) ]
                    Local $aiCurItems[1] = [0]
                    For $i = 0 To GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
                        If GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $i, 0x2) Then
                            $aiCurItems[0] += 1
                            ReDim $aiCurItems[$aiCurItems[0] + 1]
                            $aiCurItems[$aiCurItems[0]] = $i
                        EndIf
                    Next
                    ; Generate clipboard text
                    If $aiCurItems[0] Then
                        Local $sClip = ""
                        For $i = UBound($aiCurItems) - 1 To 1 Step -1
                            $sClip = $avArrayText[$aiCurItems[$i]] & @CRLF & $sClip
                            _ArrayDelete($avArray, $aiCurItems[$i])
                        Next
                        $iRefresh=1
                        ClipPut($sClip)
                        ExitLoop 1
                    EndIf
            EndSwitch
        WEnd
    WEnd
    GUIDelete($hGUI)

    Opt("GUIOnEventMode", $iOnEventMode)
    Opt("GUIDataSeparatorChar", $sDataSeparatorChar)

    Return 1
EndFunc
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:41, 20-03-2009 | #12


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


спасибо

-------
Хочу научиться писать драйвера на с++


Отправлено: 08:35, 20-03-2009 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] _arrayDisplay с определённой ячейки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как убрать запрос UAC для определённой программы NA-kun Microsoft Windows 7 19 28-10-2012 02:06
CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ? SANIOK_AV Скриптовые языки администрирования Windows 26 21-06-2011 12:25
[решено] Получить значение ячейки из таблицы HTML Lodoss AutoIt 2 30-12-2009 07:15
Разрешить установку только из определённой папки Gangabass Microsoft Windows NT/2000/2003 4 20-04-2009 09:15
[решено] Изменение цвета фона ячейки таблицы при нажатии чекбокса dmitryst Вебмастеру 4 18-09-2008 03:59




 
Переход