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
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Forum
  3. AutoIt 3
  4. Skripte

_InputDateBox

  • Oscar
  • 5. November 2013 um 17:48
1. offizieller Beitrag
  • Oscar
    Moderator
    Reaktionen
    8
    Beiträge
    7.381
    • 5. November 2013 um 17:48
    • Offizieller Beitrag
    • #1

    Hier mal eine Funktion, um den Benutzer nach Datum oder Datum und Uhrzeit zu fragen. Dann braucht man nicht extra eine eigene GUI erstellen.

    Spoiler anzeigen
    [autoit]


    Global $sDate = _InputDateBox(1, 'Kopier-Datum')
    If @error Then Exit ; Wenn der Benutzer auf Abbrechen geklickt hat, Programm beenden
    ConsoleWrite('Datum: "' & $sDate & '"' & @CR & 'Error: ' & @error & @CR)

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

    ;===============================================================================
    ; Function Name: _InputDateBox([$iFormat][, $sTitle][, $sText][, $sDefaultDate][, $hParent])
    ; Description: Fragt den Benutzer nach Datum oder Datum und Uhrzeit und gibt dies als String zurück
    ; Parameter(s): $iFormat = 0 oder 1
    ; bei 0 wird nur nach dem Datum gefragt (Uhrzeit wird dann als "000000" zurückgegeben)
    ; bei 1 wird nach Datum und Uhrzeit gefragt
    ; Requirement: -
    ; Return Value(s): bei Erfolg = String in Form von "YYYYMMDDhhmmss"
    ; bei Abbruch = Leerstring und @error = 1
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _InputDateBox($iFormat = 1, $sTitle = '', $sText = '', $sDefaultDate = '', $hParent = '')
    If $iFormat < 0 Or $iFormat > 1 Then $iFormat = 1
    If $sTitle = '' Or $sTitle = Default Then $sTitle = 'Datum-Box'
    If $sText = '' Or $sText = Default Then $sText = 'Bitte Datum auswählen!'
    If $iFormat Then $sText = 'Bitte Datum und Uhrzeit auswählen!'
    Local $iOnEventMode = Opt('GUIOnEventMode', 0), $sRetDate = '', $iError = 0
    Local $hGui = GUICreate($sTitle, 260 + $iFormat * 85, 130, Default, Default, Default, 8, $hParent)
    GUISetBkColor(0xCCCCCC, $hGui)
    GUISetIcon('shell32.dll', 24, $hGui)
    GUICtrlCreateGroup($sText, 10, 20, 240 + $iFormat * 85, 70)
    GUICtrlSetFont(-1, 10, 400, 0, 'Arial', 5)
    GUICtrlCreateIcon('shell32.dll', -21, 30, 48, 32, 32)
    Local $idDate = GUICtrlCreateDate($sDefaultDate, 75, 49, 150 + $iFormat * 85, 30, $iFormat)
    GUICtrlSetFont(-1, 14, 400, 0, 'Verdana', 5)
    If $iFormat Then
    Local $DTM_SETFORMAT_ = 0x1032
    Local $sStyle = 'dd.MM.yyyy HH:mm:ss'
    GUICtrlSendMsg($idDate, $DTM_SETFORMAT_, 0, $sStyle)
    EndIf
    GUICtrlCreateGroup('', -99, -99, 1, 1)
    Local $idOk = GUICtrlCreateButton('Ok', 100 + $iFormat * 85, 100, 60, 25, 1) ; <- Value 1 = $BS_DEFPUSHBUTTON
    Local $idCancel = GUICtrlCreateButton('Abbrechen', 170 + $iFormat * 85, 100, 80, 25)
    GUISetState(@SW_SHOW, $hGui)
    While True
    Switch GUIGetMsg()
    Case $idCancel, -3 ; <- Value -3 = $GUI_EVENT_CLOSE
    $iError = 1
    ExitLoop
    Case $idOk
    $sRetDate = StringRegExpReplace(GUICtrlRead($idDate), '(\d{2})\.(\d{2})\.(\d{4}).*', '$3$2$1')
    If $iFormat Then
    $sRetDate &= StringRegExpReplace(GUICtrlRead($idDate), '\d{2}\.\d{2}\.\d{4} (\d{2}):(\d{2}):(\d{2})', '$1$2$3')
    Else
    $sRetDate &= '000000'
    EndIf
    ExitLoop
    EndSwitch
    WEnd
    GUIDelete($hGui)
    Opt('GUIOnEventMode', $iOnEventMode)
    Return SetError($iError, 0, $sRetDate)
    EndFunc ;==>_InputDateBox

    [/autoit]

    Dateien

    _InputDateBox.au3 2,86 kB – 224 Downloads

    MfG. Oscar

    Forum: Arduino, Elektronik, AutoIt

    • Nächster offizieller Beitrag
  • alpines
    天照大神
    Beiträge
    4.209
    • 5. November 2013 um 17:49
    • #2

    Schaut gut aus :)
    Du brauchst übrigens bei

    [autoit]

    GUISetState(@SW_SHOW, $hGui)

    [/autoit]


    das $hGUI nicht,
    deshalb kannst du es auch so verwenden wenn du Platz sparen willst.

    [autoit]

    GUISetState(@SW_SHOW)

    [/autoit]

    86152-alpi7958-png

    ►►► PassIt2 - Dateien zwischen PCs einfach und bequem übertragen!

    ► GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    ► TrackMania² Automated Server Controller (TMASECO) - Controller inklusive Manialinkpage-Support in AutoIt!

    ► Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen

    ► Lust auf ein kleines Spiel in AutoIt? Snake, Tunnel, Tetris, NumberStrike, Pazaak (Star Wars)

    Der Rest meiner Werke

    A*-Algorithmus - Pathfinding

    C# / VB .NET DLLs erstellen und in AutoIt verwenden!

    Funktionsplotter

    Integralrechner
    Dezimal- zu Binär-Umrechner

    NumberConvert
    _SquareRoot
    _WinGetTitleEx
    Tap - BPM Counter
    Wake On Lan

    _ArraySortStable2D

    RingBuffer.au3

  • Oscar
    Moderator
    Reaktionen
    8
    Beiträge
    7.381
    • 5. November 2013 um 17:59
    • Offizieller Beitrag
    • #3

    Da es sich hier aber um eine UDF handelt, die möglicherweise in anderen Scripten (mit diversen GUIs) benutzt wird, ist es sinnvoller das $hGui mit anzugeben.
    GuiSetState benutzt zwar standardmäßig die zuletzt erstellte Gui, aber es gibt ja auch noch die Timer-UDF, die im ganz ungünstigen Fall dazwischenfunken könnte.

    MfG. Oscar

    Forum: Arduino, Elektronik, AutoIt

    • Vorheriger offizieller Beitrag
    • Nächster offizieller Beitrag
  • alpines
    天照大神
    Beiträge
    4.209
    • 5. November 2013 um 18:06
    • #4

    Du könntest doch, statt abzuprüfen ob es "" oder Default ist einfach als Standardparameter die setzen, das spart ein paar Zeilen.
    Die Parameter so nochmal zu überprüfen ist eigentlich nur eine vergeudete Anzahl an Zeilen.

    86152-alpi7958-png

    ►►► PassIt2 - Dateien zwischen PCs einfach und bequem übertragen!

    ► GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    ► TrackMania² Automated Server Controller (TMASECO) - Controller inklusive Manialinkpage-Support in AutoIt!

    ► Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen

    ► Lust auf ein kleines Spiel in AutoIt? Snake, Tunnel, Tetris, NumberStrike, Pazaak (Star Wars)

    Der Rest meiner Werke

    A*-Algorithmus - Pathfinding

    C# / VB .NET DLLs erstellen und in AutoIt verwenden!

    Funktionsplotter

    Integralrechner
    Dezimal- zu Binär-Umrechner

    NumberConvert
    _SquareRoot
    _WinGetTitleEx
    Tap - BPM Counter
    Wake On Lan

    _ArraySortStable2D

    RingBuffer.au3

  • Oscar
    Moderator
    Reaktionen
    8
    Beiträge
    7.381
    • 5. November 2013 um 18:19
    • Offizieller Beitrag
    • #5

    Du hast noch nicht viele UDFs geschrieben, oder?
    Wenn Du den Defaultwert gleich in die Funktionszeile schreibst und der Benutzer der UDF dann die Funktion so aufruft:

    [autoit]

    Global $sDate = _InputDateBox(1, Default)

    [/autoit]


    dann wird der String "Default" übernommen.
    Deshalb das prüfen. :)

    MfG. Oscar

    Forum: Arduino, Elektronik, AutoIt

    • Vorheriger offizieller Beitrag
  • alpines
    天照大神
    Beiträge
    4.209
    • 5. November 2013 um 18:35
    • #6

    Das ist jetzt eine Sache der Anordnung der Parameter, man kann den Titel hinschreiben oder deine Variante benutzen.
    Wenn man bsp.-weise den hinteren Parameter nutzen möchte muss man - in meinem Fall - den Titel davor eingeben, aber das sieht man ja im Calltip oder nicht?
    Aber da der 2. Flag schon automatisch "" bzw. Default ist braucht man den nicht dahin zu schreiben, also ist dein Beispiel glaube ich falsch.

    Eigentlich ist das Geschmackssache, also lass uns lieber nicht drum streiten :D

    86152-alpi7958-png

    ►►► PassIt2 - Dateien zwischen PCs einfach und bequem übertragen!

    ► GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    ► TrackMania² Automated Server Controller (TMASECO) - Controller inklusive Manialinkpage-Support in AutoIt!

    ► Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen

    ► Lust auf ein kleines Spiel in AutoIt? Snake, Tunnel, Tetris, NumberStrike, Pazaak (Star Wars)

    Der Rest meiner Werke

    A*-Algorithmus - Pathfinding

    C# / VB .NET DLLs erstellen und in AutoIt verwenden!

    Funktionsplotter

    Integralrechner
    Dezimal- zu Binär-Umrechner

    NumberConvert
    _SquareRoot
    _WinGetTitleEx
    Tap - BPM Counter
    Wake On Lan

    _ArraySortStable2D

    RingBuffer.au3

  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™