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. nuts

Beiträge von nuts

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 4. Januar 2010 um 15:01

    Hm logisch :thumbup:

    Damit lässt sich aber vielleicht auch arbeiten. Kann man die geladenen Bilder umbiegen? Oder müsste das ganze Theme fürs Prog. geändert werden?
    Hab mir mal die _GUICtrlListView_Create angsehen und dafür keinen Anhaltspunkt gefunden? Sind also Windows-interne Vorgänge?

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 15:15

    Mhm für:
    Const COLOR_HIGHLIGHT = 13 'Selected item background
    Const COLOR_HIGHLIGHTTEXT = 14 'Selected menu item
    funktionierts.

    Für:
    COLOR_SCROLLBAR = 0 'The Scrollbar colour
    nicht.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <GuiListView.au3>

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

    global $dll = DllOpen("user32.dll")
    $style1 = Bitor($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS)
    $style2 = Bitor($LVS_REPORT, $LVS_SINGLESEL, $LVS_SHOWSELALWAYS,$LVS_NOSCROLL)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 447, 193, 125)
    $ListView1 = GUICtrlCreateListView("Hallo|1", 120, 40, 433, 225, $style1)
    $hListView1= GUICtrlGetHandle($ListView1)
    $ListView2 = GUICtrlCreateListView("Hallo|2", 56, 40, 433, 225,$LVS_NOSCROLL,BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button1 = GUICtrlCreateButton("Button1", 64, 288, 129, 49, 0)
    $Button2 = GUICtrlCreateButton("Button2", 264, 288, 185, 49, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Global $style = $COLOR_HIGHLIGHT
    Global $style2 = $COLOR_HIGHLIGHTTEXT
    Global $style3 = $COLOR_SCROLLBAR
    Global $aElem[3] = [$style, $style2, $style3]
    Global $aColor[3] = [0xD9D1CC, 0x000000,0xD9D1CC]
    Global $aBevore[3] = [_WinAPI_GetSysColor($style1),_WinAPI_GetSysColor($style2), _WinAPI_GetSysColor($style3)]
    _WinAPI_SetSysColors($aElem, $aColor)
    for $i = 0 to 20
    GUICtrlCreateListViewItem("test|" & $i,$ListView1)
    next
    While 1
    $nMsg = GUIGetMsg()
    If _IsPressed("28", $dll) Then
    _Setstyle()
    EndIf
    If _IsPressed("26", $dll) Then
    _Setstyle()
    EndIf
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    DllClose($dll)
    _WinAPI_SetSysColors($aElem, $aBevore)
    Exit
    case $Button1
    GUICtrlSetState($ListView1, $GUI_HIDE)
    GUICtrlSetState($ListView2, $GUI_Show)
    GUICtrlCreateListViewItem("test|test",$ListView1)
    case $Button2
    GUICtrlSetState($ListView2, $GUI_HIDE)
    GUICtrlSetState($ListView1, $GUI_Show)
    GUICtrlCreateListViewItem("test|test",$ListView2)
    EndSwitch
    WEnd

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

    Func _Setstyle()
    ;ConsoleWrite("lala" &@CRLF)
    ;_GUICtrlListView_EnsureVisible($hListView1,_GUICtrlListView_GetSelectedIndices($hListView1))
    endfunc

    [/autoit]

    Bekomme solangsam selbstzweifel ;(

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 14:52

    In der Schule wurde sowas Transferaufgabe genannt. :P:D

    Andere Frage: Weiss jemand auswendig mit welcher Konstante ich die Farbe der Scrollbar per _WinAPI_SetSysColors ändern kann?

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 14:40

    Das ist das Problem :D
    Ok ich meinte es so: Man müsste definieren wo der Sichtbereich anfängt.
    Muss ja nicht zwingend das erste Item sein (laut diverser Quellen im Netz ?( ).
    Hier schaut mal: http://www.codeproject.com/KB/wtl/CustomListCtrl.aspx
    Verstehe es nur (noch?) nicht.
    Der Aufwand um auf Key UP/DOWN zu reagieren wäre vertretbar, da die Inputs sowieso alle über ein Eventghost-Plugin (WM_Command Message) ans Programm geschickt werden.

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 11:58

    _GUICtrlListView_EnsureVisible wirkt aber nicht zusammen mit dem Style $LVS_NOSCROLL.
    Das mit dem Label ist auch keine schlechte Idee.

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 02:21

    Danke.
    Aufs Resize kann vermutlich verzichtet werden, da die GUI immer mit der max. Auflösung starten soll.

    Najo immerhin ne Lösung, was anderes ist mir auch nicht gelungen. Theoretisch müsste man doch das erste sichtbare Items setzen können? (nur wie? :D) Und dann die Scrollbefehle abfangen und reagieren. ?(

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 01:07

    Mit den Pfeiltasten. Wird ein Musikplayer, der mit Fernbedienung gesteuert werden kann.
    Dann hab ich ein Listview mit "coolem" Hintergrundbild und die "blöden" Scrollbalken nebendran. :rolleyes:

    edit \ Rausschieben aus der GUI ist mir bekannt.
    Ist optisch nicht so schön und etwas tricky aufgrund unterschiedlicher Auflösungen (wird eine Fullscreen-Anwendung).

  • Listview - Scrollen ohne Scrollbalken

    • nuts
    • 31. Dezember 2009 um 00:55

    Hey,

    ich möchte ein Listview erstellen ohne Scrollbalken, allerdings soll trotzdem gescrollt werden können um alle Items sichtbar zu machen.

    Hier ein Bsp. zum Spielen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 447, 193, 125)
    $ListView1 = GUICtrlCreateListView("Hallo|1", 56, 40, 433, 225,$LVS_NOSCROLL,BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    $ListView2 = GUICtrlCreateListView("Hallo|2", 56, 40, 433, 225,$LVS_NOSCROLL,BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlSetState(-1,$GUI_HIDE)
    $Button1 = GUICtrlCreateButton("Button1", 64, 288, 129, 49, 0)
    $Button2 = GUICtrlCreateButton("Button2", 264, 288, 185, 49, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    for $i = 0 to 20
    GUICtrlCreateListViewItem("test|" & $i,$ListView1)
    next
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    GUICtrlSetState($ListView1, $GUI_HIDE)
    GUICtrlSetState($ListView2, $GUI_Show)
    GUICtrlCreateListViewItem("test|test",$ListView1)
    case $Button2
    GUICtrlSetState($ListView2, $GUI_HIDE)
    GUICtrlSetState($ListView1, $GUI_Show)
    GUICtrlCreateListViewItem("test|test",$ListView2)
    EndSwitch
    WEnd

    [/autoit]
  • InputBox-Verschlüsselung

    • nuts
    • 31. Dezember 2009 um 00:42

    "Password char" heisst der entsprechende Parameter (Nr.4) der Inputbox-Funktion.

    edit \ Diesmal war ich zu langsam :D

  • InputBox-Verschlüsselung

    • nuts
    • 31. Dezember 2009 um 00:38

    Bots sind hier nicht erlaubt.
    Deine Frage lässt sich aber mit einem Blick in die Hilfe zu Inputbox ganz leicht selbst beantworten. ;)

  • musikplayer ...

    • nuts
    • 30. Dezember 2009 um 13:05
    Zitat von progandy

    Teste doch mal die BASS UDFs ;)


    Arbeitet jemand mit der neusten Version der BASS UDF's?
    Diese scheinen mir ziemlich fehlerhaft. z.B. BassEnc.au3 -> Zeile 108 WARNING: $bassenc_dll: possibly used before declaration.

    edit \ Noch was ist mir aufgefallen: zu den BassEnc.au3 Funktionen wir auch die _BASS_ErrorGetCode() aufgerufen.
    Diese Funktion erfordert aber mit der neusten Bass.au3 keinen Parameter mehr.
    Harmoniert noch nicht wirklich miteinander :(

  • Programmauswahl

    • nuts
    • 29. Dezember 2009 um 22:25

    Genau

    [autoit]


    case $button3
    MsgBox(1, "Left 4 Dead 2 - Settings", "Mit diesem Tool kannst du dein Name und die Sprache des spiels verstellen!")
    Run("C:\Programme\L4D2Settings.exe") ; z.B.

    [/autoit]
  • Auführung trotz Sleep()

    • nuts
    • 29. Dezember 2009 um 16:18

    In Autoit wird Zeile für Zeile das Skript ausgeführt. D.h. in der Form geht dein Vorhaben nicht.
    Es gibt aber verschiedene Umgehungsmöglichkeiten, dazu muss man aber dein genaues Ziel kennen.

  • Programmauswahl

    • nuts
    • 29. Dezember 2009 um 16:16

    Kleine Starthilfe.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 418, 267, 192, 132)
    $Button1 = GUICtrlCreateButton("Programm2", 232, 136, 153, 65, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Programm1", 24, 136, 153, 65, $WS_GROUP)
    $Pic1 = GUICtrlCreatePic("", 24, 40, 145, 65, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;Pfad zum Bild noch eintragen (s. Hilfe)
    $Pic2 = GUICtrlCreatePic("", 232, 40, 153, 65, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;Pfad zum Bild noch eintragen (s. Hilfe)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    case $Button1
    MsgBox(1, "", "Button1 wurde gedrückt")
    Run("Pfad des Programms") ; um das Programm zu starten, Pfad natürlich noch eingeben
    case $button2
    MsgBox(1, "", "Button2 wurde gedrückt")
    Run("Pfad des Programms") ; um das Programm zu starten, Pfad natürlich noch eingeben
    EndSwitch
    WEnd

    [/autoit]


    Für alles weitere muss aber bisschen mehr von dir kommen ;)

  • Problem mit Sqrt

    • nuts
    • 29. Dezember 2009 um 15:57

    Hab mal das Heronverfahren nachgebaut.

    Spoiler anzeigen
    [autoit]


    #include "BigNum.au3"

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

    ConsoleWrite(_Sqrt(2,2, 10,20 ))

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

    Func _Sqrt($num, $X0, $loops,$ID)
    ;Wurzelberechnung nach dem Heronverfahren
    ;num = Zahl aus der die Quadratwurzel gezogen werden soll
    ;X0 = Startwert (<>0)
    ;loops = Anzahl der Durchgänge (Heronverfahren)
    ;$ID =Anzahl Dezimalstellen
    local $y = $X0, $t
    for $i = 1 to $loops
    $y = _BigNum_Div(_BigNum_Add($Y,_BigNum_Div($num, $Y,$ID)),2,$ID)
    if $t = $y Then
    ConsoleWrite( "Xn =" & $t & "= Xn+1 =" & $y & @CRLF)
    return $y
    endif
    $t = $y
    ConsoleWrite( $i & " " & $y & @CRLF)
    Next
    Return $y
    endfunc

    [/autoit]
  • GDIPlus Viereck löschen

    • nuts
    • 29. Dezember 2009 um 13:00

    Dabei wir ja auch nur übermalt. :P

  • Blu-Ray Disc Sotware-Player

    • nuts
    • 28. Dezember 2009 um 21:55

    HDCP geschütze Quellen (Kauf-Blurays) sind wohl nur von Playern mit entsprechender Lizenz abspielbar (Cyberlink, Arcsoft, Intervideo bieten entsprechende Produkte an). Diese sind für nicht kommerzielle, kleine Projekte wohl kaum finanzierbar.
    Somit musst du den "Kopierschutz" aushebeln, darauf darf man hier aber sicherlich nicht näher eingehen. Es hilft die Software mit dem roten Waldtier als Logo ;)
    Anschließend brauchst du noch einen geeigneten Player und die entsprechenden Directshow-Filter. Das ganze Thema ist ziemlich kompliziert, hier mal ein Link:
    http://de.dvbviewer.tv/wiki/M2ts/Blu-Ray_FAQ

  • Maximalzahl von Elementen in einem GUI Input

    • nuts
    • 26. Dezember 2009 um 20:45
    Spoiler anzeigen
    [autoit]


    #cs **************************************************************************

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

    Erfassungsmaske - Springen zwischen den Inputfeldern per Enter-Taste

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

    http://www.autoit.de/index.php?page…4634#post124634

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

    #ce **************************************************************************

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

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <Guilistview.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 438, 192, 132)
    $ListView1 = GUICtrlCreateListView("Input1|Input2|Input3|Input4", 16, 16, 601, 265)
    Global $hLVHandle = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Input1", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Input2", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Input3", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Input4", 130, 0)
    $Input1 = GUICtrlCreateInput("", 16, 320, 129, 24)
    GUICtrlSetLimit(-1, 4)
    $Input2 = GUICtrlCreateInput("", 168, 320, 129, 24)
    GUICtrlSetLimit(-1, 4)
    $Input3 = GUICtrlCreateInput("", 328, 320, 137, 24)
    GUICtrlSetLimit(-1, 4)
    $Input4 = GUICtrlCreateInput("", 496, 320, 121, 24)
    GUICtrlSetLimit(-1, 4)

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

    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

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

    $button = GUICtrlCreateButton("ADD", 250, 350, 100, 50)

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

    Global $hCM = GUICtrlCreateContextMenu($ListView1) ; ein Kontextmenü für das Listview erstellen
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeint

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    _NewItem()
    Case $hCMDel
    _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    EndSwitch
    WEnd

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    $nNotifyCode = BitShift($wParam, 16)
    $nID = BitAND($wParam, 0x0000FFFF)
    $hCtrl = $lParam
    ;ConsoleWrite($nNotifyCode& @CRLF)
    If $nNotifyCode = 1281 Then
    Switch ControlGetFocus("Form1")
    Case "Edit1"
    GUICtrlSetState($Input2, $gui_focus)
    Case "Edit2"
    GUICtrlSetState($Input3, $gui_focus)
    Case "Edit3"
    GUICtrlSetState($Input4, $gui_focus)
    Case "Edit4"
    GUICtrlSetState($button, $gui_focus)
    EndSwitch
    EndIf
    EndFunc ;==>MY_WM_COMMAND

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

    Func _NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    GUICtrlCreateListViewItem(GUICtrlRead($Input1) & "|" & GUICtrlRead($Input2) & "|" & GUICtrlRead($Input3) & "|" & GUICtrlRead($Input4), $ListView1)
    GUICtrlSetState($Input1, $gui_focus)
    EndFunc ;==>_NewItem

    [/autoit]


    Ein erster Versuch. Hat den Nachteil, dass der 5. Tastaturanschlag das Springen bewirkt und dieser nicht im nächsten Input ankommt.

    Edit \ Also den 5. Anschlag ans nächste Input zu schicken ist knifflig. :wacko:
    Fällt sonst jemand dazu was ein?

  • _arraydisplay auch GUISetIcon?

    • nuts
    • 26. Dezember 2009 um 19:51

    Genau einfach die _Arraydisplay Funktion anpassen.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    global $atest[5]
    for $i = 0 to 4
    $atest[$i] = Random(1, 10)
    Next

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

    _ArrayDisplay_Icon($atest, "", -1, 0, "", "|", "", @ScriptDir&"/Wappen.ico")

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

    Func _ArrayDisplay_Icon(Const ByRef $avArray, $sTitle = "Array: ListView Display", $iItemLimit = -1, $iTranspose = 0, $sSeparator = "", $sReplace = "|", $sHeader = "", $iconfile="")
    If Not IsArray($avArray) Then Return SetError(1, 0, 0)
    ; Dimension checking
    Local $iDimension = UBound($avArray, 0), $iUBound = UBound($avArray, 1) - 1, $iSubMax = UBound($avArray, 2) - 1
    If $iDimension > 2 Then Return SetError(2, 0, 0)

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

    ; Separator handling
    ;~ If $sSeparator = "" Then $sSeparator = Chr(1)
    If $sSeparator = "" Then $sSeparator = Chr(124)

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

    ; Check the separator to make sure it's not used literally in the array
    If _ArraySearch($avArray, $sSeparator, 0, 0, 0, 1) <> -1 Then
    For $x = 1 To 255
    If $x >= 32 And $x <= 127 Then ContinueLoop
    Local $sFind = _ArraySearch($avArray, Chr($x), 0, 0, 0, 1)
    If $sFind = -1 Then
    $sSeparator = Chr($x)
    ExitLoop
    EndIf
    Next
    EndIf

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

    ; Declare variables
    Local $vTmp, $iBuffer = 64
    Local $iColLimit = 250
    Local $iOnEventMode = Opt("GUIOnEventMode", 0), $sDataSeparatorChar = Opt("GUIDataSeparatorChar", $sSeparator)

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

    ; Swap dimensions if transposing
    If $iSubMax < 0 Then $iSubMax = 0
    If $iTranspose Then
    $vTmp = $iUBound
    $iUBound = $iSubMax
    $iSubMax = $vTmp
    EndIf

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

    ; Set limits for dimensions
    If $iSubMax > $iColLimit Then $iSubMax = $iColLimit
    If $iItemLimit < 1 Then $iItemLimit = $iUBound
    If $iUBound > $iItemLimit Then $iUBound = $iItemLimit

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

    ; Set header up
    If $sHeader = "" Then
    $sHeader = "Row " ; blanks added to adjust column size for big number of rows
    For $i = 0 To $iSubMax
    $sHeader &= $sSeparator & "Col " & $i
    Next
    EndIf

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

    ; 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
    If $iTranspose Then
    $vTmp = $avArray[$j]
    Else
    $vTmp = $avArray[$i]
    EndIf
    Else
    If $iTranspose Then
    $vTmp = $avArray[$j][$i]
    Else
    $vTmp = $avArray[$i][$j]
    EndIf
    EndIf

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

    ; Add to text array
    $vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1)
    $avArrayText[$i] &= $sSeparator & $vTmp

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

    ; Set max buffer size
    $vTmp = StringLen($vTmp)
    If $vTmp > $iBuffer Then $iBuffer = $vTmp
    Next
    Next
    $iBuffer += 1

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

    ; 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_INSERTITEMW = (0x1000 + 77)
    Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54)
    Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (0x1000 + 76)
    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"

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

    Local $iAddMask = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
    Local $tBuffer = DllStructCreate("wchar Text[" & $iBuffer & "]"), $pBuffer = DllStructGetPtr($tBuffer)
    Local $tItem = DllStructCreate($_ARRAYCONSTANT_tagLVITEM), $pItem = DllStructGetPtr($tItem)
    DllStructSetData($tItem, "Param", 0)
    DllStructSetData($tItem, "Text", $pBuffer)
    DllStructSetData($tItem, "TextMax", $iBuffer)


    ; Set interface up
    Local $iWidth = 640, $iHeight = 480
    Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
    ;hier das Icon setzen

    GUISetIcon($iconfile)
    Local $aiGUISize = WinGetClientSize($hGUI)
    Local $hListView = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
    Local $hCopy = GUICtrlCreateButton("Copy Selected", 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20)
    GUICtrlSetResizing($hListView, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
    GUICtrlSetResizing($hCopy, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
    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)

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

    ; Fill listview
    Local $aItem
    For $i = 0 To $iUBound
    If GUICtrlCreateListViewItem($avArrayText[$i], $hListView) = 0 Then
    ; use GUICtrlSendMsg() to overcome AutoIt limitation
    $aItem = StringSplit($avArrayText[$i], $sSeparator)
    DllStructSetData($tBuffer, "Text", $aItem[1])

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

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

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

    ; 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_SETITEMW, 0, $pItem)
    Next
    EndIf
    Next

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

    ; adjust 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
    $iWidth += 20
    WinMove($hGUI, "", (@DesktopWidth - $iWidth)/2, Default, $iWidth)

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

    ; Show dialog
    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    Switch GUIGetMsg()
    Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
    ExitLoop

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

    Case $hCopy
    Local $sClip = ""

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

    ; 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

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

    ; Generate clipboard text
    If Not $aiCurItems[0] Then
    For $sItem In $avArrayText
    $sClip &= $sItem & @CRLF
    Next
    Else
    For $i = 1 To UBound($aiCurItems) - 1
    $sClip &= $avArrayText[$aiCurItems[$i]] & @CRLF
    Next
    EndIf
    ClipPut($sClip)
    EndSwitch
    WEnd
    GUIDelete($hGUI)

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

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

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

    Return 1
    EndFunc ;==>_ArrayDisplay

    [/autoit]
  • nuts hats [Geburtstag!!]

    • nuts
    • 25. Dezember 2009 um 15:13

    Danke. :thumbup:

    Euch auch allen ein frohes Fest.

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™