In einem Getfeld ans Ende springen [erledigt]

Moderator: Moderatoren

Antworten
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

In einem Getfeld ans Ende springen [erledigt]

Beitrag von uwe.24 »

Hallo.

Wie kann man beim Aufrufen einer Maske automatisch ans End des ersten Getfeldes springen.
Hier ein Codeschnippsel:

Code: Alles auswählen

@ 05,19 dcget cReznr size 0 EDITPROTECT {||!lEditMode} PICT "@!" GETOBJECT oReznr ;
         GOTFOCUS {||DC_GetRefresh(GetList)} parent oTabPage2
Ziel:
Beim Aufrufen kann man Daten eines Vorgängersatztes übernehmen. Zu ändern ist dann eigentlich nur der letzte Buchstabe von cReznr.
Also wäre ein Cursorsetzen sinnvoll.
z.B. von U4711A nach U4711B

Vielen Dank.

Uwe mit einem Gruß aus OS
Zuletzt geändert von uwe.24 am Mi, 20. Feb 2019 7:22, insgesamt 1-mal geändert.
Uwe aus OS
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: In einem Getfeld ans Ende springen

Beitrag von Tom »

Hallo, Uwe.

Das geht nicht mit GOTFOCUS, weil darin nicht nur Dein Codeblock steht, sondern auch noch das, was Roger dort für den SetInputFocus-Fall hinterlegt hat. Und dazu gehören die Cursorposition und das Löschen etwaiger Markierungen.

Das hier:

Code: Alles auswählen

LOCAL c1 := "Test12345 ", LOCAL c2 := Space(10)

@ 0,1 DCSAY 'Test 1:' GET c1 LOSTFOCUS {||c2 := c1,DC_GetRefresh(GetList)}
@ 1,1 DCSAY 'Test 2:' GET c2 GETEVAL {|o|o:SetInputFocus := {|a,b,o|o:SetMarked({Len(o:EditBuffer())-1,Len(o:EditBuffer())})}}

DCREAD GUI FIT ADDBUTTONS
Nimmt die Eingabe aus dem ersten Getfeld, überträgt sie ins zweite und setzt dort die Markierung auf den letzten Buchstaben, wenn das Feld den Fokus bekommt. Das ist, glaube ich, genau das, was Du erreichen willst.

Aber. Wenn Du jetzt einfach lostippst, passiert etwas Eigenartiges. :wink:
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: In einem Getfeld ans Ende springen

Beitrag von Wolfgang Ciriack »

Ich benutze dafür das folgende:

Code: Alles auswählen

@4.9,1.1 DCSAY "Straße:" GET oBauRec:strasse .....
....GETEVAL {|o|o:setInputFocus:={|a,b,o|EndOfGet(o)}}

Code: Alles auswählen

PROCEDURE EndOfGet(oXbp)
LOCAL x 
x := Len(alltrim(oXbp:getdata()))+2
x := IIF(x<3, 1, x)     // If empty goto position 1
oXbp:Get:Pos := x
oXbp:setMarked({x,x})  //   put cursor at end of text
RETURN
Viele Grüße
Wolfgang
Benutzeravatar
uwe.24
UDF-Programmierer
UDF-Programmierer
Beiträge: 52
Registriert: Di, 01. Aug 2006 15:47
Wohnort: Osnabrück
Danksagung erhalten: 1 Mal

Re: In einem Getfeld ans Ende springen

Beitrag von uwe.24 »

Hallo Wolfgang.

So klappt es.
Danke.

Uwe aus OS
Uwe aus OS
Antworten