1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Ilse

Beiträge von Ilse

  • Listview mit Hyperlink

    • Ilse
    • 22. Juni 2011 um 11:30

    Hallo Bugfix,

    ich habe mir die Dateien heruntergeladen
    erhalte aber diesen Fehler:

    ERROR: $HDN_FIRST previously declared as a 'Const'

    Das ist die UDF
    _ListView_SysLink

    Spoiler anzeigen
    [autoit]


    ;===================================================================================================
    ; UDF Name: _ListView_SysLink
    ; Description: Set of functions to set Hyperlink (via SysLink control) for ListView items.
    ;
    ; Requirement(s): AutoIt 3.2.12.1 and above
    ;
    ; Author(s): G.Sandler (a.k.a MsCreatoR), initial concept idea by R.Gilman (a.k.a rasim), this UDF idea by ptrex!
    ;
    ; History:
    ; v1.0 [10.10.2008, 02:20]
    ; First release.
    ;
    ; v1.1 [21.10.2008, 00:03]
    ; - Added handler to activate the main window when SysLink control is focused.
    ; This handler also set hot cursor ($OCR_NO) while user trying to drag the SysLink control.
    ;
    ; - Added 2 more functions:
    ; _GUICtrlListView_SysLinkSetLinkInfo() - Sets link information.
    ; _GUICtrlListView_SysLinkGetLinkInfo() - Gets link information.
    ;
    ; - Added WM_CTLCOLORSTATIC registration to set bk color for the SysLink control.
    ; (To change the color just set $nSysLinkBkColor variable to desired color).
    ;
    ; - Rewrited parameters for the _GUICtrlListView_SysLinkCreate() function...
    ; * $sTextFormat splitted into different 3 parameters: $sTitle, $sLink and $iLnkID.
    ; * Added $iFillItemText - Allows to fill item text (SysLink text),
    ; so the LV item will have the same text as SysLink control. Default is 1.
    ;
    ; - Fixed inactive GUI window after executing url.
    ;===================================================================================================
    ;

    [/autoit] [autoit][/autoit] [autoit]

    #include-once
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>
    #include <WinAPI.au3>
    #include <Misc.au3>
    #include <GuiListView.au3>
    ;

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $OCR_APPSTARTING = 32650
    Global Const $OCR_NORMAL = 32512
    Global Const $OCR_CROSS = 32515
    Global Const $OCR_HAND = 32649
    Global Const $OCR_IBEAM = 32513
    Global Const $OCR_NO = 32648
    Global Const $OCR_SIZEALL = 32646
    Global Const $OCR_SIZENESW = 32643
    Global Const $OCR_SIZENS = 32645
    Global Const $OCR_SIZENWSE = 32642
    Global Const $OCR_SIZEWE = 32644
    Global Const $OCR_UP = 32516
    Global Const $OCR_WAIT = 32514

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $SW_HIDE = 0
    Global Const $SW_SHOW = 5

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $HDN_FIRST = -300
    Global Const $HDN_ITEMCHANGINGA = $HDN_FIRST - 0
    Global Const $HDN_ITEMCHANGEDA = $HDN_FIRST - 1

    [/autoit] [autoit][/autoit] [autoit]

    ;Global Const $LOGPIXELSX = 88
    ;Global Const $PROOF_QUALITY = 2

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $ICC_LINK_CLASS = 0x8000
    Global Const $LIF_ITEMINDEX = 0x1
    Global Const $LIF_STATE = 0x2
    Global Const $LIF_URL = 0x8
    Global Const $LIF_ITEMID = 0x4
    Global Const $LIS_ENABLED = 0x2
    Global Const $LIS_FOCUSED = 0x1
    Global Const $LIS_VISITED = 0x4
    Global Const $MAX_LINKID_TEXT = 48
    Global Const $L_MAX_URL_LENGTH = (2048 + 32 + StringLen("://"))
    Global Const $WC_LINK = "SysLink"

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $COINIT_MULTITHREADED = 0x0
    Global Const $COINIT_APARTMENTTHREADED = 0x2
    Global Const $COINIT_DISABLE_OLE1DDE = 0x4
    Global Const $COINIT_SPEED_OVER_MEMORY = 0x8

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $LM_SETITEM = ($WM_USER + 0x302)
    Global Const $LM_GETIDEALHEIGHT = ($WM_USER + 0x301)
    Global Const $LM_GETITEM = ($WM_USER + 0x303)
    Global Const $LM_HITTEST = ($WM_USER + 0x300)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $LITEM = "int;int;int;int;wchar[" & $MAX_LINKID_TEXT & "];wchar[" & $L_MAX_URL_LENGTH & "]"
    Global Enum $iMask = 1, $iLink, $iState, $iStateMask, $iID, $iUrl

    [/autoit] [autoit][/autoit] [autoit]

    Global $aSysLink[1][1]
    Global $hLastSysLink = -1
    Global $iSetFirstSubItem = True
    Global $iSysLinkIsActive = 0
    Global $nSysLinkBkColor = 0xFFFFFF
    Global $nSysLinkStockObject = $WHITE_BRUSH

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_CTLCOLORSTATIC, "_ListView_SysLink_WM_CTLCOLORSTATIC")
    GUIRegisterMsg($WM_NOTIFY, "_ListView_SysLink_NOTIFY_EVENTS")
    GUIRegisterMsg($WM_SIZE, "_ListView_SysLink_NOTIFY_EVENTS")
    GUIRegisterMsg($WM_ACTIVATE, "_ListView_SysLink_WM_ACTIVATE")

    [/autoit] [autoit][/autoit] [autoit]

    Func _ListView_SysLink_NOTIFY_EVENTS($hWnd, $nMsg, $wParam, $lParam)
    If $nMsg = $WM_SIZE Then
    For $i = 1 To $aSysLink[0][0]
    _GUICtrlListView_SysLinkSetItem($i)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $GUI_RUNDEFMSG
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local Const $tagNMLINK = $tagNMHDR & ";UINT mask; int iLink; UINT state; UINT stateMask; WCHAR szID[48]; WCHAR szUrl[2083]"
    Local $tNMHDR, $iCode, $hWndFrom, $hLV

    [/autoit] [autoit][/autoit] [autoit]

    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $iCode = DllStructGetData($tNMHDR, "Code")
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")

    [/autoit] [autoit][/autoit] [autoit]

    $hLV = GUIGetCursorInfo($hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error Then $hLV = GUICtrlGetHandle($hLV[4])
    If Not IsHWnd($hLV) Then $hLV = -1

    [/autoit] [autoit][/autoit] [autoit]

    Switch $iCode
    Case $NM_CLICK, $NM_RETURN ;Handle the SysLink clicks
    For $i = 1 To $aSysLink[0][0]
    If $aSysLink[$i][0] = $hWndFrom Then
    Local $NMHDR = DllStructCreate($tagNMLINK, $lParam)

    [/autoit] [autoit][/autoit] [autoit]

    Local $iLink = DllStructGetData($NMHDR, "iLink")
    Local $szURL = DllStructGetData($NMHDR, "szURL")
    Local $szID = DllStructGetData($NMHDR, "szID")

    [/autoit] [autoit][/autoit] [autoit]

    If $szURL <> "" Then
    $iSysLinkIsActive = 1
    WinActivate($hWnd) ;Fix for inactive GUI window after executing url

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("shell32.dll", "long", "ShellExecute", "hwnd", 0, "string", "", "string", $szURL, _
    "string", "", "string", "", "long", @SW_SHOWNORMAL)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aLink_Info = _GUICtrlListView_SysLinkGetLinkInfo($aSysLink[$i][0])
    If @error Then ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SysLinkSetLinkInfo($aSysLink[$i][0], $szURL, $szID, BitOR($aLink_Info[1], $LIS_VISITED))
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ExitLoop
    EndIf
    Next
    Case $HDN_ITEMCHANGEDA, $HDN_ITEMCHANGEDW, $LVN_ENDSCROLL ;Move the SysLink window
    For $i = 1 To $aSysLink[0][0]
    _GUICtrlListView_SysLinkSetItem($i, $hLV)
    Next
    Case $HDN_ITEMCHANGINGA, $HDN_ITEMCHANGINGW
    _WinAPI_RedrawWindow($hLV, 0, 0, $RDW_INVALIDATE)
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ListView_SysLink_WM_ACTIVATE($hWnd, $nMsg, $wParam, $lParam)
    Local $nActive = BitAnd($wParam, 0x0000FFFF)
    Local $hActWnd = $lParam

    [/autoit] [autoit][/autoit] [autoit]

    If $nActive Or $hActWnd = $hWnd Then Return $GUI_RUNDEFMSG

    [/autoit] [autoit][/autoit] [autoit]

    Local $hHovered_Ctrl = _ControlGetHovered()
    If $hHovered_Ctrl <> $hActWnd And $hHovered_Ctrl <> $hWnd Then Return $GUI_RUNDEFMSG

    [/autoit] [autoit][/autoit] [autoit]

    Local $aCurInfo = GUIGetCursorInfo($hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    If Not @error And $aCurInfo[2] = 1 Then
    Local $ahCursor = DllCall("user32.dll", "int", "LoadCursorW", "hwnd", 0, "int", $OCR_NORMAL)
    DllCall("user32.dll", "int", "SetSystemCursor", "int", $ahCursor[0], "int", $OCR_NO)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSysLink[0][0]
    If $aSysLink[$i][0] <> $hActWnd Then WinSetState($aSysLink[$i][0], "", @SW_DISABLE)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    While $aCurInfo[2] = 1
    $aCurInfo = GUIGetCursorInfo($hWnd)
    If @error Then ExitLoop

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    $ahCursor = DllCall("user32.dll", "int", "LoadCursorW", "hwnd", 0, "int", $OCR_NO)
    DllCall("user32.dll", "int" , "SetSystemCursor", "int", $ahCursor[0], "int", $OCR_NORMAL)

    [/autoit] [autoit][/autoit] [autoit]

    If Not $iSysLinkIsActive Then
    If _ControlGetHovered() <> $hActWnd Then DllCall("user32.dll", "int", "MessageBeep", "int", -1)
    WinActivate($hWnd)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSysLink[0][0]
    WinSetState($aSysLink[$i][0], "", @SW_ENABLE)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $iSysLinkIsActive = False
    ElseIf Not @error And $aCurInfo[3] = 1 Then
    WinActivate($hActWnd)
    WinActivate($hWnd)
    Else
    WinActivate($hWnd)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ListView_SysLink_WM_CTLCOLORSTATIC($hWnd, $Msg, $wParam, $lParam)
    For $i = 1 To $aSysLink[0][0]
    If $lParam = $aSysLink[$i][0] Then
    ;DllCall("gdi32.dll", "int", "SetBkMode", "hwnd", $wParam, "int", $TRANSPARENT)
    ;DllCall("gdi32.dll", "int", "SetTextColor", "hwnd", $wParam, "int", 0xFF0000)
    DllCall("gdi32.dll", "int", "SetBkColor", "hwnd", $wParam, "int", $nSysLinkBkColor)

    [/autoit] [autoit][/autoit] [autoit]

    Return _WinAPI_GetStockObject($nSysLinkStockObject)
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===================================================================================================
    ; Function Name: _GUICtrlListView_SysLinkCreate()
    ; Description: Inserts a Hyperlink (SysLink control) into the ListView Item.
    ; Syntax.........: _GUICtrlListView_SysLinkCreate($sHwnd, $sItemIndex[, $sSubItemIndex])
    ; Parameter(s): $sHwnd - Handle to the ListView control.
    ; $sTitle - Link Title (i.e: "AutoIt Home page").
    ; $sLink - Link URL (i.e: "http://autoitscript.com").
    ; $sItemIndex - Zero based index of the item at which the progressbar should be inserted.
    ; $sSubItemIndex - [Optional] Zero based index of the subitem where progressbar should be placed, +default is 1.
    ; $sLnkID - [Optional] SysLink identifier (i.e: "LInkIDURL+ID").
    ; $iFillItemText - [Optional] If this parameter = 1 (it is the default),
    ; the function will set the item (by $iItemIndex and $iSubItemIndex) with text from $sTitle.
    ;
    ; Return Value(s): Returns the Handle of the new SysLink control.
    ; Requirement(s): AutoIt 3.2.12.1 and above.
    ; Note(s):
    ;
    ; Author(s): G.Sandler (a.k.a MsCreatoR)
    ;===================================================================================================
    Func _GUICtrlListView_SysLinkCreate($hWnd, $sTitle, $sLink, $iItemIndex, $iSubItemIndex=0, $sLnkID="", $iFillItemText=1)
    If $hWnd = -1 Then $hWnd = $hLastSysLink

    [/autoit] [autoit][/autoit] [autoit]

    If $iFillItemText = 1 Then _GUICtrlListView_SetItemText($hWnd, $iItemIndex, $sTitle, $iSubItemIndex)

    [/autoit] [autoit][/autoit] [autoit]

    ;Local $nBkColor = _WinAPI_GetSysColor($COLOR_3DFACE)
    ;GUICtrlSetBkColor($hWnd, $nBkColor)

    [/autoit] [autoit][/autoit] [autoit]

    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aRect = _GUICtrlListView_GetSubItemRect($hWnd, $iItemIndex, $iSubItemIndex)
    If $iSetFirstSubItem And $iSubItemIndex = 0 Then $aRect = _GUICtrlListView_GetItemRect($hWnd, $iItemIndex, 2)

    [/autoit] [autoit][/autoit] [autoit]

    Local $sTextFormat = StringFormat('<a href="%s" ID="%s">%s</a>', $sLink, $sLnkID, $sTitle)

    [/autoit] [autoit][/autoit] [autoit]

    $aSysLink[0][0] += 1
    ReDim $aSysLink[$aSysLink[0][0] + 1][4]

    [/autoit] [autoit][/autoit] [autoit]

    $aSysLink[$aSysLink[0][0]][0] = _WinAPI_CreateWindowEx($WS_EX_TOPMOST, $WC_LINK, $sTextFormat, _
    BitOR($WS_POPUP, $WS_VISIBLE, $WS_CHILD), $aRect[0], $aRect[1], $aRect[2] - $aRect[0], $aRect[3] - $aRect[1], $hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("user32.dll", "int", "SetParent", "hwnd", $aSysLink[$aSysLink[0][0]][0], "hwnd", $hWnd)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_SysLinkSetLinkInfo($aSysLink[$aSysLink[0][0]][0], $sLink, $sLnkID)

    [/autoit] [autoit][/autoit] [autoit]

    $aSysLink[$aSysLink[0][0]][1] = $iItemIndex
    $aSysLink[$aSysLink[0][0]][2] = $iSubItemIndex
    $aSysLink[$aSysLink[0][0]][3] = $hWnd

    [/autoit] [autoit][/autoit] [autoit]

    $hLastSysLink = $aSysLink[$aSysLink[0][0]][0]

    [/autoit] [autoit][/autoit] [autoit]

    Return $hLastSysLink
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlListView_SysLinkDelete($hWnd)
    Local $aTmpArr[1][1]

    [/autoit] [autoit][/autoit] [autoit]

    If $hWnd = -1 Then $hWnd = $hLastSysLink

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSysLink[0][0]
    If $aSysLink[$i][0] <> $hWnd Then
    $aTmpArr[0][0] += 1
    ReDim $aTmpArr[$aTmpArr[0][0]+1][4]

    [/autoit] [autoit][/autoit] [autoit]

    $aTmpArr[$aTmpArr[0][0]][0] = $aSysLink[$i][0]
    $aTmpArr[$aTmpArr[0][0]][1] = $aSysLink[$i][1]
    $aTmpArr[$aTmpArr[0][0]][2] = $aSysLink[$i][2]
    $aTmpArr[$aTmpArr[0][0]][3] = $aSysLink[$i][3]
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $aSysLink = $aTmpArr

    [/autoit] [autoit][/autoit] [autoit]

    Local $aResult = DllCall("User32.dll", "int", "DestroyWindow", "hwnd", $hWnd)
    If @error Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Return $aResult[0] <> 0
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlListView_SysLinkSetItem($iID, $hLV=-1)
    If $iID > $aSysLink[0][0] Or $iID < 1 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $iItemIndex = $aSysLink[$iID][1]
    Local $iSubItemIndex = $aSysLink[$iID][2]
    Local $LV_hWnd = $aSysLink[$iID][3]

    [/autoit] [autoit][/autoit] [autoit]

    If $hLV <> -1 And $LV_hWnd <> $hLV Then Return SetError(2, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aRect = _GUICtrlListView_GetSubItemRect($LV_hWnd, $iItemIndex, $iSubItemIndex)
    If $iSetFirstSubItem And $iSubItemIndex = 0 Then $aRect = _GUICtrlListView_GetItemRect($LV_hWnd, $iItemIndex, 2)
    If $aRect[0] = 0 And $iSubItemIndex <> 0 Then Return SetError(3, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    If $aRect[1] < 20 And BitAND(WinGetState($aSysLink[$iID][0]), 2) Then
    _WinAPI_ShowWindow($aSysLink[$iID][0], $SW_HIDE)
    ElseIf $aRect[1] >= 20 And BitAND(WinGetState($aSysLink[$iID][0]), 2) = 0 Then
    _WinAPI_ShowWindow($aSysLink[$iID][0], $SW_SHOW)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_MoveWindow($aSysLink[$iID][0], $aRect[0], $aRect[1], $aRect[2] - $aRect[0], $aRect[3] - $aRect[1], True)
    _WinAPI_RedrawWindow($aSysLink[$iID][0], 0, 0, $RDW_INVALIDATE)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlListView_SysLinkSetFont($hWnd, $sFontName="Arial", $iFontSize=10, $iFontWeight=400, $iFontItalic=0, $iFontUnderline=0, $iFontStrikeThru=0)
    Local $aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", 0, "long", $LOGPIXELSX)
    If @error Or $aRet[0] = -1 Then Return SetError(1, 0, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $lfHeight = Round(($iFontSize * $aRet[2]) / 72, 0)
    Local $stFont = DllStructCreate("int;int;int;int;int;byte;byte;byte;byte;byte;byte;byte;byte;char[32]")

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stFont, 1, $lfHeight + 1)
    DllStructSetData($stFont, 5, $iFontWeight)
    DllStructSetData($stFont, 6, $iFontItalic)
    DllStructSetData($stFont, 7, $iFontUnderline)
    DllStructSetData($stFont, 8, $iFontStrikeThru)
    DllStructSetData($stFont, 12, $PROOF_QUALITY)
    DllStructSetData($stFont, 14, $sFontName)

    [/autoit] [autoit][/autoit] [autoit]

    If $hWnd = -1 Then $hWnd = $hLastSysLink

    [/autoit] [autoit][/autoit] [autoit]

    $aRet = DllCall("gdi32.dll", "long", "CreateFontIndirect", "long", DllStructGetPtr($stFont))
    DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, "int", $WM_SETFONT, "long", $aRet[0], "int", True)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlListView_SysLinkSetLinkInfo($hWnd, $s_Link, $s_szID, $v_State=-1, $iLink_Num=0)
    Local $vMask

    [/autoit] [autoit][/autoit] [autoit]

    If $v_State = -1 Then
    $vMask = BitOR($LIF_URL, $LIF_ITEMINDEX, $LIF_ITEMID)
    Else
    $vMask = BitOR($LIF_URL, $LIF_ITEMINDEX, $LIF_STATE, $LIF_ITEMID)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $stLink = DllStructCreate($LITEM)

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stLink, $iMask, $vMask)
    DllStructSetData($stLink, $iLink, $iLink_Num)

    [/autoit] [autoit][/autoit] [autoit]

    If $v_State <> - 1 Then
    DllStructSetData($stLink, $iState, $v_State)
    DllStructSetData($stLink, $iStateMask, $v_State)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stLink, $iID, $s_szID)
    DllStructSetData($stLink, $iUrl, $s_Link)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aHL = DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, _
    "int", $LM_SETITEM, "int", 0, "ptr", DllStructGetPtr($stLink))

    [/autoit] [autoit][/autoit] [autoit]

    Return $aHL[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _GUICtrlListView_SysLinkGetLinkInfo($hWnd, $iLink_Num=0)
    Local $stLink = DllStructCreate($LITEM)

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($stLink, $iMask, BitOR($LIF_URL, $LIF_ITEMINDEX, $LIF_STATE, $LIF_ITEMID))
    DllStructSetData($stLink, $iLink, $iLink_Num)
    DllStructSetData($stLink, $iStateMask, BitOR($LIS_ENABLED, $LIS_FOCUSED, $LIS_VISITED))

    [/autoit] [autoit][/autoit] [autoit]

    Local $aHL = DllCall("user32.dll", "int", "SendMessage", "hwnd", $hWnd, _
    "int", $LM_GETITEM, "int", 0, "ptr", DllStructGetPtr($stLink))

    [/autoit] [autoit][/autoit] [autoit]

    If @error Or Not $aHL[0] Then Return SetError(1, 1, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hLV = -1

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSysLink[0][0]
    If $aSysLink[$i][0] = $hWnd Then
    $hLV = $aSysLink[$i][3]
    ExitLoop
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Local $sRet = _
    DllStructGetData($stLink, $iState) & "|" & _
    DllStructGetData($stLink, $iUrl) & "|" & _
    DllStructGetData($stLink, $iID) & "|" & $hLV

    [/autoit] [autoit][/autoit] [autoit]

    Return StringSplit($sRet, "|")
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ControlGetHovered($iGetDlgCtrlID=0)
    Local $iOld_Opt_MCM = Opt("MouseCoordMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aRet = DllCall("user32.dll", "int", "WindowFromPoint", _
    "long", MouseGetPos(0), _
    "long", MouseGetPos(1))

    [/autoit] [autoit][/autoit] [autoit]

    If $iGetDlgCtrlID Then $aRet = DllCall("user32.dll", "int", "GetDlgCtrlID", "hwnd", $aRet[0])

    [/autoit] [autoit][/autoit] [autoit]

    Opt("MouseCoordMode", $iOld_Opt_MCM)

    [/autoit] [autoit][/autoit] [autoit]

    Return $aRet[0]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    und das ist die Listview

    Spoiler anzeigen
    [autoit]


    #include <_ListView_SysLink.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("ListView with SysLink Control!", 420, 530, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))

    [/autoit] [autoit][/autoit] [autoit]

    $hListView1 = GUICtrlCreateListView("Files|Path|Links", 10, 10, 400, 240, BitOR($LVS_REPORT, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUICtrlCreateListViewItem("AutoIT|C:\Program Files\AutoIt3", $hListView1)
    GUICtrlCreateListViewItem("Opera|C:\Program Files\Opera", $hListView1)
    GUICtrlCreateListViewItem("Script|C:\MyScripts", $hListView1)

    [/autoit] [autoit][/autoit] [autoit]

    $nSysLinkBkColor = 0xC0C0C0
    $nSysLinkStockObject = $LTGRAY_BRUSH

    [/autoit] [autoit][/autoit] [autoit]

    $hListView2 = GUICtrlCreateListView("Name|Links", 10, 270, 400, 240, BitOR($LVS_REPORT, $WS_BORDER, $WS_CLIPSIBLINGS))
    GUICtrlCreateListViewItem("Some Name", $hListView2)

    [/autoit] [autoit][/autoit] [autoit]

    $hSysLink1 = _GUICtrlListView_SysLinkCreate($hListView1, "AutoIt Script Home Page", "http://autoitscript.com", 0, 2)
    _GUICtrlListView_SysLinkSetFont(-1, "Tahoma", 9.5)

    [/autoit] [autoit][/autoit] [autoit]

    $hSysLink2 = _GUICtrlListView_SysLinkCreate($hListView1, "Opera Home Page", "http://opera.com", 1, 2)
    _GUICtrlListView_SysLinkSetFont(-1, "Tahoma", 9.5)

    [/autoit] [autoit][/autoit] [autoit]

    $hSysLink3 = _GUICtrlListView_SysLinkCreate($hListView1, "My Scripts Home Page?", "http://creator-lab.ucoz.ru", 2, 2)
    _GUICtrlListView_SysLinkSetFont(-1, "Tahoma", 9.5)

    [/autoit] [autoit][/autoit] [autoit]

    $hSysLink1_2 = _GUICtrlListView_SysLinkCreate($hListView2, "Some other Home Page", "http://creator-lab.ucoz.ru", 0, 1)
    _GUICtrlListView_SysLinkSetFont(-1, "Arial", 10.5)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetBkColor($hListView1, $nSysLinkBkColor)
    GUICtrlSetBkColor($hListView2, $nSysLinkBkColor)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg($hListView1, $LVM_SETCOLUMNWIDTH, 0, 80)
    GUICtrlSendMsg($hListView1, $LVM_SETCOLUMNWIDTH, 1, 150)
    GUICtrlSendMsg($hListView1, $LVM_SETCOLUMNWIDTH, 2, 120)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg($hListView2, $LVM_SETCOLUMNWIDTH, 0, 230)
    GUICtrlSendMsg($hListView2, $LVM_SETCOLUMNWIDTH, 1, 115)

    [/autoit] [autoit][/autoit] [autoit]

    ;Here we add ID to the $hSysLink1
    _GUICtrlListView_SysLinkSetLinkInfo($hSysLink1, "http://autoitscript.com", "AutoIt")

    [/autoit] [autoit][/autoit] [autoit]

    ;And now we check if it was added :)
    $aInfo = _GUICtrlListView_SysLinkGetLinkInfo($hSysLink1)
    $sInfo = StringFormat("Info For $hSysLink1:\n\nSysLink State\t\t= %i\nURL\t\t\t= %s\nID\t\t\t= %s\nParent ListView Handle\t= %s", _
    $aInfo[1], $aInfo[2], $aInfo[3], $aInfo[4])

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($sInfo)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $hGUI)

    [/autoit] [autoit][/autoit] [autoit]

    While GUIGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]

    krieg es leider nicht zum laufen!


    Grüße
    Ilse ;)

  • Listview mit Hyperlink

    • Ilse
    • 22. Juni 2011 um 09:51

    Hallo,

    weiß jemand wie man einen Hyperlink in eine Listview einbauen kann?

    Meine Versuche:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Const $programm = 'Tierliste'

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate($programm, 500, 250)
    $GuiBut_beenden = GUICtrlCreateButton('Beenden', 5, 5)
    $GuiList = GUICtrlCreateListView('Nr|Tiergattung|Adresse|', 80, 20, 400, 200, 0x0001, BitOR(0x00000001, 0x00000020, 0x00010000))
    GUICtrlCreateListViewItem('1|hunde|http://www.hunde.de', $GuiList)
    GUICtrlCreateListViewItem('2|katzen|http://www.katzen.de', $GuiList)
    _GUICtrlListView_SetColumnWidth($GuiList, 2, 50)
    GUISetState()
    Global $hWndListView = GUICtrlGetHandle($GuiList)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Do
    $aktion = GUIGetMsg()
    Switch $aktion
    Case $GuiList
    _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($GuiList))
    MsgBox(0, "Listview", "angeklickt=" & GUICtrlGetState($GuiList), 2)

    Case $GuiBut_beenden
    ContinueCase
    Case -3
    _GUICtrlListView_UnRegisterSortCallBack($hWndListView)
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    Until 0

    [/autoit]

    Ich meine wenn man in die 2. Spalte klickt (Gattung)
    daß dann der Link gestartet wird.
    Konnte nichts finden.

    Geht das?

    Liebe Grüße
    Ilse ;)

  • Listview Sortierung (geht/geht nicht)

    • Ilse
    • 22. Juni 2011 um 09:15

    Guten Morgen Kleiner,

    konnte mich gestern Abend nicht mehr melden.
    Leider stimmt die Sortierung nicht.

    Ich habe mal die Listview gefüllt:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Const $programm = 'Test'

    [/autoit] [autoit][/autoit] [autoit]

    Local $aLi

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate($programm, 500, 500)
    $GuiBut_beenden = GUICtrlCreateButton('Beenden', 5, 5)
    ;$GuiList = GUICtrlCreateListView('Datei|Zuletzt Bearbeitet|Größe', 80, 20, 400, 200, 0x0001, BitOR(0x00000001, 0x00000020, 0x00010000))
    $ListView1 = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3", 24, 72, 400, 400)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 400)
    _GUICtrlListView_SetColumnWidth($ListView1, 1, 75)
    _GUICtrlListView_SetColumnWidth($ListView1, 2, 75)

    [/autoit] [autoit][/autoit] [autoit]

    ;GUICtrlCreateListViewItem('A|qwer|zuio', $ListView1)
    ;GUICtrlCreateListViewItem('B|asdf|hjkl', $ListView1)
    ;GUICtrlCreateListViewItem('C|yxcv|vbnm', $ListView1)
    ;_GUICtrlListView_SimpleSort($ListView1, $B_DESCENDING, 3)
    #endregion ### END Koda GUI section ###
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 30
    $aLi = $i &" Nr."& '|'
    GUICtrlCreateListViewItem($aLi, $ListView1)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Do
    $aktion = GUIGetMsg()
    Switch $aktion
    Case $ListView1
    _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($ListView1))
    Case $GuiBut_beenden
    ContinueCase
    Case -3
    _GUICtrlListView_UnRegisterSortCallBack($hWndListView)
    Exit
    EndSwitch
    Until 0

    [/autoit]

    Die Nr. stimmen am Anfang.
    Klickt man auf sortieren, dann stimmt die Sortierung nicht mehr.

    Grüße
    Ilse ;)

  • Listview Sortierung (geht/geht nicht)

    • Ilse
    • 21. Juni 2011 um 18:46

    Hallo,

    ich habe ein Problem beim Sortieren der Listview

    Dieses Beispiel klappt:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Const $programm = 'Test'

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate($programm, 500, 250)
    $GuiBut_beenden = GUICtrlCreateButton('Beenden', 5, 5)
    ;$GuiList = GUICtrlCreateListView('Datei|Zuletzt Bearbeitet|Größe', 80, 20, 400, 200, 0x0001, BitOR(0x00000001, 0x00000020, 0x00010000))
    $ListView1 = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3", 24, 72, 798, 626)
    GUISetState(@SW_SHOW)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 400)
    _GUICtrlListView_SetColumnWidth($ListView1, 1, 75)
    _GUICtrlListView_SetColumnWidth($ListView1, 2, 75)
    GUICtrlCreateListViewItem('A|qwer|zuio', $ListView1)
    GUICtrlCreateListViewItem('B|asdf|hjkl', $ListView1)
    GUICtrlCreateListViewItem('C|yxcv|vbnm', $ListView1)
    ;_GUICtrlListView_SimpleSort($ListView1, $B_DESCENDING, 3)
    #EndRegion ### END Koda GUI section ###
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    Global $hWndListView = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_RegisterSortCallBack($hWndListView)
    Do
    $aktion = GUIGetMsg()
    Switch $aktion
    Case $ListView1
    _GUICtrlListView_SortItems($hWndListView, GUICtrlGetState($ListView1))
    Case $GuiBut_beenden
    ContinueCase
    Case -3
    _GUICtrlListView_UnRegisterSortCallBack($hWndListView)
    Exit
    EndSwitch
    Until 0

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Ich entferne nun diese Einträge

    Spoiler anzeigen
    [autoit]


    GUICtrlCreateListViewItem('A|qwer|zuio', $ListView1)
    GUICtrlCreateListViewItem('B|asdf|hjkl', $ListView1)
    GUICtrlCreateListViewItem('C|yxcv|vbnm', $ListView1)

    [/autoit]


    ...und Trage die Werte per Loop ein!
    Wenn ich nun per Array die Listview fülle,
    dann werden die Werte alle in die Listview eingetragen
    es läßt sich aber nichts sortieren!

    [autoit][/autoit][autoit][/autoit][autoit]

    ;.....
    If IsArray($aTiere) Then
    $d = $aTiere[$i]&"|"&$aTiere[$i + 1]&"|"&$aTiere[$i + 2]&""&"|"&$i

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateListViewItem($d, $Listview1)

    EndIf
    next

    [/autoit][autoit][/autoit][autoit]

    ;Die Listview wird korrekt gefüllt!
    ;Die Spaltenköpfe zeigen auch den Sortierungsbutton

    [/autoit]

    also, das klappt alles, aber die Sortierung geht nicht!

    Liebe Grüße
    Ilse ;)

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 14:22

    Hallo Seubo,

    dein Scriptbeispiel hat mir geholfen.
    Für alle anderen, die genau so leiden:

    [autoit][/autoit][autoit][/autoit][autoit]

    for $i = 0 to UBound($aAuswahl) -1 Step 2

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"erstes Suchmuster",$aAuswahl[$i]) ; das erste RegEx.....(.*?)...(.*?)
    MsgBox(0,"zweites Suchmuster",$aAuswahl[$i + 1])
    next

    [/autoit]

    Hoffe es ist so richtig!

    Oh Gott, jetzt muß das ganze in die Listview
    in die richtige Zeile, Spalte, Link......

    ...bin etwas fertig :wacko:

    Dank Euch für die guten Nerven

    Liebe Grüße
    Ilse ;)

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 13:32

    He Bugfix,

    ich hab's genau gelesen, aber nicht verstanden!
    Ich benötige also den Loop mit ubound?
    Wie ich index 0 im Loop anspreche, das verstehe ich nicht!!!!

    [autoit]


    for $i = 0 to UBound($aAuswahl) -1
    _ArrayDisplay($aAuswahl[1], "Ergebnis2???")
    next

    [/autoit]

    tut mir leid, ich stehe total auf dem Schlauch.... :(

    Grüße
    Ilse

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 13:00

    ...falsch ausgedrückt, sorry

    Das Array $aAuswahl zeigt mir:

    10 Reihen an
    und eine Spalte (col0) mit dem ersten Ergebnis

    wie komme ich an das zweite Ergenis v. RegEx ran? (col1,2,3,4...)

    [autoit]


    for $i = 0 to UBound($aAuswahl ,2) -1
    ;???

    [/autoit][autoit][/autoit][autoit]

    next

    [/autoit]


    komme einfach nicht weiter!

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 12:11

    Hallo Bugfix,

    noch ne Frage zu der Syntax ( das hab ich noch nicht verstanden)
    Also mein RegEx mit 2 Ergebnissen

    [autoit]


    $aAuswahl = StringRegExp($sSource,'<a\sclass="vip"\shref="(.*?)">(.*?)</a>',3)

    [/autoit]

    du meinst
    $aAuswahl[0] liefert das erste Ergebnis (.*?)
    $aAuswahl[1] das zweite (.*?)

    ---wie kriege ich die nun in das Array?


    ;) Ilse

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 11:46

    Morgen Dietmar,

    ja, das Ziel ist daß das alles in die Listview kommt,
    und daß man den Link anklicken kann.
    Also kleine Listview mit 20 Namen und Adressen
    Davon bin ich aber noch weit entfernt. :(

    Ich erhalte nun die beiden Felder mit RegEx
    Name und Webadresse

    Spoiler anzeigen


    Tiername|Link
    Name | Linkadresse
    Name | Linkadresse

    und das müsste je Zeile in die Listview...huh..

    Liebe Grüße
    Ilse ;)

  • RegEx + Arrays

    • Ilse
    • 21. Juni 2011 um 11:31

    Hallo,

    ich erhalte mit RegEx mehrere Infos in einer Zeile:

    [autoit]


    Dim $aAuswahl
    $aAuswahl = StringRegExp($sSource,'<a\sclass="vip"\shref="(.*?)">(.*?)</a>',3)

    [/autoit]


    also mehrere Felder
    1. Feld = (.*?)
    2. Feld = (.*?)...

    Wie kann ich mir die Felder anzeigen lassen?
    ich meine irgendwie so:

    Spoiler anzeigen


    1. Feld1 | Feld2
    2. Feld1 | Feld2


    Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 21. Juni 2011 um 10:51

    Morgen Bugfix,

    erstmal danke, für deine Hilfe. Es klappt juhu...

    Ich hatte nichts ignoriert,
    mit IsArray hab ich zig mal probiert, Variablen geprüft u.v.m.
    aber von ContinueLoop

    hab ich nichts gelesen. Und genau das war's!
    Davor erfolgte der Absturz,
    und nun läuft es durch!

    DANKE!

    Liebe Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 21. Juni 2011 um 10:02

    Guten Morgen zusammen,

    bin immer noch an diesem Problem.
    Folgende Fehlermeldung habe ich in dieser Zeile:
    Subscript used with non-Array variable

    [autoit]


    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i

    [/autoit]

    Was mir jetzt noch aufgefallen ist:
    Lasse ich den Loop so laufen

    [autoit]


    $d = $var[$i][1]&"|"&$Ergebnisse&"|"

    [/autoit]


    also $Ergebnisse ohne [0] dann passiert folgendes:
    in die Listview wird das eingetragen:
    Row0 Col0 keinen Wert (ok)
    Row1 Col0 1 (das ist komisch, woher kommt die 1)
    Row2 Col0 keinen Wert (ok) ...


    Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 20:39

    Hallo Dietmar,

    hm da ist mittlerweile viel drin.

    Folgendes:
    Der Loop beginnt so:

    [autoit]


    For $i = 0 To UBound($arControl)-1
    :dann werden Controls angelegt....usw.
    ;dann folgen diese Zeilen
    $sSource= BinaryToString(inetread($test)) ; Seite wird heruntergeladen
    $arrayfilter = StringRegExp($sSource,'\sclass="g-nav">([^"<\d\(\#\&]+)',3) ; Suchmuster wird geladen

    [/autoit][autoit][/autoit][autoit]

    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3) ; Suchmuster
    _ArrayDisplay($Ergebnisse, "Array Auswertung") ; das wird beim 2. Loop nicht mehr gezeigt!!!!!!

    [/autoit][autoit][/autoit][autoit]

    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i ; Spalten in Listview

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateListViewItem($d, $Listview1) ; wird in Listview geschrieben!

    [/autoit][autoit][/autoit][autoit][/autoit]

    Komisch ist, daß das listview ja gefüllt wird.
    Wenn das regexSuchmuster im Loop keinen Wert anzeigt, (2. Loop) sollte das mit dem Listvieweintrag
    nicht passieren. Deswegen zeigt auch _ArrayDisplay($Ergebnisse,"Array Auswertung") im 2. loop nichts an.
    Danach folgt der Absturz!

    Liebe Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 20:09

    Hallo Inferior,

    nee leider auch nicht!
    Komisch, der 1. Loop geht, der 3.4....
    hol ich $Ergebnisse kpl. raus läuft es auch.

    Hier mal der wichtige Teil des Loops

    [autoit]


    $sSource= BinaryToString(inetread($test)) ; Seite wird heruntergeladen
    $arrayfilter = StringRegExp($sSource,'\sclass="g-nav">([^"<\d\(\#\&]+)',3) ; Suchmuster wird geladen

    [/autoit][autoit][/autoit][autoit]

    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3) ; Suchmuster
    _ArrayDisplay($Ergebnisse[0], "Array Auswertung") ; das wird beim 2. Loop nicht mehr gezeigt!!!!!!

    [/autoit][autoit][/autoit][autoit]

    $d = $var[$i][1]&"|"&$Ergebnisse[0]&"|"&""&"|"&$i ; Spalten in Listview

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateListViewItem($d, $Listview1) ; wird in Listview geschrieben!

    [/autoit]


    habe mal folgendes probiert:

    [autoit]


    $Ergebnisse = StringRegExp($sSource,'countClass''>(.*?)</span>',3)
    _ArrayDisplay($Ergebnisse, "Array Auswertung")

    [/autoit]

    beim 2. Loop zeigt $Ergebnisse keinen Wert an.
    Also _ArrayDisplay wird nicht gezeigt!
    beim 1. + 3. Loop wird _ArrayDisplay angezeigt!

    Und genau diesen Fehler muß ich abfangen. Aber wie?


    ;) Ilse

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 19:37

    Brauch nochmal eure Hilfe!

    Ich kann den Error nicht abfangen!

    [autoit]


    If $Ergebnisse[0]>0 then
    GUICtrlCreateListViewItem($d, $Listview1)
    endif

    [/autoit]


    das hat nicht geklappt.
    Also wenn $Ergebnisse[0] leer ist
    dann stürzt alles ab.

    Wie kann ich das abfangen?

    ;) Ilse

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 19:00

    ...endlich,

    wie man auf die Spalten zugreifen kann, hab's jetzt:

    [autoit]


    $d = $i&"|"&$Ergebnisse[0]&"|"&$i&"|"&$i
    GUICtrlCreateListViewItem($d, $Listview1)

    [/autoit]

    und weiter geht's, das Sortieren wenn man auf die Kopfzeile der Spalte klickt!
    Probier mal weiter...

    Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 17:49

    Hallo,

    merci für die Hilfe.
    In meiner Listview kommt was an.
    Folgender Fehler passiert allerdings:
    Wenn das Array keinen Inhalt hat, stürzt alles ab:
    Muß ich also noch irgendwie abfangen.

    [autoit]


    GUICtrlCreateListViewItem($Ergebnisse[0], $Listview1)

    [/autoit]

    Wenn $Ergebnisse Werte hat, werden diese in Col0 eingetragen.

    Leider noch ein paar andere Fragen, was ich mit der Hilfe nicht hinbekommen habe:

    Frage: an Nuts:
    Wie kann ich die Spalte bestimmen z.B. Eintrag in Spalte 3
    und eine Spalte sortieren.

    Meine Listviewspalten sehen so aus:

    Spoiler anzeigen
    [autoit]


    $ListView1 = GUICtrlCreateListView("Rasse|Name|Papiere|vermittelt", 8, 8, 250, 150)

    [/autoit]

    nehmen wir an dieser Wert soll in Spalte3 Papiere

    [autoit]


    GUICtrlCreateListViewItem($Ergebnisse[0], $Listview1)

    [/autoit]

    kurze Frage noch an Bugfix:
    Müssen die Datensatztrenner für Listviews immer "|" sein, oder können es auch ; sein?

    Kannst du mir vielleicht ein Beispiel machen
    wie man diese Daten in das Listview $ListView1 importieren kann?

    Spoiler anzeigen


    RASSE|NAME|PAPIERE
    Schäferhund|Rex|ja
    Collie|Britta|nein
    Boxer|Shira|ja

    Sortieren, _GUICtrlListView_SimpleSort()
    hoffe das ist der richtige Befehl fürs Spalten sortieren.

    huh, viele Fragen...


    Liebe Grüße
    Ilse ;)

  • Listview Anzeige

    • Ilse
    • 20. Juni 2011 um 15:19

    Hallo,

    ich zerbrech mir die ganze Zeit schon den Kopf wie
    man dieses Problem lösen kann.
    Fang mal mit der Erklärung an:
    Es gibt mehrere Datensätze
    Es gibt einen Loop der die Datensätze nacheinander anzeigt

    Spoiler anzeigen
    [autoit]


    [Rasse]
    1=Schäferhund
    2=Collie
    3=Boxer
    [Name]
    1=Rex
    2=Britta
    3=Shira
    [Papiere]
    1=ja
    2=nein
    3=ja

    [/autoit]

    Das Ergebnis sollte später in einer Listview übersichtlich sortierbar sein.

    1. Frage zu den Daten
    In meinem Loop werden die Daten richtig nacheinander angezeigt

    Spoiler anzeigen


    also:
    Loop 1...
    Rex
    Schäferhund
    ja
    ...
    next

    Grundsätzliche Frage:

    Muß ich zuerst von diesen Daten (aus meinem Loop) eine ini (wie oben) oder csv anlegen?
    Die Daten erhalte ich per RegEx (zur Info) Also bräuchte normal keine ini? oder?

    2. Kann man die Daten direkt vom Loop an eine Listview schicken?


    Tappe da noch etwas im dunkeln

    Liebe Grüße
    Ilse ;)

  • _IENavigate (Fehler abfangen)

    • Ilse
    • 20. Juni 2011 um 13:49

    Hallo Misterspeed,

    dank dir für Lösung
    Mit Parameter 0 hatte ich schon experimentiert.

    Prima, klappt super

    Liebe Grüße
    Ilse

  • _IENavigate (Fehler abfangen)

    • Ilse
    • 20. Juni 2011 um 12:36

    Hallo zusammen,

    ich stehe vor folgendem Problem:
    Mit _IENavigate($oIE[$iIE],$Link)
    lass ich mir mehrere Seiten nacheinander anzeigen.

    Wie kann ich in einem Loop
    wenn z.B. eine Seite länger als 10 Sekunden für die anzeige braucht
    automatisch weitergehen (überspringen)?

    [autoit][/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($arControl)-1

    [/autoit][autoit][/autoit][autoit]

    _IENavigate($oIE[$iIE],$Link)
    ;falls zu lange
    ;meldung
    ;die nächste Seite

    [/autoit][autoit][/autoit][autoit]

    next

    [/autoit]

    Es werden zB. 3 Seiten gezeigt, die 4. braucht ewig lange...
    Ich möchte daß z.B. für jede Seite eine Zeitbeschränkrung
    drin ist (bis geladen, wenn nicht, dann weiter)

    geht das?

    Liebe Grüße
    Ilse ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™