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

Beiträge von Muecke

  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 3. Dezember 2018 um 20:43
    Zitat von Musashi

    ....

    Muecke :

    Ich hoffe, die ganze Diskussion wird für Dich nicht zu verwirrend. Manchmal entwickelt ein Thread eine gewisse Eigendynamik;)

    Gruß Musashi

    Alles gut, ich verfolge das Thread hier immer noch, und bin auch noch daran das Formular zu Bauen, da sich in zwischen fertig habe und an der Speicher Routine bin :) (Fast fertig nur noch ein paar Sachen muss ich nachlesen)

    ich finde es sehr spannend wie Ihr euch alle austauscht, es ist ja nicht so das hier sich gegenseitig die Köpfe eingeschlagen wird, ich sehe das aus einer ganz anderen Perspektive des Austausches und das miteinander Diskutieren und das finde ich genial, nur gemeinsam ist man Stark, und warum nicht davon lernen. :)

    melde mich später wider mit dem neuen Code :)

    gruß Mücke

  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 3. Dezember 2018 um 15:44

    Hey miteinander,

    erst mal finde ich es bewundernswert wie Ihr euch hier mit der Stoppuhr beschäftigt.

    ich habe min meiner Version die Zeile wie von @Musashi gezeigt geändert:

    ALT:

    $g_iMilliSecs = StringRegExpReplace($g_iTicks, '.+\.(.+)', '\1') ; MilliSecs ermitteln

    NEU:

    $g_iMilliSecs = StringRight(Int($g_iTicks),3)


    Das Bild das Tuxedo beschreibt das eine oder auch zwei zelten Sekunde immer deutlich zu sehen sind habe ich bei mir auch wenn die Pause zu lange wird.

    Ehrlich gesagt sehe ich keinen großen unterschied zwischen den beiden Versionen von @Musashi Wenn das jedoch schneller ist, nehme ich das, das auch auf einem Anderen Rechner das nicht so auffällig wird.

    Im Anhang hab ich noch mal das Script von mir, da ich noch ein paar kleine Bugs gefunden habe (Kopierfehler z.B. die Hintergrundfarbe habe ich vergessen umzuschreiben etc.)

    Am Formular bin ich gerade noch dran, wird aber auch schon sehr gut, jedoch nutze ich nicht den Formular Generator, sobald das Formular fertig ist und gespeichert werden kann werde ich auch das Script noch mal hochladen.


    Gruß Mücke

    Dateien

    Stoppuhr-GUI.au3 14,34 kB – 262 Downloads
  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 2. Dezember 2018 um 16:27

    Ah Ok, jetzt wies ich was du meinst.

    wenn du in der ziele:

    C
    IF $Status = "Play" and $Status_GUI_Open = "Play" then
        Sleep(44); Aktualisierungsinterval in ms
        _GetTime()  ; Aktuelle Zeit holen

    wenn du die 44 zu einer 10 machst dann ist das der Fall.

    Ich gehe davon aus das das damit zusammen hängt das ich zu langsam Aktualisiere.

    Die Funktion / Makro / Befehl was auch immer da ist _TicksToTime ist nicht die schnellste,

    jedoch gibt dieses teil mir die ms gar nicht aus.

    die anzuzeigenden ms werden hier berechnend:

    C
        $g_iTicks = TimerDiff($g_hTimer) ; Zeitunterschied  zum $g_hTimer =  Startzeit
        $g_iMilliSecs = StringRegExpReplace($g_iTicks, '.+\.(.+)', '\1')  ; MilliSecs ermitteln

    wenn ich mich Irre dann immer raus damit, das sind alles nur Mutmaßungen bei mir.

    Gruß Mücke

  • GUICtrlCreateCheckbox mit Zeilenumbruch

    • Muecke
    • 2. Dezember 2018 um 15:50

    Hey @Musashi ,

    das ist perfekt danke.

    Gruß Mücke

  • GUICtrlCreateCheckbox mit Zeilenumbruch

    • Muecke
    • 2. Dezember 2018 um 15:09

    Hallo miteinander,

    beim Befehl / Macro: GUICtrlCreateCheckbox kann ich einen Text angeben, doch leider schaffe ich es nicht einen Zeilenumbruch hinein zu bauen.

    Kann es sein das es das bei dem Element nicht gibt?

    Wenn doch wäre ich über ein Hilfe sehr dankbar.

    Das ist mein Test Code:

    C
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    
        HotKeySet("{ESC}", _EXIT)
    
    Example()
    
    
        While 1
            Sleep(100)
        WEnd
    
    EXIT
    
    Func Example()
    ; GUI Erstellen
        Local $hGUI = GUICreate("Example", 300, 200)
    
    ; Checkbox Erstellen                            "text"                           , left, top [, width [, height
        Local $idCheckbox_1 = GUICtrlCreateCheckbox("Standard " & @CR   & " Checkbox", 10  , 10   , 80    , 50)
        Local $idCheckbox_1 = GUICtrlCreateCheckbox("Standard " & @CRLF & " Checkbox", 10  , 60   , 80    , 50)
        Local $idCheckbox_1 = GUICtrlCreateCheckbox("Standard " & @LF   & " Checkbox", 10  , 110  , 80    , 50)
    
        GUISetState(@SW_SHOW)
    EndFunc   ;==>Example
    
    Func _EXIT()
        Exit
    EndFunc   ;==>_IsChecked
    Alles anzeigen

    Gruß Mücke

  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 2. Dezember 2018 um 14:41

    Hey Tuxedo ,

    ich kann dir nicht ganz folgen, bitte erläutere das näher.

    Zitat

    Beim Testen deines Scripts ist mir das merkwürdige Verhalten der Millisekunden in der Zeitanzeige aufgefallen.

    Was ist dir da aufgefallen?

    Zitat

    Das dürfte von den ticks Funktionen stammen.

    meinst du _TicksToTime ??

    damit wird doch nur die Tierzeit in einzelne Bestandteile herunter aufgelöst ?

    Zitat

    Ausserdem wäre zu überdenken ob du für eine Stoppuhr die durch Menschenhand gesteuert wird nicht besser auf die Millisekundenanzeige verzichtest,

    und nur auf Hundertstel genau anzeigst.

    Dies war zu beginn auch meine Überlegung, in einem anderen Thema hatte man mich dann aber belehrt das man das auf 3 Stellen genau macht, daher sind nun 3 Stellen zu sehen.

  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 2. Dezember 2018 um 10:33

    Hey,

    erst mal danke für das Lob, den Code für die Uhr habe ich jedoch von Bitnugger übernommen aus dem Post Sehr schnell in GUI schreiben, hier wurde mir gezeigt wie man ein Label im Nachgang verändern kann, was dann deutlich weniger zeit in Anspruch nimmt und das Flackern dann nicht mehr so stark hervor kommt.

    Das freut mich das der Code gut lesbar ist, (habe extra schön geschrieben ;-)) ne Spaß bei Seite, das ist echt anstrengend keinen Spaghetti Code zu produzieren und das dann auch noch ordentlich zu Strukturiren.

    Daher Danke.

    Zitat von Tuxedo

    Allerdings hättest du die jeweils aufeinanderfolgenden GUIsetState(@SW_SHOW) und GUIsetState(@SW_HIDE) überall bei den

    Gui Deklarationen weglassen können.

    Das hatte ich in meinen Hilfsprogramm bei dem ich mit den GUI`s geübt habe zu beginn auch gemacht, das hatte aber zu Problemen geführt.

    Ich konnte die GUI nicht anzeigen lassen oder sie ist wenn eine andere GUI Drüber lag nicht mehr in den Vordergrund gekommen, das kann zu dem Zeitpunkt vielleicht auch an anderen Dingen noch gelegen haben, jedoch hatte ich das in den Griff bekommen in dem ich die GUI ein mal angezeigt und dann sofort wider verborgen hatte.

    Habe es gerade getestet, hier im Programm macht es tatsächlich keine Probleme, habe die zwei Zeilen jeweils heraus genommen, werde mir das für die Zukunft merken, danke.

    Die Idee mit der Hilfsseite finde ich gut, würde das aber anders Lösen wollen.

    Ich werde den F1 HotKey einfügen würde dann aber für 10 Sekunden ein Tooltip ausgeben lasse, so wird das Programm nicht unterbrochen und die Info ist nur kurz und Klein zu sehen.

    Hintergrund ist der das der Timer später auf einen Großen Monitor laufen soll vor vielen Personen, da muss nicht jeder alles erkennen ;)


    Den Code mit dem ToolTip und das heraus nehmen der zwei Zeilen in den GUI`s habe ich wider angehängt.

    Das mit dem Formular muss ich mir genauer anschauen, ja ich nutze den SciTE Editor, und ich habe dank dir das mit dem Formular auch schon gefunden, da muss ich mich aber erst einarbeiten.

    Da melde ich mich dann wider.

    Gruß Mücke

    Dateien

    Stoppuhr-GUI.au3 13,83 kB – 416 Downloads
  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 1. Dezember 2018 um 17:40

    so langsam aber kontinuierlich geht es weiter :)

    Ich habe es geschafft verschiedene GUI`s zu erstellen die ich dann auch nacheinander aufrufen kann, und das immer mit dem Selben Tastenkürzel (Button) .

    Habe auch den Timer mit eingebaut bekommen.

    Jetzt rauscht mir jedoch der Kopf und ich muss mal wider pause machen, das war jetzt eine Tagesaufgabe für mich :-.

    Als nächstes muss ich raus finden wie ich ein Formular bauen kann das auf dem Monitor in meiner GUI funktioniert das dann wiederum in eine Datei (TXT) Speichern kann.

    Gruß Mücke


    Damit ich euch nicht meinen Code vorenthalte habe ich euch meinen Code hier im Anhang :)

    Ihr dürft gerne Kritik üben, bitte bedenkt das ich ein Blutiger Anfänger bin der noch nicht alle Tricks und Kniffe drauf hat.

    Wenn Ihr den Code testen wollt, gerne.

    um aus der GUI Formular zu kommen muss man das "Formular" Speichern, dann geht das ganze wider von vorne los, bis auf die Start GUI die soll nur beim Programm Start angezeigt werden, für den User das er wies welche tasten Kombi für was ist.

    Code ist zu lange für das Forum daher jetzt als Datei im Anhang.

    Dateien

    Stoppuhr-GUI.au3 14,45 kB – 416 Downloads
  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 27. November 2018 um 14:52

    alles klar dann mache ich mal ein Test Programm bei dem ich das üben kann :)

    Danke

  • [Anfrage] Möchte Stoppuhr mit USB Button und Eingabeformular programmieren

    • Muecke
    • 27. November 2018 um 14:39

    Warum auch immer, hat sich das erstellen der Stoppuhr in diese beitrage verlagert.

    Sehr schnell in GUI schreiben

    Dort ist dann auch der Code der Stoppuhr zu finden.

    ich mache jetzt weiter, also ich versuche mit der ein und der Selben Tastenkombinationen verschiedene Statue in einer Variable zu erstellen, so das ich abhängig des Status der Variable dann den Richtigen Monitor anzeigen kann :) bzw. unterschiedliche GUI

    Dazu habe ich ein Frage kann ich mehre GUI erstellen und mir die dann immer dann anzeigen lassen wenn ich die Benötige? dann muss ich die nicht immer wieder neu erstellen? oder ?

  • Sehr schnell in GUI schreiben

    • Muecke
    • 27. November 2018 um 14:35

    OK, perfekt. dann habe ich das glaube ich erst mal verstanden, was wie wann gemacht wird.

    DANKE.

    jetzt kann ich mich an den Rest machen :)

  • Sehr schnell in GUI schreiben

    • Muecke
    • 27. November 2018 um 12:12

    ich bin noch immer am Code von Bitnugger ich habe mir nach jeder ziele ein Kommentar geschrieben was ich meine was da passiert, das ich es nachvollziehen kann.

    Aas ich genial finde ist das ich die Sleep zeit verändern kann im laufenden Programm, ich hatte den Eindruck das bei 40ms das Ergebnis sehr gut dargestellt wird, aus dem Grund habe ich die ganzen HotKeySet und den teil mit der Sleep Zeit erst mal wider raus genommen, da sich das ganze etwas besser überblicken kann.


    das ist der gesamte Code wie ich ihn gerade bei mir habe.

    C
    ;-- TIME_STAMP   2018-11-26 02:25:30   v 0.1
    ; User: Bitnugger
    ; Link: https://autoit.de/index.php?thread/86216-sehr-schnell-in-gui-schreiben/&postID=692506#post692506
    ; verändert von Mücke
    
    #Region ;************ Includes ************
        #include <FontConstants.au3>
        #include <GUIConstantsEx.au3>
        #include <WindowsConstants.au3>
        #include <Date.au3>
    #EndRegion ;************ Includes ************
    
    Global $g_hTimer, $g_sTime, $g_iHours, $g_iMins, $g_iSecs, $g_iMilliSecs, $g_iTicks
    Global $g_iOldHours, $g_iOldMins, $g_iOldSecs, $g_iOldMilliSecs
    
        HotKeySet("{ESC}", _Prog_Ende)                                                                     ; Programm beenden
    
        Global $hGUI = GUICreate("Sleep-Timer", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)         ; GUI erstellen
        Global $g_iGuiBkColor = 0x000000                                                                ; GUI Background Color
        Global $g_iLabelColor = 0xCDCDCD                                                                ; Label Frontfarbe
        Global $g_iLabelBkColor = $g_iGuiBkColor                                                        ; Label Background Color
    
        GUISetBkColor($g_iGuiBkColor)                                                                     ; GUI Background Color Einstellen
        GUISetFont(200, $FW_NORMAL, $GUI_FONTNORMAL, "Calibri")                                         ; GUI Schriftgröße und Art Einstellen
    
        Global $idLabel = GUICtrlCreateLabel("00", 0, 0)                                                ; Label erstellen
        Global $aPosNum = ControlGetPos($hGUI, '', $idLabel)                                             ; so viel Platz brauchen wir für "00"
        GUICtrlDelete($idLabel)                                                                            ; Label Löschen
    
        $idLabel = GUICtrlCreateLabel(" : ", 0, 0)                                                        ; Label erstellen
        Global $aPosSpc = ControlGetPos($hGUI, '', $idLabel)                                             ; so viel Platz brauchen wir für " : " bzw. " . "
        GUICtrlDelete($idLabel)                                                                            ; Label Löschen
    
        Global $ixPos = (@DesktopWidth / 2) - (($aPosNum[2] * 4.5) + ($aPosSpc[2] * 3)) / 2             ; X-Position des ersten Labels
        Global $iyPos = (@DesktopHeight / 2) - ($aPosNum[3] / 2)                                         ; Y-Position des ersten Labels
        Global $iwNum = $aPosNum[2]                                                                     ; Breite der Labels mit "00"
        Global $ihNum = $aPosNum[3]                                                                     ; Höhe der Labels mit   "00"
        Global $iwSpc = $aPosSpc[2]                                                                     ; Breite der Labels mit " : " bzw. " . "
        Global $ihSpc = $aPosSpc[3]                                                                     ; Höhe der Labels mit   " : " bzw. " . "
    
        Global $idLabelHours = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum)
        $ixPos += $iwNum + 1
        _CreateLabel(" : ", $ixPos, $iyPos, $iwSpc, $ihSpc)
        $ixPos += $iwSpc + 1
        Global $idLabelMins = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum)
        $ixPos += $iwNum + 1
        _CreateLabel(" : ", $ixPos, $iyPos, $iwSpc, $ihSpc)
        $ixPos += $iwSpc + 1
        Global $idLabelSecs = _CreateLabel("00", $ixPos, $iyPos, $iwNum, $ihNum)
        $ixPos += $iwNum + 1
        _CreateLabel(" . ", $ixPos, $iyPos, $iwSpc, $ihSpc)
        $ixPos += $iwSpc + 1
        Global $idLabelMilli = _CreateLabel("000", $ixPos, $iyPos, $iwNum * 1.5, $ihNum)
    
        $g_hTimer = TimerInit()                                                                         ; Startzeit merken
        _GetTime()                                                                                        ; Aktuelle Zeit holen
        $g_iOldHours = $g_iHours                                                                        ; Aktuelle Zeit in Alte zeit schreiben
        $g_iOldMins = $g_iMins                                                                            ; Aktuelle Zeit in Alte zeit schreiben
        $g_iOldSecs = $g_iSecs                                                                            ; Aktuelle Zeit in Alte zeit schreiben
        $g_iOldMilliSecs = $g_iMilliSecs                                                                ; Aktuelle Zeit in Alte zeit schreiben
    
    GUISetState(@SW_SHOW)                                                                                 ; GUI anzeigen
    
    ; ==> Hauptprogramm-Loop
    While 1
        Sleep(40)                                                                                         ; Aktualisierungsinterval in ms
        _GetTime()                                                                                         ; Aktuelle Zeit holen
    
        If $g_iMilliSecs <> $g_iOldMilliSecs Then                                                        ; Prüfen ob MilliSecs sich verändert hat
            $g_iOldMilliSecs = $g_iMilliSecs                                                            ; Aktuelle Zeit in Alte zeit schreiben
            GUICtrlSetData($idLabelMilli, StringFormat('%03i', StringLeft($g_iMilliSecs, 3)))             ; Zeit ausgeben --> Millisekunden gibt man normal 3-stellig (999) aus
        EndIf
        If $g_iSecs <> $g_iOldSecs Then                                                                    ; Prüfen ob MilliSecs sich verändert hat
            $g_iOldSecs = $g_iSecs                                                                        ; Aktuelle Zeit in Alte zeit schreiben
            GUICtrlSetData($idLabelSecs, StringFormat('%02i', $g_iSecs))                                 ; Zeit ausgeben
        EndIf
        If $g_iMins <> $g_iOldMins Then                                                                    ; Prüfen ob MilliSecs sich verändert hat
            $g_iOldMins = $g_iMins                                                                        ; Aktuelle Zeit in Alte zeit schreiben
            GUICtrlSetData($idLabelMins, StringFormat('%02i', $g_iMins))                                 ; Zeit ausgeben
        EndIf
        If $g_iHours <> $g_iOldHours Then                                                                ; Prüfen ob MilliSecs sich verändert hat
            $g_iOldHours = $g_iHours                                                                    ; Aktuelle Zeit in Alte zeit schreiben
            GUICtrlSetData($idLabelHours, StringFormat('%02i', $g_iHours))                                 ; Zeit ausgeben
        EndIf
    WEnd
    ; ==> Hauptprogramm-Loop
    
    
    Func _CreateLabel($sText, $x, $y, $w, $h)                                                              ; Text, left, top, width, height
        Local $idLabel = GUICtrlCreateLabel($sText, $x, $y, $w, $h)                                        ; Label erstellen und ID holen
        GUICtrlSetColor(-1, $g_iLabelColor)                                                                ; Label Frontfarbe
        GUICtrlSetBkColor(-1, $g_iLabelBkColor)                                                            ; Label Background Color
        Return $idLabel                                                                                    ; Lable ID zurück geben
    EndFunc   ;==>_CreateLabel
    
    
    Func _GetTime()
        $g_iTicks = TimerDiff($g_hTimer)                                                                                    ; Zeitunterschied  zum $g_hTimer =  Startzeit
        $g_iMilliSecs = StringRegExpReplace($g_iTicks, '.+\.(.+)', '\1')                                                    ; MilliSecs ermitteln
        _TicksToTime(Int($g_iTicks), $g_iHours, $g_iMins, $g_iSecs)                                                         ; Timer zerlegen in Hours:Mins:Secs
        $g_sTime = StringFormat("%02i : %02i : %02i . %03i", $g_iHours, $g_iMins, $g_iSecs, StringLeft($g_iMilliSecs, 3))     ; to Hours:Mins:Secs:MilliSecs
    EndFunc   ;==>_GetTime
    
    Func _Prog_Ende()
        Exit                                                                                            ; Programm beenden
    EndFunc  ;==>_Prog_Ende
    Alles anzeigen

    ich verstehe den teil: Zeile 41 bis 53 glaube ich nicht ganz richtig.

    Wäre gut wenn ihr mir da etwas auf die Sprünge helft ob ich das richtig verstehe.

    Hier werden alle Labels erstellt die für das anzeigen der gesamten zeit benötigt werden.

    Zeile 42: die X Position (Horizontal) wird um eine Nummer weiter gezählt, das es nicht alles Pep aufeinander klebt wird noch 1 Pixel dazu berechnet.

    dann wird ein Neus Laben erstellt, die ID dazu wird in die entsprechende Variable geschrieben.

    usw.


    in Zeile 71. wird dann auf eins der Labels zugegriffen und der Wert (Text) geändert, es muss also nicht erneut erstellt werden oder erneut angezeigt werden denn es wird ja schon angezeigt.

    Ist das richtig was ich da von mir gebe?

  • Sehr schnell in GUI schreiben

    • Muecke
    • 27. November 2018 um 10:04

    Bitnugger: Wow dein Code ist genial. Da muss ich mich aber erst ein mal richtig einarbeiten. (da ich kein Programmierer bin dauert das etwas.)

    danke erst mal.

    Oscar : wow, das sieht echt gut aus, ich hoffe das du mir nicht böse bist, ich werde erst mal den Code von Bitnugger mir anschauen und durcharbeiten und schauen was ich alles verstehe und nachlesen was was ist.

    das nimmt einige zeit in Anspruch, bis ich das verstanden habe.

  • Schriftgröße in Pixel umrechnen [GUISetFont]

    • Muecke
    • 27. November 2018 um 08:37

    Ok, das Resizing muss ich mir dann auch mal anschauen, das kenne ich nicht :( bisher mache ich später.

    Ok, dann muss ich die Befehle umbauen, das war mich nicht ganz klar das das so nicht geht.

    Danke für den Hinweis.

    Hmm, warum ist bei die die Minute ein n ?

    ich kenne das aus Excel

    da ist die

    Stunde hh

    Minute mm

    Sekunde ss

    Millisekunden keine Ahnung ich habe mal ein h davor gesetzt.

  • Sehr schnell in GUI schreiben

    • Muecke
    • 25. November 2018 um 20:24

    Hey, wäre gut wenn auch die Zentisekunde mit angezeigt wird nicht nur jede Sekunde.


    Ich habe verstanden was du mir sagen möchtest ich soll die Labels schon mal alle zeichnen die ich brauchen könnte dann muss ich die nur noch aufrufen wenn ich sie brauche udn muss die nicht ständig neu erstellen lasse. das habe ich in der Theorie verstanden, wie das Praktisch geht habe ich keine Ahnung :(

    gibt es dazu was im Netz? nach was muss ich da siechen?


    Habe mir das mit dem EventModus gerade mal angeschaut das kenne ich bisher noch nicht. habe das aber glaube ich noch nicht ganz verstanden :(

    https://www.autoitscript.com/autoit3/docs/g…OnEventMode.htm

    wenn ich richtig ist, was ich hoffe.

    dann habe ich ein Hauptprogramm in den ich verschiedene Tasten etc. habe (das Hauptprogramm läuft in einer GUI.

    Alles was dann aber nebenbei gemacht wird sprich Auswertungen Berechnungen etc. das soll nicht im Hauptprogramm ablaufen sondern soll in Funktionen ausgelagert werden?

    ist das richtig was ich da raus gezogen habe?

    gruß Mücke

  • Schriftgröße in Pixel umrechnen [GUISetFont]

    • Muecke
    • 25. November 2018 um 20:11

    wie ich den Miteilpunkt berechne das wies ich.

    auch die Makros @DesktopHeight und @DesktopWidth kenne ich.

    ich habe nur ein Problem die zahlen richtig zu Positionieren.

    auf dem Monitor soll das dann so ausschauen. 00 : 00 : 00.00

    hh : mm : ss:hss

    damit ich nicht immer alles aktualisieren muss

    möchte ich die Stunde, Minute und Sekunde und hss jeweils nur dann aktualisieren wenn auch ein Veränderung satt gefunden hat.

    da die Position Angabe jedoch der Obere Linke Punkt ist, ist der nicht in der Mitte sondern abhängig wie Groß die Schrift ist weiter Oben und weiter Links oder rechts von Zentrum.

    Auf dem Bild habe ich das mal etwas deutlicher dargestellt.

    Jeder Blaue Kasten ist ein eigenes Label, der Rote Punkt steht für die Koordinate des Labels, der Grüne Punkt ist die Mitte des Monitors.

    Und jetzt nochmal wie meint Ihr das das ich das berechnen kann oder mit welcher Eigenschaft bekomme ich das hin? da habe ich aus euren beitragen leider nicht entnehmen können.

    gruß Mücke


    Monitor-Zentrirt.PNG

  • Schriftgröße in Pixel umrechnen [GUISetFont]

    • Muecke
    • 25. November 2018 um 16:48

    hallo miteinander,

    wie kann ich die Schriftgröße in Pixel umrechnen?

    Hintergrund ist der, für ein Stoppuhr möchte ich Stunde Minute ... jeweils separat ausgeben ich erhoffe mir damit das Flackern der Ziffern zu minimieren.

    Die Stoppuhr wird im Vollbild Modus laufen und soll Zentriert auf dem Monitor angezeigt werden, wenn ich jedoch Fixe Koordinaten angebe dann ist das nur bei meiner Auflösung am Monitor zentriert und bei anderen Auflösungen dann nicht mehr :-(.


    Daher dachte ich daran die Schriftgröße in Pixel umzurechnen und damit dann zu berechnen wo welche Ziffern hin müssen auf dem Monitor.


    Text geben ich aktuell hiermit aus:

    GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( $sec, 950, 450),0x119944), 0x000000)


    Für Anregungen Ideen etc. bin ich immer dankbar.

    gruß Mücke

  • Sehr schnell in GUI schreiben

    • Muecke
    • 25. November 2018 um 16:14

    hallo miteinander,

    ich versuche gerade für mein ein etwas Komplexeres Programm zu schreiben, dazu gehört es das ich ein Stoppuhr mit Einbau, also habe ich mir ein Stoppuhr gebaut.

    Jetzt ist das aber so das diese immer leicht Flackert :(

    gibt es eine sehr schnelle Möglichkeit Groß in die GUI zu schreiben so das mein Flackern weniger wird oder aufhört?

    Das ist mein CODE:

    C
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Date.au3>
    
    Local $start
    Local $hsec
    Local $min
    Local $sec
    Local $hour
    Local $min_alt  = 0
    Local $sec_alt  = 0
    Local $hour_alt = 0
    
        HotKeySet("{ESC}", _EXIT)                                                                                                 ; Programm beenden
        GUIDelete()                                                                                                                ; Bestehende GUI Löschen
        GUICreate ("Test", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)                                                        ; GUI Definiren
        GUISetBkColor (0x000000)                                                                                                ; GUI Background Color
        GUISetState(@SW_SHOW)                                                                                                   ; GUI Starten
        GUISetFont(200, 0, 0, "Calibri")                                                                                        ; GUI Schriftgröße und Art Einstellen
        GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( "00 : 00 : 00 . 00", 150,  300), 0xffffff), 0x000000)                ; Timer Leer darstellen
        $start = TimerInit()                                                                                                    ; Startzeit merken
    
    While 1
        Sleep(30)                                                                                                                ; 60 ms warten
        _TicksToTime(Int(TimerDiff($start)), $hour, $min, $sec)                                                                    ; Timer in brauchbare Stücke zerlegen
    
        $hour = StringRight("0" & $hour, 2)                                                                                        ; Stunden Zweistellig machen
        $min  = StringRight('0' & $min, 2)                                                                                        ; Minuten Zweistellig machen
        $sec  = StringRight('0' & $sec, 2)                                                                                        ; Sekunden Zweistellig machen
        $hsec = Int((TimerDiff($start) - ($hour*3600*1000 + $min*60*1000 + $sec*1000))/10)                                        ; Millisekunden berechnen
    
        if $hour > $hour_alt Then GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( $hour, 150,  300), 0x119944), 0x000000)    ; Wenn Wert sich geändert hat Text ausgeben
        if $min > $min_alt   Then GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( $min,  620,  300), 0x119944), 0x000000)    ; Wenn Wert sich geändert hat Text ausgeben
        if $sec > $sec_alt   Then GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( $sec,  1080,  300),0x119944), 0x000000)    ; Wenn Wert sich geändert hat Text ausgeben
                                  GUICtrlSetBkColor(GUICtrlSetColor(GUICtrlCreateLabel( $hsec, 1520, 300), 0x119944), 0x000000)    ; Wenn Wert sich geändert hat Text ausgeben
        $hour_alt = $hour                                                                                                        ; Aktueller Wert merken
        $min_alt  = $min                                                                                                        ; Aktueller Wert merken
        $sec_alt  = $sec                                                                                                        ; Aktueller Wert merken
        $hsec_alt = $hsec                                                                                                        ; Aktueller Wert merken
    WEnd
    
    func _EXIT()
        Exit                                                                                                        ; Programm beenden
    EndFunc
    Alles anzeigen

    ich schätze mal das ich nicht die richtige Methode gewählt habe beim ausgeben des Textes in der GUI, leider finde ich keine andre :(

  • GUICtrlCreateLabel (Box an TextGröße anpassen)

    • Muecke
    • 25. November 2018 um 10:43

    so etwas in die Richtung habe ich mir schon gedacht denn das Label ist ja schon erstellt :(

    habe jedoch nichts gefunden wie ich die Größe sonst hätte ändern können ;(


    DANKE für deine Hilfe.

    gruß Mücke

  • GUICtrlCreateLabel (Box an TextGröße anpassen)

    • Muecke
    • 24. November 2018 um 20:03

    Hallo miteinander,

    ich möchte in einer GUI ein Label ausgeben, bei dem die Textgröße jedoch nicht auf Standard steht sondern deutlich Größer ist.

    Wenn ich die Hilfe richtig verstanden habe sollte dich die Größe des Label automatisch anpassen an die Text Größe wenn ich sie nicht mit angebe, doch das passiert bei mir nicht :(

    Das ist mein Mustercode:

    C
    #include <WindowsConstants.au3>
    #include <FontConstants.au3>
    
    Local $idLabel    ; Variable für Label 
    
        GUIDelete()                                                                ; Bestehende GUI Löschen
        GUICreate ("Test GUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)    ; GUI Definiren
        GUISetBkColor (0x000000)                                                    ; GUI Background Color
        GUISetState(@SW_SHOW)                                                   ; GUI Starten
    
    
        $idLabel = GUICtrlCreateLabel("Das ist ein Test", 100, 100)                ; Label erstellen
        GUICtrlSetFont($idLabel, 20, 0, 0, "Calibri")                            ; Label Text Größe
        GUICtrlSetColor($idLabel, 0x225588)                                        ; label Text Farbe
        GUICtrlSetBkColor($idLabel, 0xffffff)                                    ; Label Hintergrund Farbe
    
        Sleep(2000)                                                                ; 2 Sekunden pause
    
        GUIDelete()                                                                ; Bestehende GUI Löschen
        
    Exit                                                                        ; Programm Ende 
    Alles anzeigen

    GUICtrlCreateLabel

    https://www.autoitscript.com/autoit3/docs/f…CreateLabel.htm

    Wenn ich das richtig verstehe

    width => [optional] The width of the control (default text autofit in width).

    height => [optional] The height of the control (default text autofit in height).

    Ohne Angabe passt sich die Größe an den Inhalt an.

    Doch warum macht es das bei mir nicht?

    mach ich im Code etwas Falsch? so das die Eigenschaft irgend wo Überscheiben wird? oder muss ich noch etwas aufrufen das das geht?

    gruß Mücke

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™