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

Beiträge von BugFix

  • GUIGetCursorInfo() funktioniert nicht

    • BugFix
    • 26. Oktober 2011 um 16:06

    Wenn der Hover-Effekt eintreten soll, muß die Abfrage der Cursorinfo kontinuierlich in der Schleife erfolgen und nicht erst bei Betätigung des Button. ;)

  • FileselectFolder

    • BugFix
    • 26. Oktober 2011 um 10:37

    Welchen Sinn macht es FileSelectFolder zu nutzen, wenn du den Pfad verwirfst?
    OK, wenn du es willst- einfach den Ordnernamen selektieren:

    [autoit]

    $selected = "C:\bla\blub"
    $folder = StringTrimLeft($selected, StringInStr($selected, '\', 1, -1))

    [/autoit]
  • Selektierten Text aus ComboBox per ENTER und/oder Button starten

    • BugFix
    • 26. Oktober 2011 um 10:30
    Zitat von Mike280399

    Warum würdest Du Hotkey vermeiden ?


    - sind auch wirksam, wenn dein Skript läuft, aber das Fenster nicht aktiv ist
    - es kann leicht zu Konflikten mit HotKeys vom System oder anderen Programmen kommen
    Mit GuiAcceleratorSet ist garantiert, dass der Hotkey ausschließlich in der zugeordneten GUI wirksam ist.
    Definiere mal einen Hotkey mit ENTER und wechsle dann mal parallel in einen Editor zum Schreiben. Bei jedem Zeilenumbruch (Enter) wird der HotKey in deinem Skript aktiviert. ;)
    (Kann man natürlich unterbinden, indem in die HK-Funktion eine Abfrage nach dem aktiven Fenster eingebunden wird).

  • FileClose

    • BugFix
    • 26. Oktober 2011 um 10:16
    Zitat von Ilse

    Es muß doch zuerst das ? Fenster ermittelt werden.

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    Wenn ich das jetzt gerade richtig im Kopf habe ist Parameter 2 = Erkennung von Teilen des Fenster-Titels
    Dein Fenstertitel ist z.B. "Acrobat Reader - DATEINAME", somit reicht es, wenn du nach "DATEINAME" das Fenster selektierst.

  • Excel Chart UDF - 2013-01-21: Version 0.3.1.1 freigegeben!

    • BugFix
    • 26. Oktober 2011 um 10:12

    Ich habe die Erfahrung gemacht, dass man mit den nativen Objektfunktionen wesentlich effektiver arbeiten kann als mit entsprechenden AutoIt-Umsetzungen. Ich habe zwar auch schon viele Dinge nach AutoIt portiert, muß aber eingestehen, dass in dem Moment, wenn man weiß wie es geht, das Original immer die bessere Wahl ist.
    Z.B. muß ich in einer AutoIt-Funktion (um sie allgemeingültig zu halten) jedesmal eine Fehlerroutine abarbeiten (IsObj.. etc.), das kostet natürlich auch Zeit in der Abarbeitung.
    Wer aber nur mal ein.. zwei Funktionen benötigt, für den sind die Funktionen sicher sehr nützlich.
    Ergo: Ja, es macht sicher Sinn - und sei es nur aufzuzeigen, wie man Objekte anspricht.
    (Falls du noch Zuarbeit benötigst, ich habe sicher noch ein paar Grafik-Exel Umsetzungen rumliegen ;))

  • Großbuchstaben

    • BugFix
    • 26. Oktober 2011 um 10:03

    Lies deine Frage nochmal durch und sag mir, ob du sie verstehst. :wacko:
    Übrigens ist es wesentlicher hilfreicher, wenn du schreiben würdest:
    - Ich habe dieses vor
    - bei Aktion X soll Ereignis Y geschehen
    - versucht habe ich es bisher mit (Skript)

    Bis jetzt habe ich nicht die geringste Vorstellung, was du vorhast.

  • Selektierten Text aus ComboBox per ENTER und/oder Button starten

    • BugFix
    • 26. Oktober 2011 um 09:57

    Hotkey würde ich vermeiden. Erstelle dir ein Dummy-Control

    [autoit]

    GUICtrlCreateDummy

    [/autoit]

    und weise diesem die Funktion mit dem Shellexecute-Aufruf zu über

    [autoit]

    GUISetAccelerators

    [/autoit]
  • Großbuchstaben

    • BugFix
    • 26. Oktober 2011 um 09:51
    Zitat von Zattoo

    das wenn man [Shift] + [a] drückt (=A) auch ein Großes A erkannt wird,


    Was meinst du mit "erkannt wird" ? Das System erkennt doch diese Kombination und schreibt in jedes Edit-Ctrl den Großbuchstaben.
    Einen Hotkey für Großbuchstaben kann es nicht geben, da ja Tastaturwerte rein virtuell sind und aus vorab erfolgten Tastenkombinationen in den eingestellten Tastaturcode übersetzt und dann der virtuelle Tastenwert ausgegeben wird. Es gibt keine Großbuchstaben auf der Tastatur. ;) Diese entstehen immer aus: {SHIFTDOWN}+{Buchstabentaste}+{SHIFTUP}
    Willst du wissen ob eine derartige Kombination gedrückt wurde, mußt du sie also auch detailliert abfragen.
    Wie das geht, darauf gehe ich nicht weiter ein und auch von Anderen wird es dazu sicher keinen Support geben, da wir dann schon in den Grenzbereich zu unseren Forenregeln kommen.

  • Thankomat auf autoit.de

    • BugFix
    • 26. Oktober 2011 um 09:42

    Es gibt keinen Grund diese Diskussion bis zum St. Nimmerleinstag fortzuführen.
    Wir hatten uns mit der Thematik bereits ausgiebig befaßt und sind zu dem Entschluß gekommen, dass wir kein Bedankungsritual einführen wollen. Punkt.

    [CLOSED]

  • Listview Spalten fixieren - jetzt als Funktion

    • BugFix
    • 25. Oktober 2011 um 20:45

    Hi,
    über den Umweg Messageauswertung gibt es ja einen Workaround beim Ändern der Spaltenbreite sofort wieder die Originalbreite zu setzen.

    In der Funktion nutze ich jetzt die ab Vista verfügbare Möglichkeit, ein Flag zum Fixieren der Spaltenbreite zu setzen (oder auch wieder zu löschen).
    Es können wahlweise alle Spalten fixiert werden (Standard) oder einzelne.
    Die Funktion kann mit ID oder Handle des Listview aufgerufen werden.

    _GuiCtrlListView_HeaderItemFix(1.0)
    [autoit]

    #Region - TimeStamp
    ; 2011-10-25 20:39:12 v 1.0
    #EndRegion - TimeStamp

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

    #include-once
    #include <GuiListView.au3>
    #include <HeaderConstants.au3>
    #include <ListViewConstants.au3>
    #include <SendMessage.au3>

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListView_HeaderItemFix
    ; Description......: Fixiert die Spaltenbreite im Listview für eine oder alle Spalten, der User kann diese nicht ändern
    ; Fixierung läßt sich wieder aufheben
    ; Parameter(s).....: $hWnd Handle/ID des Listview
    ; $iItemIndex 0-basierter SpaltenIndex (-1 Standard, wird für alle Spalten ausgeführt)
    ; $fFixWidth 1 - Standard, Fixierung setzen; 0 - Fixierung aufheben
    ; Requirement(s)...: OS Vista oder höher
    ; Return Value(s)..: Fehler @error Spaltenindex größer als Maximalwert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListView_HeaderItemFix($hWnd, $iItemIndex=-1, $fFixWidth=1)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $hHeader = _SendMessage($hWnd, $LVM_GETHEADER)
    Local $iColumn = _SendMessage($hHeader, $HDM_GETITEMCOUNT)
    Local $iFrom = $iItemIndex, $iTo = $iItemIndex, $iFmt
    If $iItemIndex < 0 Then
    $iFrom = 0
    $iTo = $iColumn -1
    EndIf
    If $iItemIndex > $iColumn -1 Then Return SetError(1,0,-1)
    Local Const $_HDM_GETITEM = 0x120B
    Local Const $_HDM_SETITEM = 0x120C
    Local Const $_HDF_FIXEDWIDTH = 0x0100
    Local $HDITEM = DllStructCreate('uint mask;int cxy;ptr pszText;hwnd hbm;int cchTextMax;int fmt;lparam LPARAM;int iImage;int iOrder;uint type;int_ptr pvFilter;uint state;')
    DllStructSetData($HDITEM, 'mask', BitOR($HDI_FORMAT,$HDI_FILTER,$HDI_TEXT))
    DllStructSetData($HDITEM, 'cchTextMax', 260)
    Local $pszText = DllStructCreate('char[260];')
    If _GUICtrlListView_GetUnicodeFormat($hWnd) Then $pszText = DllStructCreate('wchar[260];')
    DllStructSetData($HDITEM, 'pszText', DllStructGetPtr($pszText))
    For $i = $iFrom To $iTo
    If $fFixWidth Then
    _SendMessage($hHeader, $_HDM_GETITEM, $i, DllStructGetPtr($HDITEM))
    $iFmt = BitOR(DllStructGetData($HDITEM, 'fmt'), BitOR($HDF_OWNERDRAW,$HDF_STRING,$_HDF_FIXEDWIDTH))
    DllStructSetData($HDITEM, 'fmt', $iFmt)
    _SendMessage($hHeader, $_HDM_SETITEM, $i, DllStructGetPtr($HDITEM))
    Else
    _SendMessage($hHeader, $_HDM_GETITEM, $i, DllStructGetPtr($HDITEM))
    $iFmt = DllStructGetData($HDITEM, 'fmt')
    If BitAND($iFmt, $_HDF_FIXEDWIDTH) Then $iFmt = BitXOR($iFmt, $_HDF_FIXEDWIDTH)
    DllStructSetData($HDITEM, 'fmt', $iFmt)
    _SendMessage($hHeader, $_HDM_SETITEM, $i, DllStructGetPtr($HDITEM))
    EndIf
    Next
    EndFunc ;==>_GuiCtrlListView_HeaderItemFix

    [/autoit]

    Dateien

    _GuiCtrlListView_HeaderItemFix[1.0].au3 2,83 kB – 387 Downloads
  • String Wert ungleich Null

    • BugFix
    • 25. Oktober 2011 um 10:43

    Du vergleichst Birnen mit Äpfeln. ;)
    Wenn du prüfen möchtest ob dein String leer ist, dann vergleiche mit einem Leerstring statt mit einem numerischen Wert.

    [autoit]

    If $Value = '' Then ; String ohne Inhalt

    [/autoit]
  • Die word datei im hintergrung beschreiben

    • BugFix
    • 24. Oktober 2011 um 20:09

    Verwende doch mal die Suche.
    Sichtbarkeit des Objekts setzt du ganz einfach mit:

    [autoit]

    $object.visible = 0 ; 1 = sichtbar

    [/autoit]
  • Get Control Style

    • BugFix
    • 24. Oktober 2011 um 11:22

    OK, hab ich voll übersehen :D
    Danke.

  • Get Control Style

    • BugFix
    • 24. Oktober 2011 um 10:42

    Ich habe nun schon ..zig Foren durchforstet, kenne MSDN bald auswendig (:D) und bin doch keinen Schritt weiter.
    Mein Problem: Wo zum Teufel speichert Windows die Styles für Controls?! ;(
    Style und ExStyle für Fenster sind mit GUIGetStyle() abfragbar. Und genauso sollte doch auch ein GUICtrlGetStyle möglich sein.
    Leider ist das nicht der Fall. Für einige wenige Control gibt es Funktionen um Style und/oder ExStyle abzufragen.
    Falls ihr euch fragt, wozu das gut sein soll - wenn man eine UDF erstellt, die bestimmte Styles erfordert bzw. bestimmte Styles ausschließt muß ich schon den Style des Controls kennen um notwendige Styles noch zu setzen (wobei das nicht vorrangig ist, da BitOr($oldStyle, $Style) sich nicht dran stört, wenn der Style bereits vorhanden ist) oder viel wichtiger zu entfernen (mit BitXOr($oldStyle, $Style) würde ich den ungewollten Style ja setzen, falls gar nicht vorhanden).
    Da das AutoIt-Window-Info-Tool die Styles auslesen kann, muß es ja einen Weg geben. - Wer kennt ihn?

  • OwnLVSelection - UDF für eigene Färbung der Selektion in Listviews

    • BugFix
    • 24. Oktober 2011 um 00:52

    Hi,
    nach der FormatListview-UDF gibt es jetzt wieder etwas "Listviewmalerei". :D
    Den meisten von euch wird die monotone blaue Färbung von selektierten Listviewitem wohl auch nicht so gefallen. Ich habe nun eine UDF erstellt mit der man das für ein (bis 40 beliebig viele) Listview einer GUI völlig separat gestalten kann. Das basiert auf einem Workaround von Achilles aus dem Jahr 2008. Aber außer mir hatte wohl noch niemand Interesse, das in eine vernünftig zu händelnde Funktion zu packen.
    - Die verwendeten Listview müssen zwingend mit "GuiCtrlCreateListView" erstellt werden! Nur so gibt es eine ID, auf die auch aus der UDF heraus zugegriffen werden kann.
    - Wird ein Listview-Style bei der Erstellung des LV gesetzt, so ist dieser beim Registrieren des LV mit an die UDF zu übergeben (Ausnahme: Default-Style)
    - Für jedes registrierte Listview können eigene Selektionsfarben (Text/Hintergrund) gesetzt werden.
    - Die Standardfarben der Listview der GUI (gültig für alle registrierten LV) lassen sich ebenfalls setzen.
    - Es können registrierte LV auch wieder zurückgesetzt werden, sie erhalten dann die Standardfarben. werden dann wieder vom System gezeichnet und verhalten sich entsprechend (grau bei Fokusverlust). Der Style wird zurückgesetzt auf den Style bei Erstellung.
    Ein entscheidender Vorteil dieser Variante ist (wie ihr auf dem Bild sehen könnt): Auch nach Fokusverlust bleibt die Selektionsfärbung erhalten.

    Edit 24.10.2011: Kleine Änderungen - s. durchgestrichene bzw. blaue Bereiche in der Beschreibung vorab.

    OwnLVSelection(1.2).au3
    [autoit]

    #Region - TimeStamp
    ; 2011-10-24 12:05:40 v 1.2
    #EndRegion - TimeStamp
    #include-once
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Global Const $ODT_LISTVIEW = 102
    Global Const $ODA_DRAWENTIRE = 0x1
    Global Const $ODS_SELECTED = 0x0001

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionAdd
    ; Description......: Registriert ein Listview für eigene Selektion
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview
    ; Requirement(s)...: Das Listview MUSS ZWINGEND mit "GuiCtrlCreateListView" erstellt werden!
    ; Return Value(s)..: Fehler @error - Handle/ID nicht vorhanden
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionAdd($hWnd)
    Local $ret = __ManageSelection('add', $hWnd)
    If @error Then Return SetError(1)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionAdd

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionDel
    ; Description......: Listview nicht mehr in eigener Selektion zeichnen
    ; Selektion wird wieder vom System gezeichnet, graut aus bei Fokusverlust
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview
    ; Return Value(s)..: Fehler @error - 1 Handle/ID nicht vorhanden
    ; 2 Handle/ID nicht registriert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionDel($hWnd)
    Local $ret = __ManageSelection('del', $hWnd)
    If @error Then Return SetError(@error)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionDel

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionSetColor
    ; Description......: Text- und Hintergrundfarbe für die Selektion setzen
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview (-1 setzt die Farben für alle registrierten Listview)
    ; $iForeColor Textfarbe der Selektion (-1 setzt Default-Color)
    ; $iBackColor Hintergrundfarbe der Selektion (-1 setzt Default-Color)
    ; Return Value(s)..: Fehler @error - 1 Handle/ID nicht vorhanden
    ; 2 Handle/ID nicht registriert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionSetColor($hWnd=-1, $iForeColor=-1, $iBackColor=-1)
    Local $aParam[3] = [$hWnd, $iForeColor, $iBackColor]
    Local $ret = __ManageSelection('setcol', $aParam)
    If @error Then Return SetError(@error)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionSetColor

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionSetDefCol
    ; Description......: Setzen der Standardfarben (nicht selektierter Bereich) für alle Listview
    ; Parameter(s).....: $iForeColor Textfarbe nicht selektierter Bereich (Standard: schwarz)
    ; $iBackColor Hintergrundfarbe nicht selektierter Bereich (Standard: weiß)
    ; Return Value(s)..: keiner
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionSetDefCol($iForeColor=0xFFFFFF, $iBackColor=0x000000)
    Local $aParam[2] = [$iForeColor, $iBackColor]
    __ManageSelection('defcol', $aParam)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionSetDefCol

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

    ;===============================================================================
    ; Function Name....: Hilfsfunktion - __ManageSelection
    ; Description......: Verwaltung der Einstellungen
    ;===============================================================================
    Func __ManageSelection($sAction, $vParam='')
    Local Static $aHwnd[40][4], $iCurr = -1 ; [[hWnd, TxtCol, BackCol, OldStyle]]
    Local Static $aDefCol[2] = [0x000000,0xFFFFFF]
    Local $hLV, $index, $iFrom = 0, $iTo = $iCurr, $iStyle
    Switch $sAction
    Case 'add'
    $hLV = $vParam
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    If $iCurr = -1 Then GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")
    $iCurr += 1
    If $iCurr > 39 Then ReDim $aHwnd[$iCurr+1][4]
    $aHwnd[$iCurr][0] = $hLV
    $iStyle = GUICtrlGetStyle($hLV)
    $iStyle = Hex($iStyle[0],4)
    $aHwnd[$iCurr][3] = $iStyle
    GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), BitOR($iStyle,$LVS_REPORT,$LVS_OWNERDRAWFIXED))
    Case 'del'
    $hLV = $vParam
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    $index = _ArraySearch($aHwnd, $hLV)
    If @error Then Return SetError(2)
    ; == Standardfarbe Systemmarkierung und Standardverhalten (Ausgrauen bei Fokusverlust)
    GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), '0x' & $aHwnd[$index][3])
    $aHwnd[$index][0] = 0
    Case 'setcol'
    $hLV = $vParam[0]
    If $hLV <> -1 Then ; == -1 alle Werte setzen
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    $index = _ArraySearch($aHwnd, $hLV)
    If @error Then Return SetError(2)
    $iFrom = $index
    $iTo = $index
    EndIf
    If $iCurr < 0 Then Return SetError(2) ; == noch kein Fenster registriert
    If $vParam[1] = -1 Then $vParam[1] = $aDefCol[0]
    If $vParam[2] = -1 Then $vParam[2] = $aDefCol[1]
    For $i = $iFrom To $iTo
    $aHwnd[$i][1] = RGB2BGR($vParam[1])
    $aHwnd[$i][2] = RGB2BGR($vParam[2])
    Next
    Case 'getcol'
    $index = _ArraySearch($aHwnd, $vParam)
    If @error Then Return SetError(1)
    Local $aRet[2] = [$aHwnd[$index][1],$aHwnd[$index][2]]
    Return $aRet
    Case 'defcol'
    $aDefCol[0] = RGB2BGR($vParam[0])
    $aDefCol[1] = RGB2BGR($vParam[1])
    Case 'getdef'
    Return $aDefCol
    EndSwitch
    EndFunc

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

    Func RGB2BGR($iColor)
    Local $sH = Hex($iColor,6)
    Return '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    EndFunc

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

    Func WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
    Local $tDRAWITEMSTRUCT, $iBrushColor, $cID, $itmID, $itmAction, $itmState, $hItm, $hDC, $bSelected, $aCol, $aDefCol
    $tDRAWITEMSTRUCT = DllStructCreate("uint cType;uint cID;uint itmID;uint itmAction;uint itmState;" & _
    "hwnd hItm;hwnd hDC;int itmRect[4];dword itmData", $lParam)
    If DllStructGetData($tDRAWITEMSTRUCT, "cType") <> $ODT_LISTVIEW Then Return $GUI_RUNDEFMSG
    $cID = DllStructGetData($tDRAWITEMSTRUCT, "cID")
    $itmID = DllStructGetData($tDRAWITEMSTRUCT, "itmID")
    $itmAction = DllStructGetData($tDRAWITEMSTRUCT, "itmAction")
    $itmState = DllStructGetData($tDRAWITEMSTRUCT, "itmState")
    $hItm = DllStructGetData($tDRAWITEMSTRUCT, "hItm")
    $hDC = DllStructGetData($tDRAWITEMSTRUCT, "hDC")
    $aCol = __ManageSelection('getcol', $hItm)
    $aDefCol = __ManageSelection('getdef')
    If @error Then Return $GUI_RUNDEFMSG
    $bSelected = BitAND($itmState, $ODS_SELECTED)

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

    Switch $itmAction
    Case $ODA_DRAWENTIRE
    If $itmState = $bSelected Then
    $iBrushColor = $aDefCol[1]
    _WinAPI_SetTextColor($hDC, $aDefCol[0])
    Else
    $iBrushColor = $aCol[1]
    _WinAPI_SetTextColor($hDC, $aCol[0])
    EndIf
    Local $aBrush = DLLCall("gdi32.dll","hwnd","CreateSolidBrush", "int", $iBrushColor)
    Local $aBrushOld = _WinAPI_SelectObject($hDC, $aBrush[0])
    _WinAPI_FillRect($hDC, DllStructGetPtr($tDRAWITEMSTRUCT, "itmRect"), $aBrush[0])
    _WinAPI_SelectObject($hDC, $aBrushOld)
    _WinAPI_DeleteObject($aBrush[0])
    ; == Item
    Local $itmText = _GUICtrlListView_GetItemText($hItm, $itmID)
    DllStructSetData($tDRAWITEMSTRUCT, "itmRect", DllStructGetData($tDRAWITEMSTRUCT, "itmRect", 1) +5, 1) ; == Schrift 5px nach rechts
    DllStructSetData($tDRAWITEMSTRUCT, "itmRect", DllStructGetData($tDRAWITEMSTRUCT, "itmRect", 2) +2, 2) ; == Schrift 2px nach unten
    DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $itmText, "int", StringLen($itmText), _
    "ptr", DllStructGetPtr($tDRAWITEMSTRUCT, "itmRect"), "int", $DT_LEFT)
    ; == SubItem
    Local $iCol = _GUICtrlListView_GetColumnCount($hItm)
    If $iCol > 1 Then
    For $i = 1 To $iCol -1
    Local $iSubItmText = _GUICtrlListView_GetItemText($hItm, $itmID, $i)
    Local $aSubItmRect = _GUICtrlListView_GetSubItemRect($hItm, $itmID, $i)
    Local $iSubItmRect = DllStructCreate("int[4]")
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[0] +5, 1)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[1] +2, 2)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[2], 3)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[3], 4)
    DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $iSubItmText, "int", StringLen($iSubItmText), _
    "ptr", DllStructGetPtr($iSubItmRect), "int", $DT_LEFT)
    Next
    EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    ; #FUNCTION# =========================================================================================================
    ; Name...........: GUICtrlGetStyle
    ; Description ...: Retrieves the Styles/ExStyles value(s) of the control.
    ; Syntax.........: GUICtrlGetBkColor($iControlID)
    ; Parameters ....: $iControlID - A valid control ID.
    ; Requirement(s).: v3.3.2.0 or higher
    ; Return values .: Success - Returns an Array[2] = [Style, ExStyle] with the Styles/ExStyles value(s).
    ; Failure - Returns an Array with -1 as the 0 & 1 Index's.
    ; Author ........: guinness & additional information from Melba23.
    ; Example........; Yes
    ;=====================================================================================================================
    Func GUICtrlGetStyle($iControlID)
    Local $aArray[2] = [-1, -1], $aExStyle, $aStyle, $hControl = $iControlID
    If Not IsHWnd($hControl) Then $hControl = GUICtrlGetHandle($iControlID)
    $aStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hControl, "int", 0xFFFFFFF0)
    If Not @error Then
    $aArray[0] = $aStyle[0]
    EndIf
    $aExStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hControl, "int", 0xFFFFFFEC)
    If Not @error Then
    $aArray[1] = $aExStyle[0]
    EndIf
    Return $aArray
    EndFunc ;==>GUICtrlGetStyle

    [/autoit]
    OwnLVSelection_Bsp(0.2).au3
    [autoit]

    #Region - TimeStamp
    ; 2011-10-24 00:42:01 v 0.2
    #EndRegion - TimeStamp
    #include <GuiListView.au3>
    #include "OwnLVSelection.au3"

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

    $gui = GUICreate('Bsp. OwnLVSelection', 430, 300)
    $cLV1 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 200, 135)
    $hLV1 = GUICtrlGetHandle($cLV1)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV1, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV1, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV1)
    _GuiCtrlListview_OwnSelectionSetColor($hLV1, 0xFF55AA, 0xFFFF00)

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

    $cLV2 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 220, 10, 200, 135)
    $hLV2 = GUICtrlGetHandle($cLV2)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV2, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV2, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV2)
    _GuiCtrlListview_OwnSelectionSetColor($hLV2, 0xFFFFFF, 0x0000FF)

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

    $cLV3 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 10, 155, 200, 135)
    $hLV3 = GUICtrlGetHandle($cLV3)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV3, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV3, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV3)
    _GuiCtrlListview_OwnSelectionSetColor($hLV3, 0x222222, 0xCCCCCC)

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

    $cLV4 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 220, 155, 200, 135)
    $hLV4 = GUICtrlGetHandle($cLV4)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV4, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV4, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV4)
    _GuiCtrlListview_OwnSelectionSetColor($hLV4, 0x1111FF, 0x00BBBB)

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

    GUISetState()

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

    Sleep(5000)
    _GuiCtrlListview_OwnSelectionDel($hLV4)

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    OwnLVSelection_Bsp[0.2].au3 1,74 kB – 277 Downloads ownlvselection.JPG 44,65 kB – 0 Downloads OwnLVSelection[1.2].au3 10,74 kB – 309 Downloads
  • _GuiCtrlListView_SetFocusSelected

    • BugFix
    • 23. Oktober 2011 um 17:32

    Ich fand es schon immer nervig, dass ich im Listview bei Selektion eines Item 5 Befehle (inkl. UpdateLV) ausführen muß, damit es aussieht, wie von Hand geklickt den Fokus hat und garantiert sichtbar ist. :wacko:
    Und deshalb habe ich die 5 Aufrufe in eine Funktion gepackt. Die Anwendung bedarf wohl keiner weiteren Erläuterung. ;)

    [autoit]

    Func _GuiCtrlListView_SetFocusSelected($hWnd, $iIndex=0)
    _GUICtrlListView_BeginUpdate($hWnd)
    _GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_FOCUSED, $LVIS_FOCUSED)
    _GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_SELECTED, $LVIS_SELECTED)
    _GUICtrlListView_EnsureVisible($hWnd, $iIndex)
    _GUICtrlListView_EndUpdate($hWnd)
    EndFunc

    [/autoit]
  • Skript gesucht - Deklarierung

    • BugFix
    • 22. Oktober 2011 um 16:45

    Ich hatte ein Skript geschrieben, um ungenutzte Variablen zu ermitteln.
    Es läßt sich aber auch nutzen, um alle Variablen des Skriptes und deren Vorkommen (Funktion, außerhalb Funktion) anzuzeigen.
    https://autoit.de/index.php?page…7347#post217347

  • problem mit switch

    • BugFix
    • 21. Oktober 2011 um 08:42

    [OT]

    Zitat von vivus

    dann ist da noch das leerzeichen zwischen sleep und der klammer ..

    und es fehlt noch das endswitch ..

    und die Formatierung ist auch kacke ..


    Bitte unterlaß solch sinnlose Posts!
    1. Du kannst soviele Leerzeichen zwischen Funktionsname und Klammer schreiben, wie du Lust hast! Hättest du je einen Blick in die Hilfe geworfen, wäre dir aufgefallen, dass in sehr vielen Bsp. immer ein Leerzeichen zwischen Funktionsname und Klammer steht!
    2. Es ist unschwer erkennbar, dass dies hier der Ausschnitt aus einem Skript ist. Beim Kopieren ist EndSwitch nicht mit erwischt worden. - Ist dir sicher noch nie passiert.
    3. Auch du hast sicher schon mal Code statt im Tab "Quellcode", im Tab "Editor" gepostet. Und schon ist die ganze Formatierung futsch.

    Melde dich bitte, wenn du etwas zur Sache zu sagen hast! Aber ein offensichtlich bereits beantwortetes Thema vollzuspamen kannst du dir schenken.
    [/OT]

  • problem mit switch

    • BugFix
    • 21. Oktober 2011 um 08:23
    Zitat von Chrisiii

    bitte einfache erklärung


    Diese ist ganz einfach: Lies mal ganz kurz in der Hilfe zu Switch..Case. Was fällt dir auf: Switch <expression>.
    Du hast nicht festgelegt, welcher Ausdruck im Switch behandelt werden soll.
    So, wie du den Aufbau hast, entspricht es einem Select..Case

  • Desktopplatz "reservieren"

    • BugFix
    • 20. Oktober 2011 um 19:52

    Die Message heißt übrigens WM_SIZING (da hatte ich mich vertan).
    Das Problem ist zu Lösen mit "_WinAPI_SetWindowLong", allerdings will ich dir nicht dein Skript schreiben. Probier erst mal selbst.

    Na gut - hier mal ein Bsp., wie mit der Funktion gearbeitet wird. Das Anpassen für WM_SIZING kannst du ja dann selbst probieren.

    Spoiler anzeigen
    [autoit]

    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Local Const $GWL_WNDPROC = -4

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

    $hGui = GUICreate("Test", 400, 400)
    $hListView = _GUICtrlListView_Create($hGui, "Listview", 10, 10, 380, 380)
    _GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))

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

    ; Load images
    $hImage = _GUIImageList_Create()
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0xFF0000, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x00FF00, 16, 16))
    _GUIImageList_Add($hImage, _GUICtrlListView_CreateSolidBitMap($hListView, 0x0000FF, 16, 16))
    _GUICtrlListView_SetImageList($hListView, $hImage, 1)

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

    ; Add columns
    _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($hListView, 1, "Column 2", 100)
    _GUICtrlListView_InsertColumn($hListView, 2, "Column 3", 100)

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

    ; Add items
    _GUICtrlListView_AddItem($hListView, "Row 1: Col 1", 0)
    _GUICtrlListView_AddSubItem($hListView, 0, "Row 1: Col 2", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "Row 1: Col 3", 2)
    _GUICtrlListView_AddItem($hListView, "Row 2: Col 1", 1)
    _GUICtrlListView_AddSubItem($hListView, 1, "Row 2: Col 2", 1)
    _GUICtrlListView_AddItem($hListView, "Row 3: Col 1", 2)
    GUISetState()

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

    ;
    $hProc = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
    $hHook = _WinAPI_SetWindowLong($hGui, $GWL_WNDPROC, DllCallbackGetPtr($hProc))

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

    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')

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

    While GUIGetMsg() <> -3
    Sleep(10)
    WEnd

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

    _WinAPI_SetWindowLong($hGui, $GWL_WNDPROC, $hHook) ; original WinProc wiederherstellen

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

    Func _WinProc($hWnd, $iMsg, $iwParam, $ilParam)
    ; wenn nicht die gewünschte Msg kommt - Rückgabe an System
    If $iMsg <> $WM_NOTIFY Then Return _WinAPI_CallWindowProc($hHook, $hWnd, $iMsg, $iwParam, $ilParam)

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

    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ConsoleWrite('MyProc: $LVN_COLUMNCLICK -->Column: ' & DllStructGetData($tInfo, "SubItem") & @CRLF)
    Return 0 ; <== Nachricht wird jetzt verworfen und kann über GUIRegisterMsg nicht verwertet werden

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

    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ConsoleWrite("MyProc: $NM_CLICK " & "-->Index: " & DllStructGetData($tInfo, "Index") & _
    " -->SubItem: " & DllStructGetData($tInfo, "SubItem") & @CRLF)
    EndSwitch
    EndSwitch
    ; jetzt wird die normale WinProc aufgerufen, die man mit GuiRegisterMsg auswerten kann
    Return _WinAPI_CallWindowProc($hHook, $hWnd, $iMsg, $iwParam, $ilParam)
    EndFunc ;==>_WinProc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked <== Diese Nachricht erreicht die Funktion nicht mehr
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    ConsoleWrite('GUIRegisterMsg: $LVN_COLUMNCLICK -->Column: ' & DllStructGetData($tInfo, "SubItem") & @CRLF)
    Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
    Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    ConsoleWrite("GUIRegisterMsg: $NM_CLICK " & "-->Index: " & DllStructGetData($tInfo, "Index") & _
    " -->SubItem: " & DllStructGetData($tInfo, "SubItem") & @CRLF)
    EndSwitch
    EndSwitch
    Return 0
    EndFunc ;==>WM_NOTIFY

    [/autoit]

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™