Zahlenformat UpDown-Edit-Element in einer Gui

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

festigrat
Posts: 54
Joined: 02 Mar 2017, 06:58

Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 09:38

Hallo, folgendes einfaches Problem habe ich und komme leider trotz vielen Versuchen nicht auf die Lösung und würde mich über einen Tipp sehr freuen.
Ich möchte zwei UpDown-Edit-Elemente in einer GUI nutzen. Dies sollen einmal die Stunden und Minuten sein. Das Zahlenformat sollte immer zwei Ziffern haben, bei Zahlen mit nur einer Ziffer vorne sollte somit eine Null stehen, z.B. 02. Und dies bekomme ich einfach nicht hin.

Code: Select all

Gui, Add, Edit, x340 y520 w40 
Gui, Add, UpDown, vHour Range0-24, 20
Gui, Add, Edit, x380 y520 w40 
Gui, Add, UpDown, vMinute Range0-60, 00
Viele Grüße.
garry
Posts: 3770
Joined: 22 Dec 2013, 12:50

Re: Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 10:43

Beispiel :

Code: Select all

Gui,1:default
Gui,1: -dpiscale
Gui,1: Font, s14 CYellow,Lucida console
Gui,1:Color,Gray, Black
Gui,add,Edit,x240 y40 w100 h50 vEd1 gA1 Limit2  right
Gui, Add, UpDown, Range00-24, 20
Gui,add,Edit,x380 y40 w100 h50 vEd2 gA2 Limit2  right
Gui, Add, UpDown, Range00-60, 04
Gui,show
return
Guiclose:
exitapp


A1:
Gui,submit,nohide
hr:=Format("{:02}",ed1)
;hr:=SubStr("0" Ed1, -1)
guicontrol, ,Ed1, %hr%
return

A2:
Gui,submit,nohide
mn:=Format("{:02}",ed2)
;mn:=SubStr("0" Ed2, -1)
guicontrol, ,Ed2, %mn%
return
;===================================================
just me
Posts: 9464
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 10:56

Moin garry,

das funktioniert. Alternativ geht es auch so:

Code: Select all

#NoEnv
; UDS_SETBUDDYINT = 0x0002
; -> docs.microsoft.com/en-us/windows/desktop/Controls/up-down-control-styles
Gui, Add, Edit, x340 y520 w40 vEDHH Number Limit2, 20
Gui, Add, UpDown, vUDHH Range0-24 -0x0002 gSetBuddyInt, 20
Gui, Add, Edit, x380 y520 w40 vEDMM Number Limit2, 00
Gui, Add, UpDown, vUDMM Range0-60 -0x0002 gSetBuddyInt, 00
Gui, Show, , Test
Return

GuiClose:
ExitApp

SetBuddyInt:
Suffix := SubStr(A_GuiControl, 3)
Value := %A_GuiControl%
GuiControl, , ED%Suffix%, % Format("{:02}", Value)
Return
garry
Posts: 3770
Joined: 22 Dec 2013, 12:50

Re: Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 12:20

@just me , vielen Dank , dies ist viel kürzer
Guest

Re: Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 14:54

Vielen Dank für Eure Hilfe,

garrys Skript kann ich einigermaßen nachvollziehen und habe hier viel gelernt.

Das Skript von just me verstehe ich zwar nicht wirklich, dennoch hat es nicht nur den Vorteil, dass es kürzer ist, sondern auch, dass ich die Zahlen mit der Tastatur eingeben kann. Das kann ich in garrys Skript nicht.

Also nochmal vielen Dank für Eure Unterstützung!
just me
Posts: 9464
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Zahlenformat UpDown-Edit-Element in einer Gui

02 Dec 2018, 23:24

Moin festigrat,

wenn Du UpDown-Controls so definierst, wie in Deinem Beispiel, sorgt AHK dafür, dass
  1. das UpDown-Control mit dem davor erstellten Edit-Control verbunden wird (das Edit wird zum 'Buddy-Control').
  2. das UpDown-Control bei jeder Änderung seinen aktuellen Wert in das Buddy-Control schreibt.
Für 2. setzt AHK automatisch den Stil UDS_SETBUDDYINT (0x0002). Wenn man diesen Stil mit -0x0002 manuell entfernt, lässt das UpDown-Control sein Buddy-Control in Ruhe. Wenn man jetzt noch ein gLabel definiert, das bei Änderungen des UpDown-Controls aufgerufen wird, kann man den aktuellen Wert im gewünschten Format selbst in das Buddy-Control stellen. (Diese Vorgehensweise eignet sich auch gut dafür, im Buddy-Control Änderungen mit einer Schrittweite <> 1 anzuzeigen.)

Ein möglicherweise verständlicheres Beispiel sähe vielleicht so aus:

Code: Select all

#NoEnv
; UDS_SETBUDDYINT = 0x0002
; -> docs.microsoft.com/en-us/windows/desktop/Controls/up-down-control-styles
Gui, Add, Edit, x340 y520 w40 vEDHH Number Limit2, 20
Gui, Add, UpDown, vUDHH Range0-24 -0x0002 gHH_Changed, 20 ; -0x0002 : das UpDown soll seinen 'Buddy' nicht automatisch verändern
Gui, Add, Edit, x380 y520 w40 vEDMM Number Limit2, 00
Gui, Add, UpDown, vUDMM Range0-60 -0x0002 gMM_Changed, 00 ; -0x0002 : das UpDown soll seinen 'Buddy' nicht automatisch verändern
Gui, Show, , Test
Return

GuiClose:
ExitApp

HH_Changed:
GuiControl, , EDHH, % Format("{:02}", UDHH)
Return

MM_Changed:
GuiControl, , EDMM, % Format("{:02}", UDMM)
Return
Last edited by just me on 03 Dec 2018, 09:39, edited 1 time in total.
garry
Posts: 3770
Joined: 22 Dec 2013, 12:50

Re: Zahlenformat UpDown-Edit-Element in einer Gui

03 Dec 2018, 03:20

@just me , vielen Dank für die Erklärung
@festigrat , manuelle Eingabe hat evtl wenig Sinn da Du ja Up/Down und Range gewählt hast, da kann man auch lediglich Edit verwenden

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 79 guests