Liestview Formatierung...

  • Hallo kara2010,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial Sehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deiner Frage: hier ist ein kleines Beispiel wie man Icons in einer LV anzeigt:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=LV_ImageList.exe
    #AutoIt3Wrapper_UseUpx=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs ------------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: AutoBert: http://www.autoit.de/index.php?page…7402#post187402

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

    Skriptbeispiel für den Umgang mit GUICtrlCreateListView, _GUICtrlListView_AddColumn, _GUICtrlListView_AddItem,
    _GUICtrlListView_AddSubItem, _GUICtrlListView_SetImageList, _GUIImageList_AddIcon, _GUIImageList_GetImageCount
    #ce -------------------------------------------------------------------------------------------------------------------------
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    #cs
    [0]|10
    [1]|c:\Dokumente und Einstellungen\Bert\Eigene Dateien\beetle.icl
    [2]|c:\Dokumente und Einstellungen\Bert\Eigene Dateien\beetle3.icl
    [3]|c:\Programme\AutoIt3\123\Lessons\IconSet.icl
    [4]|c:\Programme\AutoIt3\Downloads\Eukalyptus\Recorder\Record.icl
    [5]|c:\Programme\AutoIt3\Downloads\nuts\Icon-Prob\dll\Icons\IconLib.icl
    [6]|c:\Programme\AutoIt3\Downloads\nuts\Icon-Prob\dll\Icons\Stop.icl
    [7]|c:\Programme\AutoIt3\Downloads\nuts\Icon-Prob\dll\Icons\StopLib\Stop.icl
    [8]|c:\Programme\AutoIt3\Downloads\Oscar\LoginBox\icons.icl
    [9]|c:\Programme\AutoIt3\MyProjects\DB-ListView\Flaggs.icl
    [10]|c:\Programme\AutoIt3\MyProjects\DB-ListView\Test.icl

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

    compstui.dll|7 Licht aus|8 Licht ein|83 Telefon|95 Fax
    cryptui.dll|
    dot3ui.dll|1 Info
    filemgmt.dll|1 Hinweis
    msrating.dll.dll|10 OK(rund)11 abbrechen(rund)
    mmcndmgr.dll|9 abbrechen|14 Uhr|44 Lupe
    #ce
    Opt('MustDeclareVars', 1)

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

    Global $hGui, $listview, $hListview, $hImage, $b, $iCount,$iWidth = @DesktopWidth, $iHeight = @DesktopHeight -80
    Global $Combo, $Progress, $Label,$aFile, $sDLLName, $Msg, $sTitel = "Icon-Übersicht "
    Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
    $hGui = GUICreate($sTitel & $sDLLName, $iWidth, $iHeight, 0, 0)
    $Combo = GUICtrlCreateCombo("", 2, 2, 120)
    $Progress = GUICtrlCreateProgress(125, 2, $iWidth -137,25)
    ;$Label = GUICtrlCreateLabel("TEST",330,2,200)
    $aFile = _FileListToArray(@SystemDir, "*.DLL")

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

    $listview = GUICtrlCreateListView("", 2, 42, $iWidth-4, $iHeight - 44, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    $hListview = ControlGetHandle($hGui, "", $listview)
    _GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
    For $i = 1 To 8
    ; Fügt die Spalten hinzu
    _GUICtrlListView_AddColumn($listview, "Spalte " & $i, 120)
    Next
    GUISetState()
    For $i = 1 To $aFile[0]
    If _LoadIcons($aFile[$i]) > 0 Then GUICtrlSetData($Combo, $aFile[$i])
    GUICtrlSetData($Progress, 100- ($i / $aFile[0] * 100))
    ;GUICtrlSetData($Label,$i & " / " & $aFile[0])
    Next
    GUICtrlSetData($Combo, "shell32.dll", "shell32.dll")
    _showIcons("shell32.dll")

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

    While 1
    $Msg = GUIGetMsg()
    Switch $Msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo
    $sDLLName = GUICtrlRead($Combo)
    _showIcons($sDLLName)
    EndSwitch
    WEnd

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

    Func _showIcons($sDLLName)
    Local $iSpalten, $iZeilen, $iBilder
    _GUICtrlListView_DeleteAllItems($hListview)
    $iCount = _LoadIcons($sDLLName)
    WinSetTitle($hGui,"",$sTitel & $sDLLName)
    ;ConsoleWrite($sDLLName & " " & $iCount & @CRLF)
    _GUICtrlListView_SetImageList($listview, $hImage, 1)

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

    $iBilder = -1
    For $iZeilen = 1 To Int(($iCount - 1) / 8) + 1
    $iBilder += 1
    ; Fügt die Items hinzu
    _GUICtrlListView_AddItem($listview, "Bild: " & $iBilder, $iBilder)
    For $iSpalten = 1 To 7
    $iBilder += 1
    ; fügt die SubItems hinzu
    _GUICtrlListView_AddSubItem($listview, $iZeilen - 1, "Bild: " & $iBilder, $iSpalten, $iBilder)
    Next
    Next
    EndFunc ;==>_showIcons

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

    Func _LoadIcons($sDLLName)
    Local $iCount, $iBilder, $iError
    Static $iGesamt
    _GUIImageList_Destroy($hImage)

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

    ; Lädt die Bilder
    $hImage = _GUIImageList_Create(32, 32, 5, 3, 128, 256)
    _GUIImageList_AddIcon($hImage, @SystemDir & "\" & $sDLLName, 0,True)
    $iBilder = 1
    Do
    $iError = _GUIImageList_AddIcon($hImage, @SystemDir & "\" & $sDLLName, $iBilder,True)
    $iBilder += 1
    Until $iError <= 0
    $iCount = _GUIImageList_GetImageCount($hImage)
    $iGesamt += $iCount
    if $iCount <> 0 Then ConsoleWrite($sDLLName & " " & $iCount & " " & $iGesamt & @CRLF)
    Return $iCount
    EndFunc ;==>_LoadIcons

    [/autoit]

    ich offe dies bringt dich ertmal weiter, BugFix hat eine UDF in Skripte veröffentlicht mit der du die Farben in einer LV für jedes Item/SubItem einstellen kannst

    mfg autoBert

  • Hallo autoBert,

    danke für das Beispiel, kannte ich noch nicht. Gibt es in Autoit sowas wie colspan und rowspan wie in Html?

    Gruß
    kara2010

    Einmal editiert, zuletzt von kara2010 (1. Juni 2011 um 22:16)

  • *push*

    gibt es wirklich keine Möglichkeit,'Spalten in einer Listview zu überlagern?

    Einmal editiert, zuletzt von kara2010 (2. Juni 2011 um 20:21)

    • Offizieller Beitrag

    *push*

    gibt es wirklich keine Möglichkeit, zeilen in einer Listview zu überlagern?


    Na du bist ja ein Scherzkeks! Erst stellst du eine html-basierte Frage in einem AutoIt-Forum und pushst dann weil keiner mit deiner Frage was anfangen kann. :wacko:
    Was verstehst du denn unter zeilen in einer Listview zu überlagern ? Wäre hilfreich, wenn du dein Problem nachvollziehbar erklärst. Wir haben inzwischen schon Tuts zur richtigen Fragestellung. Vielleicht liest du das mal zuerst.

  • Ich meinte das so:

    Spalte1 | Spalte2 | Spalte3| Spalte4
    Wert1......Wert2......Wert3....Wert4
    Wert der über alles 4 Spalten geht

    Gruß
    kara2010

  • Hallo kara2010,

    so wie Dein ScreenShot aussieht, hat das mit "colspan" nichts zu tun.
    Das sind ganz "normale" Labels und zu jedem Kontak gibt eine eigene ListView.
    Innerhalb einer ListView geht das meines Wissens nicht.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • wenn es grafisch auch so aussehen soll und keine Interaktion verlangt,
    dann würde ich das mit HTML und einem _IECreateEmbedded umsetzen

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)