habe da ein kleines Problem
(eher eine Unschönheit für die User):
Wenn ein SLE den Focus bekommt markiere ich den gesamten Text.
Wenn aber der angezeigte Bereich kleiner ist als die gesamte Text-Länge wird der Text zwar markiert aber der Cursor ans Textende gesetzt und somit der hintere Teil des Textes angezeigt und nicht der Anfang.
z.B. der Text hat eine Länge von 40 Zeichen,
die Anzeige-Breite des SLE beträgt aber nur 20 Zeichen:
gesamter Beispiel-Text: "Dieser Text soll nicht verschoben werden"
Anzeige ohne SetMarked: "Dieser Text soll nic"
Anzeige mit SetMarked: "ht verschoben werden"
Habe es mit diesen Varianten versucht:
Code: Alles auswählen
(1)
GsGuiSleVar( , dnGuiSleObject ):SetInputFocus := { | uNIL1 , uNIL2 , oSle | GsGuiSleFocusSet( oSle ) , oSle:SetMarked( { 1 , oSle:BufferLength + 1 } ) }
(2)
GsGuiSleVar( , dnGuiSleObject ):SetInputFocus := { | uNIL1 , uNIL2 , oSle | GsGuiSleFocusSet( oSle ) , oSle:SetMarked( { oSle:BufferLength + 1 , 1 } ) }
(3)
(funktioniert nicht, nur wenn man es manuell macht, dann sogar richtig!)
GsGuiSleVar( , dnGuiSleObject ):SetInputFocus := { | uNIL1 , uNIL2 , oSle | GsGuiSleFocusSet( oSle ) , PostAppEvent( xbeP_Keyboard , xbeK_END , , oSle ) ,
PostAppEvent( xbeP_Keyboard , xbeK_SH_HOME , , oSle ) }
(4)
GsGuiSleVar( , dnGuiSleObject ):SetInputFocus := { | uNIL1 , uNIL2 , oSle | GsGuiSleFocusSet( oSle ) , PostAppEvent( xbeP_Keyboard , xbeK_CTRL_A , , oSle ) }
Gruß
Roland