• Offizieller Beitrag

    Ihr kennt das sicher, man schreibt an einem Projekt und erstellt sich dafür skriptinterne Funktionen. Eigentlich zu klein um sie als UDF zu posten, aber nützlich vllt. auch für jemand anderen.
    Aus diesem Grund denke ich mir, dass es sinnvoll ist diesen "Snippet-Code" zu sammeln.
    Damit es übersichtlich ist und auch der gewünschte Nutzen entsteht, sollten diese kleinen Schätzchen mit einer ordentlichen Funktionsbeschreibung versehen werden.
    Auch ein minimales Bsp.-Skript wär schön.
    Und damit es auch über die Forumssuche auffindbar ist: Suchtags einfügen.
    Beteiligt euch ruhig emsig.

    Hier meine ersten Snippets:

    _GuiCtrlSwitchChecked
    [autoit]

    ;===============================================================================
    ; Function Name....: _GuiCtrlSwitchChecked
    ; Description......: Schaltet den Status einer Checkbox (od. eines Radio) in den
    ; .................: entgegengesetzten Zustand (CHECKED <==> UNCHECKED)
    ; Parameter(s).....: $_iCtrlID ID der Checkbox(des Radio)
    ; Return Value(s)..: Erfolg 1
    ; .................: Fehler 0
    ; Note.............: Für Radio nicht unbedingt sinnvoll. Beim Wechsel UNCHECKED zu
    ; .................: CHECKED wird natürlich ein anderes Radio UNCHECKED. Aber anders
    ; .................: herum ist es ja nicht bekannt, welches Radio gechecked
    ; .................: werden soll und deshalb sind dann alle UNCHECKED
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlSwitchChecked($_iCtrlID)
    Return GUICtrlSetState($_iCtrlID, BitXOR(BitOR($GUI_CHECKED, $GUI_UNCHECKED), BitAND(GUICtrlRead($_iCtrlID),$GUI_CHECKED)))
    EndFunc ;==> _GuiCtrlSwitchChecked

    [/autoit]
    Beispiel
    [autoit]

    $GUI = GUICreate('Test Check', 200, 100)
    $cb = GUICtrlCreateCheckbox('CheckBox', 10, 10)
    $radio1 = GUICtrlCreateRadio('Radio1', 10, 57)
    $radio2 = GUICtrlCreateRadio('Radio2', 70, 57)
    $bt1 = GUICtrlCreateButton('CheckBox', 130, 10, 60)
    $bt2 = GUICtrlCreateButton('Radio1', 130, 55, 60)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $bt1
    _GuiCtrlSwitchChecked($cb)
    Case $bt2
    _GuiCtrlSwitchChecked($radio1)
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Suchbegriffe: Controlstatus, Checked, Unchecked

    _GuiCtrlsSetColors
    [autoit]

    ;===============================================================================
    ; Function Name....: _GuiCtrlsSetColors
    ; Description......: Bei bis zu 10 Controls gleichzeitig dieselbe Text- und/oder
    ; .................: Hintergrundfarbe setzen
    ; Parameter(s).....: $_iColor Textfarbe, -1 setzt Textcolor nicht
    ; .................: $_iBkColor Hintergrundfarbe, -1 setzt Hintergrundfarbe nicht
    ; .................: $_ctrl1 erstes Control für das die Farbe(n) gesetzt wird(werden)
    ; ......[optional].: $_ctrl2..10 weiter Controls für dieselbe Farbsetzung
    ; Return Value(s)..: Erfolg 1
    ; .................: Fehler 0 @error=1 kein Control übergeben
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlsSetColors($_iColor, $_iBkColor=-1, $_ctrl1=-1, $_ctrl2=-1, $_ctrl3=-1, $_ctrl4=-1, $_ctrl5=-1, $_ctrl6=-1, $_ctrl7=-1, $_ctrl8=-1, $_ctrl9=-1, $_ctrl10=-1)
    Local $aCtrl[10] = [$_ctrl1, $_ctrl2, $_ctrl3, $_ctrl4, $_ctrl5, $_ctrl6, $_ctrl7, $_ctrl8, $_ctrl9, $_ctrl10]
    If $_ctrl1 = -1 Then Return SetError(1,0,0)
    For $i = 0 To 9
    If $aCtrl[$i] = -1 Then Return
    If $_iBkColor > -1 Then GUICtrlSetBkColor($aCtrl[$i], $_iBkColor)
    If $_iColor > -1 Then GUICtrlSetColor($aCtrl[$i], $_iColor)
    Next
    Return 1
    EndFunc ;==>_GuiCtrlsSetColors

    [/autoit]
    Beispiel
    [autoit]

    $GUI = GUICreate('Test Color', 200, 100)
    $label = GUICtrlCreateLabel('Label', 10, 10)
    $in = GUICtrlCreateInput('Input', 10, 35, 60)
    GUICtrlSetBkColor(-1, 0xF0F0F0)
    $cb = GUICtrlCreateCheckbox('CheckBox', 10, 60)
    ; "Checkbox, Radio, Group or Progress controls cannot be painted if the "Windows XP/Vista style" is used."
    $bt1 = GUICtrlCreateButton('Set', 130, 10, 60)
    $bt2 = GUICtrlCreateButton('ReSet', 130, 55, 60)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $bt1
    _GuiCtrlsSetColors(0xFFFFFF, 0x0000FF, $label, $in, $cb, $bt1, $bt2)
    Case $bt2
    _GuiCtrlsSetColors(0x000000, 0xF0F0F0, $label, $in, $cb, $bt1, $bt2)
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Suchbegriffe: Textfarbe, Hintergrundfarbe

    _GuiCtrlsSetState
    [autoit]

    ;===============================================================================
    ; Function Name....: _GuiCtrlsSetState
    ; Description......: Bei bis zu 10 Controls gleichzeitig denselben Statuswert setzen
    ; Parameter(s).....: $_iState Statuswert (od. BitOR-Kombination Werte) der gesetzt werden soll
    ; .................: $_ctrl1 erstes Control für das der Status gesetzt wird
    ; ......[optional].: $_ctrl2..10 weiter Controls für die der Status gesetzt wird
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlsSetState($_iState, $_ctrl1, $_ctrl2=-1, $_ctrl3=-1, $_ctrl4=-1, $_ctrl5=-1, $_ctrl6=-1, $_ctrl7=-1, $_ctrl8=-1, $_ctrl9=-1, $_ctrl10=-1)
    Local $aCtrl[10] = [$_ctrl1, $_ctrl2, $_ctrl3, $_ctrl4, $_ctrl5, $_ctrl6, $_ctrl7, $_ctrl8, $_ctrl9, $_ctrl10]
    For $i = 0 To 9
    If $aCtrl[$i] = -1 Then Return
    GUICtrlSetState($aCtrl[$i], $_iState)
    Next
    EndFunc ;==>_GuiCtrlsSetState

    [/autoit]
    Beispiel
    [autoit]

    $GUI = GUICreate('Test Status', 200, 100)
    $label = GUICtrlCreateLabel('Label', 10, 10)
    $in = GUICtrlCreateInput('Input', 10, 35, 60)
    $cb = GUICtrlCreateCheckbox('CheckBox', 10, 60)
    $bt1 = GUICtrlCreateButton('Disable', 130, 10, 60)
    $bt2 = GUICtrlCreateButton('Enable', 130, 55, 60)
    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case $bt1
    _GuiCtrlsSetState($GUI_DISABLE, $label, $in, $cb)
    Case $bt2
    _GuiCtrlsSetState($GUI_ENABLE, $label, $in, $cb)
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Suchbegriffe: Status, Controlstatus

  • Ohne jetzt der Buhmann zu sein, aber das ist doch nichts andere also die gefühlten 1000 Versuche von UDF-Sammlungen die allesamt im nichts verschwunden sind. Nur halt in kleinerer Form.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • BugFix, wenn du lust hast, dann kannst du auch eine PDF anlegen, und dort die hier gescripteten Funktionen auflisten. Diese müsstest du natürlich Regelmäßig Aktualisieren. Dann kannst du die PDF oben als Download anbieten... So bleibt dass auch bischen übersichtlich :D

    Und wenn du gaaaanz viel Zeit hast, kannst du diese noch Richtig Sortieren.

    *g* Ich habe noch ein paar nützliche Funktionen. Aber diese sind gelöscht, dass bedeutet ich muss die erst noch neu schreiben ^^ Mache ich dann noch bei Gelegeheit und schreibe die dann hier noch Rein ^^

  • ich hätte was dafür:

    Spoiler anzeigen
    [autoit]

    MsgBox(0,"",_map(536,0,1024,0,10)) ;ergebnis ist 5

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

    Func _map($iX, $iIMin, $iIMax, $iOMin, $iOMax)
    $iOut = Round(($iX - $iIMin) * ($iOMax - $iOMin) / ($iIMax - $iIMin) + $iOMin)
    If $iOMax < $iOut Then $iOut = $iOMax
    If $iOMin > $iOut Then $iOut = $iOMin
    Return $iOut
    EndFunc ;==>_map

    [/autoit]

    das ist eine funktion, die gibt es auch beim arduino, deswegen hab ich die in autoit gemacht(ist ja nix dolles)
    Edit: also, man hat einen X wert. dieser X wert hat eine maximale und eine minimale "Spannweite",
    und man hat den minimalen und den maximalen "ausgangswert"

    [autoit]

    _map(X,MinSpannweite,MaxSpannweite,MinAusgangswert,MaxAusgangswert)

    [/autoit]

    Einmal editiert, zuletzt von Alizame (26. Juni 2012 um 23:14)

  • Also ich finde die Idee des ganzen ja nicht schlecht, aber ich kann chip schon ein wenig verstehen. Die gefahr besteht durchaus. Aber hoffen wir mal das beste ^^

    Alizame: Und für was soll das gut sein? Eine Funktionsbeschreibung wär hier auch nicht schlecht.

  • Zitat

    Ihr kennt das sicher, man schreibt an einem Projekt und erstellt sich
    dafür skriptinterne Funktionen. Eigentlich zu klein um sie als UDF zu
    posten, aber nützlich vllt. auch für jemand anderen.

    Kenn ich nur zuuuu gut. Deshalb hab ich mir ein Programm geschrieben, mit dem ich die Snippets sammle und schnell wiederverwenden kann. Gibts hier oder hier (github)...

    Ansonsten gibt noch eine Reihe von online "Social"-Snippet-Sharing-Seiten (Übersicht siehe hier), wie z.B. Smipple oder Pastebin, alle beherbergen wenn überhaupt meistens nur sehr wenige Snippets in der Autoit-Sprache...

    Die "1000 UDF-Sammlungen" von denen hier die Rede ist gibt es wirklich alle nicht mehr? Kennt jemand eine Seite mit Sammlungen?