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

  • Lupe Gestrecktes Fenster GUI Fenster anpassen

    • BugFix
    • 11. Juli 2009 um 14:06
    Zitat von tuttifrutti

    Kann man es auch so machen , dass dieses Fenster die Maus verfolgt ?
    =) Wäre total gut ^^

    Das ist doch nun wirklich einfach ;)
    - MouseGetPos
    - WinMove

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 11. Juli 2009 um 13:03
    Zitat von skyteddy

    Woher kommt dieser Leerbereich?

    Zitat von peethebee

    Sieht mir rein optisch aus wie die Hintergrundfarbe des Controls.


    Genauso ist es, die Hintergrundfarbe des Controls ist natürlich sichtbar auch wenn kein weiteres Item folgt. Solange Platz da ist, wird er auch eingefärbt.
    Besonders deutlich wird das, wenn du die Spaltenbreite verringerst. (s. Bild)
    Allerdings habe ich diesen Leerbereich nach unten nur dann, wenn es weniger Item sind, als im LV-Bereich dargestellt werden könnten. Also wenn die vertikale Scrollleiste sichtbar ist, ist bei mir dieser Effekt aufgehoben.

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

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 10. Juli 2009 um 22:33
    Zitat von skyteddy

    Ich würde schon gerne Deine Mehrfarbenlösung benutzen. Hast Du noch ne Idee, wie man das beschleunigen kann?

    Ich sehe hier leider kein Potential, das weiter zu beschleunigen. Das Problem liegt dadrin, dass bei jedem Zeichnen des Item die Aufrufe zum Zeichnen neu erfolgen müssen.

    Zitat von skyteddy

    PS. Weißt Du warum am Ende meines zweiten Beispiels unten ein Leerzeile sichtbar ist?

    Seltsam, wenn ich das Bsp. ausführe, ist dort keine Leerzeile. ?(

    P.S. Auf meinem lahmen Schleppi (Intel Celeron; 1,5 GHz; 448 MB RAM) läuft das recht zügig. Ja, es ruckelt - aber nicht so, dass ich Augenkrebs bekomme. :D

    Edit:
    Hatte gar nicht bedacht, dass du ja die Fontfunktionen nicht benötigst. Habe WM_NOTIFY jetzt mal etwas gekürzt. Könnte noch ein bischen Performance bringen.

    Spoiler anzeigen
    [autoit]

    Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR

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

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

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

    Switch $hWndFrom
    Case $hListView1, $hListView2
    Switch $iCode
    Case $NM_CUSTOMDRAW
    If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
    Local $iItem
    Switch DllStructGetData($tCustDraw, 'dwDrawStage')
    Case $CDDS_ITEMPREPAINT
    Return $CDRF_NOTIFYSUBITEMDRAW
    Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
    $iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aColor[$iItem])) ; Hintergrundfarbe aus Array
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
    Zitat von skyteddy

    Ich hab Dein Script jetzt mal als Basis genommen um zu verstehen, wie das colorieren funktioniert. So richtig verstanden habe ich es nicht

    Ist gar nicht so schwer, wenn auch nicht unbedingt offensichtlich. ;)
    Passiert alles in WM_NOTIFY:
    $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
    Hier wird die Struktur $tCustDraw befüllt mit den Werten vom Pointer $lParam (für das aktuelle ListViewItem).
    Werden jetzt Werte in dieser Struktur geändert, so sind diese sofort gültig.
    Das passiert für die Hintergrundfarbe in folgendem Befehl:
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aColor[$iItem]))

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 10. Juli 2009 um 16:42
    Zitat von skyteddy

    Und genau dafür brauche ich deinen Lösung, oder kann man das anders auch lösen?


    Ja, kann man. Da ist es nicht nötig für jede Zelle die Werte zu hinterlegen. Es wird einfach der Farbwert für die Zeile in einem Array hinterlegt:

    Spoiler anzeigen
    [autoit]

    #include <FontConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    #region - GUI
    $GUI = GUICreate("Test", 600, 440)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_exit')
    $cListView1 = GUICtrlCreateListView("", 2, 2, 290, 420, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    $hListView1 = GUICtrlGetHandle($cListView1)
    _GUICtrlListView_InsertColumn($hListView1, 0, "Column 1", 90)
    _GUICtrlListView_InsertColumn($hListView1, 1, "Column 2", 90)
    _GUICtrlListView_InsertColumn($hListView1, 2, "Column 3", 90)
    $cListView2 = GUICtrlCreateListView("", 300, 2, 290, 420, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    $hListView2 = GUICtrlGetHandle($cListView2)
    _GUICtrlListView_InsertColumn($hListView2, 0, "Column 1", 90)
    _GUICtrlListView_InsertColumn($hListView2, 1, "Column 2", 90)
    _GUICtrlListView_InsertColumn($hListView2, 2, "Column 3", 90)
    For $i = 1 To 30
    _GUICtrlListView_AddItem($hListView1, "Row" & $i & ": Col 1", $i-1)
    _GUICtrlListView_AddItem($hListView2, "Row" & $i & ": Col 1", $i-1)
    For $j = 1 To 2
    _GUICtrlListView_AddSubItem ($hListView1, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    _GUICtrlListView_AddSubItem ($hListView2, $i-1, "Row" & $i & ": Col " & $j+1, $j)
    Next
    Next
    #endregion - GUI

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

    #region - Global settings
    Global $hFont, $defColLV = 0x000000
    ; Array mit Farben für jede Zeile:
    Global $aColor[30] = [ _
    0x0033FF,0xCCFFFF,0x3333FF,0x99FFFF,0x6633FF,0xFF99FF,0x0099FF,0xCC99FF,0x00FFFF,0xFF33FF, _
    0xFFFF00,0x003300,0x99FF00,0x663300,0xFF9900,0x009900,0xFF3300,0x669900,0x00BFFF,0xDAA520, _
    0x87CEEB,0xD2691E,0xFFDEAD,0x7B68EE,0xDEB887,0xEE82EE,0x3CB371,0xF4A460,0xADD8E6,0x00FF7F]
    #endregion - Global settings

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUISetState(@SW_SHOW, $GUI)

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

    While True
    Sleep(100)
    WEnd

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

    Func _exit()
    _WinAPI_DeleteObject($hFont)
    Exit
    EndFunc ;==>_exit

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

    Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hListView1, $hListView2
    Switch $iCode
    Case $NM_CUSTOMDRAW
    If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
    Local $iDrawStage, $iItem, $hDC
    $iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
    Switch $iDrawStage
    Case $CDDS_ITEMPREPAINT
    Return $CDRF_NOTIFYSUBITEMDRAW
    Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
    $iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
    DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aColor[$iItem])) ; Hintergrundfarbe aus Array
    DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV)) ; Standardschriftfarbe
    $hFont = _WinAPI_CreateFont(14,0,0,0,$FW_NORMAL,False,False,False,$DEFAULT_CHARSET,$OUT_DEFAULT_PRECIS, _
    $CLIP_DEFAULT_PRECIS,$DEFAULT_QUALITY,0,'Arial')
    _WinAPI_SelectObject($hDC, $hFont)
    Return $CDRF_NEWFONT
    EndSwitch
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/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 ;==>RGB2BGR

    [/autoit]
  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 10. Juli 2009 um 09:49
    Zitat von skyteddy

    jede zweite Reihe farbig mit einer Farbe zu versehen. Font ist mir derzeit nicht wichtig.


    Also das Ziel erreichst du ohne meine Formatfunktion. Das geht schon seit geraumer Zeit standardmäßig:

    [autoit]

    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    GUICreate('Test')

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

    $ListView1 = GUICtrlCreateListView("Spalte 1|Spalte 2", 15, 15, 300, 250)
    GUICtrlSetBkColor(-1, 0xFF4400) ; Farbe ungerade Zeilen
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
    _GUICtrlListView_SetColumnWidth($ListView1, 0, 148)
    _GUICtrlListView_SetColumnWidth($ListView1, 1, 148)

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

    For $i = 1 To 10
    GUICtrlCreateListViewItem(Random(10000, 1000000, 1) & '|' & Random(10000, 1000000, 1), $ListView1)
    GUICtrlSetBkColor(-1, 0xFFFF23) ; Farbe gerade Zeilen
    Next

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

    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Acronis Image Überprüfen

    • BugFix
    • 10. Juli 2009 um 09:44

    Machs mal so:

    Spoiler anzeigen
    [autoit]

    ; Erstelle dein Listview so, dass es NICHT sortiert ist oder sortiert werden kann.
    ; Dann sind die Indexangaben identisch mit den Index im Array!

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

    ; ...
    ; ...
    $LV = GUICtrlCreateListView('....')
    $hLV = GUICtrlGetHandle($LV)
    ; ...
    ; ...

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

    Local $path = 'Dein_Suchpfad'
    Local $aFiles = _GetFilesFolder_Rekursiv($path, 'tib', 0) ; Ausgabe in Array, nur Dateien
    If Not IsArray($aFiles) Then Exit MsgBox(0, 'Fehler', 'Keine "tib"-Files vorhanden.')
    _ArrayDelete($aFiles, 0) ; Zähler löschen für Indexübereinstimmung mit LV

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

    ; Dateinamen in LV eintragen
    Local $FileName
    For $i = 0 To UBound($aFiles) -1
    $FileName = StringRight($aFiles[$i], StringLen($aFiles[$i] - StringInStr($aFiles[$i], '\', -1)))
    _GUICtrlListView_AddItem($hLV, $FileName)
    Next

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

    ; beim Auslesen des markierten LV-Eintrages
    Local $index = _GUICtrlListView_GetSelectedIndices($hLV)
    ; den zugehörigen Dateipfad kannst du jetzt direkt aus dem Array auslesen
    Local $currFilePath = $aFiles[$index]

    [/autoit]
  • Acronis Image Überprüfen

    • BugFix
    • 9. Juli 2009 um 21:27

    Mal unabhängig von deiner Frage: Warum tust du dir das überhaupt an? Ich erstelle die Images standardmäßig mit Option Validierung. Dann hast du sofort die geprüften Images.

  • verschobene Darstellung im Portal

    • BugFix
    • 9. Juli 2009 um 19:07
    Zitat von progandy

    wenn ich als Auflösung <= 1024x786 wähle...


    Das ist die bei mir größtmögliche Auflösung... :D

  • verschobene Darstellung im Portal

    • BugFix
    • 9. Juli 2009 um 18:32

    Hi,
    habt ihr auch auf der Portalseite unseres Forums solch verschobene Darstellung?
    Habe es mit mehreren Browsern getestet - sieht überall gleichermaßen besch.. aus. ;)

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

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 9. Juli 2009 um 18:25
    Zitat von skyteddy

    Du schreibst, daß die aktuellste Version in der Datei "FormatSubItemLV_new.au3" zu finden ist. Die ist aber viel kleiner als "FormatSubItemLVex.au3" (10 anstatt 18kb).
    Obendrein ist nichts kommentiert und es fehlen Funktionen, wie z.B. _OneRowSetCol.

    Ja klar ist die neueste Version viel kleiner, habe ich doch auch geschrieben:

    Zitat

    Code ist kürzer und schneller. s. Post 1, Bsp.: FormatSubItemLV_new.au3


    Mit der Funktion:
    _SetItemParam($hWnd, $iItem, $iSubItem, $iBkCol=-1, $iCol=-1, $iSize=-1, $iWeight=-1, $sFont=-1)
    kannst du alle notwendigen Einstellungen vornehmen, also Einzelzelle, Zeile oder Spalte formatieren. Mußt sie halt notwendigerweise in einer Schleife mehrfach ausführen.

  • Rekursive Datei/Ordner Auflistung per Objekt

    • BugFix
    • 8. Juli 2009 um 20:57
    Zitat

    Ihr übergebt Pfad (für aktuellen Pfad kann '.' und für übergeordneten Pfad kann '..' verwendet werden), Dateierweiterung ('*' oder -1 für alle[Standard]) und ein OrdnerFlag (-1 Datei+Ordner[Standard], 0 nur Dateien, 1 nur Ordner).


    Was von den erforderlichen Parametern soll bitte "poker" sein? ;)

  • Arbeitszeit Rechner

    • BugFix
    • 6. Juli 2009 um 18:58
    Zitat von Zero2q

    geht iwie nicht =(

    Die genaueste Fehlerbeschreibung seit Erfindung der deutschen Sprache... :rofl:

  • Befehle aus einem Array ausführen

    • BugFix
    • 6. Juli 2009 um 13:21
    Zitat von L0c4lh0sT

    Dann versteh ich die Hilfe nicht.


    ?( Was ist denn dadran so unverständlich?

    Zitat von Hilfe FileSaveDialog und FileOpenDialog

    Rückgabewert
    Erfolg: Gibt den kompletten Pfad der ausgewählten Datei zurück. Rückgabe mehrerer Dateien wie folgt: "Verzeichnis|Datei1|Datei2|..."

  • Befehle aus einem Array ausführen

    • BugFix
    • 6. Juli 2009 um 13:08
    Zitat von L0c4lh0sT

    Wo wird gesagt was er speichern soll bei FileSaveDialog und wo bei FileOpenDialog


    Der Rückgabewert der Funktionen enthält den Pfad. Steht aber auch in der Hilfe ;)

  • Befehle aus einem Array ausführen

    • BugFix
    • 6. Juli 2009 um 09:53

    Kein Problem, das geht so:

    [autoit]

    Local $aExecute[3] = ['Beep(50,30)','Sleep(20)','Beep(2000, 20)']
    For $i = 0 To UBound($aExecute) -1
    Execute($aExecute[$i])
    Next

    [/autoit]
  • Bug - Array bearbeiten mit 8 bzw. 9 Einträgen geht nicht?

    • BugFix
    • 5. Juli 2009 um 22:55

    Schau dir mal in der Hilfe die For - Next - Schleife an, dann löst sich dein Problem sicher von selbst.
    Außerdem solltest du nicht die Werte aus dem Array löschen, nachdem du diese für deine Checkboxen verwendet hast. Ist sinnlos und kostet nur Rechenzeit.

  • AutoIt ... für Linux

    • BugFix
    • 4. Juli 2009 um 12:17

    Ich habe selbst mal ein wenig mit Tk/Tcl rumprobiert. Soweit ich das beurteilen kann, sind zumindest grundlegende GUI-Konstruktionen problemlos möglich. Feinheiten, wie ReBar o.ä. habe ich dort noch nicht gesucht und in den Musterkripts auch nicht entdeckt.
    Ist aber auch intuitiv erlernbar. Also durchaus einen Versuch wert.

  • µit - Juli

    • BugFix
    • 4. Juli 2009 um 11:04
    Zitat von eukalyptus

    Eine weitere Frage drängt sich auf:
    Wenn $sSearch = Leerstring, dann sollen alle Zeichen gezählt werden.
    Sollen in diesem Fall auch die @lf,@cr und/oder Leerzeichen mitgezählt werden.
    Das wäre dann kein Unterschied zu StringLen!


    Mit der momentanen Testsuite wird ja derselbe Wert, wie bei StringLen ermittelt. Soll das nun so bleiben oder wollen wir uns von StringLen abgrenzen und uns auf die sichtbaren Zeichen beschränken (also auch Leerzeichen aber kein @LF, @CR) ? Das wäre dann auch die Zählweise, wie sie in Word verwendet wird. Ist m.E. praxisnäher.

  • Assembly

    • BugFix
    • 2. Juli 2009 um 17:33

    Das hieße dann aber wirklich das Fahrrad neu erfinden. ;)
    Schließlich gibt es Gacutil.exe

  • Problem mit VBS Übersetzung in AutoIt

    • BugFix
    • 30. Juni 2009 um 08:41

    Hi,
    nur ganz kurz bevor ich losfahr:
    MSIINSTALLCONTEXT_MACHINE ist eine Konstante, da muß noch der Wert zu rausgesucht werden.
    Ich bin mir auch nicht ganz sicher ob alles rund ist. Im Moment hab ich nur keine Zeit weiter zu probieren. Evtl. komme ich heute Abend oder morgen nochmal dazu.

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™