Cursor Edit Box verschieben

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

ItsMe
Posts: 1
Joined: 23 Apr 2018, 07:43

Cursor Edit Box verschieben

23 Apr 2018, 08:27

Hallo liebe Community :)

Ich habe vor ein paar Tagen angefangen, mich mit AHK zu beschäftigen. Dabei bin ich auf ein Problem gestoßen, wobei meine Lösungsidee ziemlich unschön ist. Die Situation ist folgende: Ich habe eine Edit Box mit angefügtem UpDown, in dem nur Zahlen stehen können:
Spoiler
Was mich stört ist, dass man Zahlen mit führenden Nullen eintragen kann, wie z.B. 003. Ich hätte gern, dass diese direkt umgeschrieben werden zu 3. Habt ihr eine einfache Lösung dazu? Ich habe festgestellt, dass ich die Zahl auslesen und mit 0 addieren und wieder einlesen lassen kann. Das sah dann so aus:
Spoiler
Das Problem ist dann bei der Eingabe in die Edit Box, dass jedes Mal der Cursor wieder an die Position 1, also nach ganz links rutscht. Sodass der Nutzer dann, wenn er z.B. 13 schreiben will, 31 schreibt. Dazu habe ich dann folgende Lösung im Netz gefunden:
Spoiler
Das ist genau das, was ich suchte. Bei mir habe ich allerdings mehrere Edit Boxen. Ich scheitere jetzt daran, den Cursor bei anderen Boxen an eine andere Stelle zu setzen. Mein Versuch mit zwei Edit Boxen sah so aus

Spoiler
Ich habe also nur eine zweite Edit Box eingefügt und bei SendMessage %hEdit2% statt %hEdit1% verwendet. Aber jetzt markiert er in der ersten Edit Box den ganzen Text, statt in der zweiten Edit Box an die gewünschte Stelle zu springen.

Auch wenn mein ursprüngliches Problem vermutlich leicht zu lösen ist, würde ich doch gerne wissen, wieso mein Versuch nicht funktioniert^^

Viele Grüße ItsMe
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Cursor Edit Box verschieben

24 Apr 2018, 01:25

Wenn du dein Skript startest ist die erste Edit Box fokusiert.
Wenn du dann versuchst das Caret der 2. zu verändern - die dank fehlendem Fokus kein Caret hat - reagiert Windows komisch.
Recommends AHK Studio
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Cursor Edit Box verschieben

24 Apr 2018, 03:36

Moin,

der Inhalt der Edits muss ja nur geändert werden, wenn tatsächlich eine 'führende' Null ausgelesen wird. Das solltest Du prüfen. Außerdem kann das Edit Control anstelle von GuiControl auch mit Nachrichten (messages) verändert werden, ähnlich wie in Deinen letzten Beispielen. Das sieht dann z.B. so aus und verhält sich etwas besser:

Code: Select all

#NoEnv

Gui, Add, Edit, x150 y45 w50 Number vAnzahlWiederholungenEdit1 gStreicheNullen, 1 ; 0x80 -> kein 1000er Trennzeichen
Gui, Add, UpDown, vAnzahlWiederholungenUpDown1 Range0-9999 0x80, 1
Gui, Add, Edit, x150 y+10 w50 Number vAnzahlWiederholungenEdit2 gStreicheNullen, 1
Gui, Add, UpDown, vAnzahlWiederholungenUpDown2 Range0-9999 0x80, 1
Gui, Show
Return

GuiClose:
ExitApp

StreicheNullen:
GuiControlGet, EditInhalt, , %A_GuiControl%
If (SubStr(EditInhalt, 1, 1) = 0) && (StrLen(EditInhalt) > 1)
{
   GuiControlGet, HED, Hwnd, %A_GuiControl%
   EditInhalt += 0
   SendMessage, 0x00B1, 0, -1, , ahk_id %HED% ; EM_SETSEL - alles auswählen (0, -1)
   SendMessage, 0x00C2, 0, &EditInhalt, , ahk_id %HED% ; EM_REPLACESEL - Auswahl ersetzen
}
Return

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 57 guests