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

  • ListView reagiert nicht

    • BugFix
    • 15. Januar 2009 um 22:08

    Hier mal ein Bsp. für SimpleSort per Spaltenklick.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    $gui = GUICreate('Test LV-Sort')
    $hListView = GUICtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 300, 200)
    For $i = 1 To 15
    GUICtrlCreateListViewItem(Chr(Random(65,90)) & '|' & Chr(Random(65,90)), $hListView)
    Next
    GUISetState()

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

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    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)
    _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Edit:
    Und hier mit _GUICtrlListView_RegisterSortCallBack:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    $gui = GUICreate('Test LV-Sort')
    $hListView = GUICtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 300, 200)
    For $i = 1 To 15
    GUICtrlCreateListViewItem(Chr(Random(65,90)) & '|' & Chr(Random(65,90)), $hListView)
    Next
    $hListView = GUICtrlGetHandle($hListView)
    $b1 = GUICtrlCreateButton('sort 1', 20, 240, 65, 20)
    $b2 = GUICtrlCreateButton('sort 2', 100, 240, 65, 20)

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

    GUISetState()

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

    _GUICtrlListView_RegisterSortCallBack($hListView)

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

    Do
    $msg = GUIGetMsg()
    Switch $msg
    Case $b1
    _GUICtrlListView_SortItems($hListView, 0)
    Case $b2
    _GUICtrlListView_SortItems($hListView, 1)
    EndSwitch
    Until $msg = $GUI_EVENT_CLOSE
    _GUICtrlListView_UnRegisterSortCallBack($hListView)

    [/autoit]
  • Programm für Frachtkostenberechnung

    • BugFix
    • 15. Januar 2009 um 21:50
    Zitat von cphowdy

    wie groß eine DB sein darf

    Also einige Tausend Einträge verkraftet die Datenbank ohne zu zucken ;-).
    Und je mehr Daten du in einem Execute bearbeitest, umso schneller ist SQLite.

    Zitat

    Außerdem hätte ich noch gerne eine Suchfunktion in der ich entweder nach PLZ oder Ort suchen kann.

    $sSearch = _
    "SELECT * FROM tabelle WHERE plz = 'suchstring';"
    Analog für Ort.

    Schau mal ins Unterforum Datenbanken, da findest du Bsp. wie du mit DB umgehst.


    Edit:
    Mal zum Beweis, dass SQLite auch große Datenmengen verkraftet :)
    Ein Mustercode, der eine DB mit 1000 Datensätzen erstellt und anschließend in die Console ausgibt. Bitte etwas Geduld haben, die Feldinhalte werden per Zufall generiert - das dauert schon ein wenig... :D

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>

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

    Local $sSQliteDll_Path = _SQLite_Startup()
    $hSQL = _SQLite_Open(@ScriptDir & '\big_test.db')
    $strCREATE = _
    "CREATE TABLE [Musik] (" & _
    "[id] INTEGER PRIMARY KEY NOT NULL," & _
    "[titel] VARCHAR[50] NULL," & _
    "[interpret] VARCHAR[50] NULL," & _
    "[genre] VARCHAR[30] NULL)"
    If _SQLite_Exec ( $hSQL, $strCREATE ) <> $SQLITE_OK Then ; wenn Fehler
    _Beenden('Fehler CREATE')
    EndIf

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

    Global $aInsert[1000]
    For $i = 0 To UBound($aInsert) -1
    $aInsert[$i] = $i+1 & ',' & _GetRandomStr(20) & ',' & _GetRandomStr(20) & ',' & _GetRandomStr(10)
    Next

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

    Func _GetRandomStr($len)
    Local $str = ''
    For $i = 1 To $len
    $str &= Chr(Random(65,90,1))
    Next
    Return $str
    EndFunc

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

    If _SQLite_INSERT('Musik', $aInsert) <> $SQLITE_OK Then _Beenden('Fehler INSERT')

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

    ; Tabelleninhalt in Console ausgeben
    If $SQLITE_OK <> _SQLite_Exec($hSQL, "SELECT * FROM Musik", "_cb" ) Then
    MsgBox(0,"SQLite Error","Error Code: " & _SQLite_ErrCode() & @CR & "Error Message: " & _SQLite_ErrMsg())
    _SQLite_Close() ; schließt die Datenbank
    _SQLite_Shutdown()
    Exit
    EndIf

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

    _Beenden('Test Ende')

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

    Func _Beenden($MSG)
    _SQLite_Close()
    _SQLite_Shutdown()
    Exit MsgBox(0, 'Ende', $MSG)
    EndFunc

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

    Func _cb($aRow)
    For $s In $aRow
    ConsoleWrite($s & @TAB)
    Next
    ConsoleWrite(@LF)
    EndFunc

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

    Func _SQLite_INSERT($sTable, $saValues, $Delim=',')
    Local $sInsert = ''
    If Not IsArray($saValues) Then
    Local $aValues[1] = [$saValues]
    Else
    Local $aValues = $saValues
    EndIf
    For $i = 0 To UBound($aValues) -1
    Local $splitVal = StringSplit($aValues[$i], $Delim)
    $sInsert &= "INSERT INTO " & $sTable & " VALUES ("
    For $k = 1 To UBound($splitVal) -1
    $sInsert &= "'" & StringStripWS($splitVal[$k], 3) & "'" & ','
    Next
    $sInsert = StringTrimRight($sInsert, 1) & ");"
    Next
    If $SQLITE_OK <> _SQLite_Exec ( -1, $sInsert ) Then
    Return SetError(1,0,1)
    Else
    Return $SQLITE_OK
    EndIf
    EndFunc

    [/autoit]
  • ListView reagiert nicht

    • BugFix
    • 15. Januar 2009 um 21:45

    Die von dir benannten Funktionen verlangen das ListView-Handle.
    Falls du also dein LV mit: $ListView = GUICtrlCreateListView() erstellt hast, solltest du das Handle abfragen: $hListView = GUICtrlGetHandle($ListView) und damit weiterarbeiten.

  • WLan key Schreiben?

    • BugFix
    • 14. Januar 2009 um 20:16
    Zitat von GtaSpider

    Will ein WLan Key schreiben den der User vorher eingibt.


    Ähh.. also der Key existiert, ist bereits erfaßt und soll jetzt (darauf zielt deine Frage) in das Windows-WLAN-Verwaltungstool eingetragen werden?

  • WLan key Schreiben?

    • BugFix
    • 14. Januar 2009 um 19:44

    Großes Fragezeichen !
    Verstehe nicht so den Sinn. Brauchst du einen Key-Generator oder willst du den Standard wissen, nachdem die Schlüssel erstellt werden?

  • gui mit whille schleife

    • BugFix
    • 14. Januar 2009 um 18:58

    Eines noch, es ist übersichtlicher, wenn du das in eine Funktion auslagerst.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Global $stat = 0
    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Starte Help', 10, 20, 100, 20)
    GUICtrlSetBkColor($btn1, 0x00FF00)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()
    $pid = ProcessExists('AutoIt3Help.exe')
    If $stat <> $pid Then $stat = _ToggleBtnCol($btn1, $pid)
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    If $stat Then
    ProcessClose($stat)
    Else
    ShellExecute(StringReplace(@AutoItExe, 'autoit3.exe', 'AutoIt3Help.exe'))
    EndIf
    EndSwitch
    WEnd

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

    Func _ToggleBtnCol($ID, $PID)
    If $PID Then
    GUICtrlSetBkColor($ID, 0xFA8072)
    ControlSetText($gui1, '', $ID, 'Beende Help')
    Else
    GUICtrlSetBkColor($ID, 0x00FF00)
    ControlSetText($gui1, '', $ID, 'Starte Help')
    EndIf
    Return $PID
    EndFunc

    [/autoit]
  • gui mit whille schleife

    • BugFix
    • 14. Januar 2009 um 18:11

    Hier mal ein allg. Bsp.

    [autoit]

    #include <GUIConstants.au3>

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

    Global $stat = False
    $gui1 = GUICreate('GUI 1')
    $btn1 = GUICtrlCreateButton('Starte Help', 10, 20, 100, 20)
    GUICtrlSetBkColor($btn1, 0x00FF00)

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

    GUISetState(@SW_SHOW, $gui1)

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

    While 1
    $msg = GUIGetMsg()
    If $stat Then
    If Not ProcessExists('AutoIt3Help.exe') Then
    GUICtrlSetBkColor($btn1, 0x00FF00)
    $stat = False
    EndIf
    Else
    If ProcessExists('AutoIt3Help.exe') Then
    GUICtrlSetBkColor($btn1, 0xFA8072)
    $stat = True
    EndIf
    EndIf
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    ShellExecute(StringReplace(@AutoItExe, 'autoit3.exe', 'AutoIt3Help.exe'))
    EndSwitch
    WEnd

    [/autoit]
  • gui mit whille schleife

    • BugFix
    • 14. Januar 2009 um 17:49

    Zum Einen setzt du die Textfarbe (du willst doch aber sicher den Button selbst färben -> GUICtrlSetBkColor), zum Anderen setzt du die Farbe ständig (solange der Prozess existiert). Besser, eine Variable, die den Status aufnimmt, und nur wenn der Status sich ändert, wird auch die Farbe geändert.

  • Button zeigt bild nicht an

    • BugFix
    • 14. Januar 2009 um 17:32
    Zitat von Jam00

    Und woher weißt du meinen Namen?

    Tja, Hendrik Nork...., man sollte auch in ICQ nicht seinen RealName angeben. :P

  • Wie erstelle ich eine *.DLL?

    • BugFix
    • 14. Januar 2009 um 17:25

    Lange Rede - kurzer Sinn: Dann mußt du halt den notwendigen Aufwand in Kauf nehmen. Punkt.

  • Wie erstelle ich eine *.DLL?

    • BugFix
    • 14. Januar 2009 um 17:21

    Ich bevorzuge:
    - Ressourcen mit FileInstall in das Skript binden
    - bei Programmstart auf Existenz der Ressourcendateien prüfen
    - wenn nicht vorhanden ==> installieren
    ferddisch :D

  • Wie erstelle ich eine *.DLL?

    • BugFix
    • 14. Januar 2009 um 16:44
    Zitat von Jam00

    Wie kann ich denn die Resurcen aus einer DLL abrufen? Also ich meine geht das auch mit einer Ganz normalen Gui, bei BugFix ist das so komplizirt!

    Man kann nicht alles haben... :D
    Ich verstehe sowieso nicht, warum plötzlich jeder seine Ressourcen in einer dll verbarrikadieren will. :S
    Aber wer das Eine will, muß das Andere mögen - sprich: es ist (teilweise) ein gewisser Aufwand notwendig, um die Ressourcen wieder verfügbar zu machen. :P

  • DLL

    • BugFix
    • 14. Januar 2009 um 16:22

    Ich hab mal geschaut - ist jetzt nicht mehr drin. :(

    Übrigens, hier mal ein Link, da könnt ihr sehen, was sich dadurch alles verändern läßt.
    http://wiki.deskmodder.de/wiki/index.php/Reshacker

  • Eben bei Amazon...

    • BugFix
    • 14. Januar 2009 um 15:44

    :rofl:
    Dann ist das aber ein sehr günstiges Gewicht/Preis-Verhältnis! :D

  • Den Inhalt zweier Ordner Vergleichen

    • BugFix
    • 14. Januar 2009 um 15:36

    Ich hab mal eine UDF erstellt _GetIntersection(), damit kannst du aus Auflistungen/Arrays Übereinstimmungen und Differenzen herausfiltern. Das ließe sich hierfür sicher gut verwenden.

  • DLL

    • BugFix
    • 14. Januar 2009 um 15:27
    Zitat von Jam00

    Und wie bekomme ich da was in die DLL? Könnt ihr mir mal einen Namen von einem Guten ResHack geben

    :D Der Reshacker ==> wird dir mit SciTE4AutoIt mitinstalliert. Schau mal ins Installationsverzeichnis. ;)
    Ordner: ..\Programme\AutoIt3\SciTE\AutoIt3Wrapper

  • Controlsettext schreibt nichts in die Textbox

    • BugFix
    • 14. Januar 2009 um 14:04

    Probier mal so:

    [autoit]

    If Not ControlSetText("SnagIt 9.0.2 Installation", "", 1362, "text") Then MsgBox(0, '', 'Ctrl nicht gefunden.')

    [/autoit]


    Dann hast du gleich eine Fehlerauswertung.
    Vielleicht hilft es die CLASS des Ctrl zu verwenden, statt der ID. Einfach mal alles testen.

  • Stringauswertung

    • BugFix
    • 14. Januar 2009 um 13:58

    Da die Fragen dazu häufig sind, hatte ich mal ein Muster erstellt:

    Spoiler anzeigen
    [autoit]

    ; Muster Checkbox-Bearbeitung
    ; Ziel: einfache Abfrage, welche CB aktiviert sind

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

    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Opt("MustDeclareVars", 1)
    Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
    Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
    For $i = 0 To UBound($arCB) -1
    $arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
    Next
    Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
    ; Startstatus für alle: UNCHECKED
    Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
    Global $top = -10
    $GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
    For $i = 0 To UBound($arCB) -1
    $top += 30
    $arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
    GUICtrlSetOnEvent(-1, '_ClickCB')
    Next
    $bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
    GUICtrlSetOnEvent(-1, '_CheckAll')
    $bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
    GUICtrlSetOnEvent(-1, '_UnCheckAll')
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Ende()
    Exit
    EndFunc

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

    Func _ClickCB()
    For $i = 0 To UBound($arCB) -1
    If $arCB[$i][0] = @GUI_CtrlId Then
    $Checked = BitXOR($Checked, $arCB[$i][1])
    ExitLoop
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _CheckAll()
    For $i = 0 To UBound($arCB) -1
    If Not BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _UnCheckAll()
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then
    GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
    $Checked = BitXOR($Checked, $arCB[$i][1])
    EndIf
    Next
    _ReadCB()
    EndFunc

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

    Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
    Local $str = 'Markiert: '
    For $i = 0 To UBound($arCB) -1
    If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
    Next
    WinSetTitle($GUI, '', StringTrimRight($str, 2))
    EndFunc

    [/autoit]
  • Fenster schließen ?

    • BugFix
    • 14. Januar 2009 um 13:50

    Das hat mehrsolala doch schon (fast) beantwortet. :P

    [autoit]

    WinActivate("VENTURIS Setup", "InstallShield Wizard hat die Wartungsoperationen")
    WinWait("VENTURIS Setup", "InstallShield Wizard hat die Wartungsoperationen")

    [/autoit]

    ist 'suboptimal' :D
    besser:

    [autoit]

    WinActivate("VENTURIS Setup", "InstallShield Wizard hat die Wartungsoperationen")
    WinWaitActive("VENTURIS Setup", "InstallShield Wizard hat die Wartungsoperationen")

    [/autoit]
  • Fenster eindeutig erkennen

    • BugFix
    • 13. Januar 2009 um 17:44

    Die Fenster werden doch nicht zeitgleich erscheinen? - Oder?
    Also kannst du doch auf das Erscheinen des Fensters mit dem Title: "XX Programm 2009" (oder Class: #32770) warten und dann auf das folgende, etc. Wo ist das Problem?

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™