Seite 1 von 1

Cursor positionieren im SLE

Verfasst: Mi, 28. Nov 2018 11:46
von mini990
Hallo,
stehe gerade vor einem Rätsel.
(Wahrscheinlich eine Kleinigkeit aber ich finde es nicht...)
Ich kann in allen Programmteilen ( XbpDialog) den Curso im SLE beliebig platzieren.
Außer bei einem Dialogfenster.

Code: Alles auswählen

Beispiel 1, Cursor im SLE nicht mit der Maus positionierbar

oEXbp03 := XbpSLE():new( oXbpX, , {136,452}, {450,20}) //  Name
oEXbp03:bufferLength := 50 
oEXbp03:tabStop := .T.
oEXbp03:dataLink := {|X| IIf( x == NIL, RTrim(cName), cName := x )}
oEXbp03:lbDblClick := {| MP1, uNIL, o| DisablePushButtons(oXbpX), F1_Name( "Name", oXbpX, oXbpBMP, , oEXbp01, oEXbp02, oEXbp03, oEXbp04, oEXbp05, ,"M" ), EnablePushButtons(oXbpX), SetAppFocus(oEXbp04) }
oEXbp03:editable := .T.
oEXbp03:clipSiblings := .T.
oEXbp03:setFontCompoundName( "14.Lucida Console" ) 
oEXbp03:setColorFG( GRA_CLR_BLACK )
oEXbp03:setColorBG( GRA_CLR_PALEGRAY )
oEXbp03:align:= XBPSLE_LEFT
oEXbp03:border := .F.
oEXbp03:create()
oEXbp03:SetData()
oEXbp03:killInputFocus := { |x,y,oSLE| oEXbp03:getData()} 
AAdd ( aEditControls, oEXbp03 )

Beispiel 2, Cursor im SLE mit der Maus positionierbar

oXbp1a := XbpSLE():new( oXbp0, , {10,655}, {430,28}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
oXbp1a:tabStop := .T.
oXbp1a:Bufferlength:=40
oXbp1a:dataLink := {|X| IIf( x == NIL, trim(bank1), bank1 := x ) }
oXbp1a:setFontCompoundName( "16.Times New Roman" )
oXbp1a:setColorFG( GRA_CLR_BLACK )
oXbp1a:create()
oXbp1a:setdata()
oXbp1a:killInputFocus := { |x,y,oSLE| oSLE:getData() } 
Die Includes sind identisch, der Aufbau von XbpDialog ebenso.
Kann mir jemand sagen was ich gerade nicht sehe?????

Danke im Voraus

Gruß Stefan

Re: Cursor positionieren im SLE

Verfasst: Mi, 28. Nov 2018 21:21
von georg
Hallo, Stefan -


hast Du mal beide Variante in einem XbpDialog() untergebracht? Verhalten sie sich dort ebenfalls unterschiedlich, oder identisch?

Re: Cursor positionieren im SLE

Verfasst: Mi, 28. Nov 2018 21:41
von georg
Hallo, Stefan -


also, ich habe mal ein kleines Testprogramm gebaut, um diese beiden Objekte in eine :drawingArea zu bringen. Ich kann in beiden SLEs den Cursor sowohl mit der Maus als auch mit der Tastatur (Alt-Tab und Cursor-Tasten) beliebig positionieren.

Es könnte also an der Definition des Dialogfensters liegen.

Re: Cursor positionieren im SLE

Verfasst: Do, 29. Nov 2018 7:12
von mini990
Hallo Georg,
imho sind die beiden XbpDialog gleich definiert...

Code: Alles auswählen

Beispiel 1, Cursor im SLE nicht mit der Maus positionierbar

aSize    := {1100,800}
aRefSize:=oXbpBMP:currentSize()
aPos:= { Int( (aRefSize[1]  - aSize[1] ) / 2 ), Int( (aRefSize[2] - aSize[2] ) / 2  ) }

oXbpX := XbpDialog():new( oXbpBMP, , aPos, aSize, , .F.)
oXbpX:taskList := .F.
oXbpX:clipSiblings := .T.
oXbpX:MaxButton:= .F.
oXbpX:MinButton:= .F.
oXbpX:border := XBPDLG_DLGBORDER
oXbpX:close := {|| lExit := .T. }
oXbpX:title := "Bearbeiten"
oXbpX:setFontCompoundName( "16.Times New Roman" )
oXbpX:create()




oEXbp03 := XbpSLE():new( oXbpX, , {136,452}, {450,20}) //  Name
oEXbp03:bufferLength := 50 
oEXbp03:tabStop := .T.
oEXbp03:dataLink := {|X| IIf( x == NIL, RTrim(cName), cName := x )}
oEXbp03:lbDblClick := {| MP1, uNIL, o| DisablePushButtons(oXbpX), F1_Name( "Name", oXbpX, oXbpBMP, , oEXbp01, oEXbp02, oEXbp03, oEXbp04, oEXbp05, ,"M" ), EnablePushButtons(oXbpX), SetAppFocus(oEXbp04) }
oEXbp03:editable := .T.
oEXbp03:clipSiblings := .T.
oEXbp03:setFontCompoundName( "14.Lucida Console" ) 
oEXbp03:setColorFG( GRA_CLR_BLACK )
oEXbp03:setColorBG( GRA_CLR_PALEGRAY )
oEXbp03:align:= XBPSLE_LEFT
oEXbp03:border := .F.
oEXbp03:create()
oEXbp03:SetData()
oEXbp03:killInputFocus := { |x,y,oSLE| oEXbp03:getData()} 
AAdd ( aEditControls, oEXbp03 )

Beispiel 2, Cursor im SLE mit der Maus positionierbar

oXbp00 := XbpDialog():new( oParent1, , {8,400}, {785,230}, , .F. )
oXbp00:taskList := .F.
oXbp00:MaxButton:= .F.
oXbp00:MinButton:= .F.
oXbp00:border := XBPDLG_DLGBORDER
oXbp00:close := {|| lExit := .T. }
oXbp00:SysMenu:=.F.
oXbp00:title := "Bearbeiten"
oXbp00:clipSiblings := .T.
oXbp00:setColorFG( GRA_CLR_DARKGRAY )
oXbp00:setFontCompoundName( "16.Times New Roman" )
oXbp00:create()


oXbp1a := XbpSLE():new( oXbp0, , {10,655}, {430,28}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
oXbp1a:tabStop := .T.
oXbp1a:Bufferlength:=40
oXbp1a:dataLink := {|X| IIf( x == NIL, trim(bank1), bank1 := x ) }
oXbp1a:setFontCompoundName( "16.Times New Roman" )
oXbp1a:setColorFG( GRA_CLR_BLACK )
oXbp1a:create()
oXbp1a:setdata()
oXbp1a:killInputFocus := { |x,y,oSLE| oSLE:getData() } 
Deswegen steh ich da grad etwas auf dem Schlauch...

Gruß Stefan

Re: Cursor positionieren im SLE

Verfasst: Do, 29. Nov 2018 8:26
von georg
Hallo, Stefan -


einfach die beiden Dateien umwandeln und linken, ausprobieren.

Meine Erfahrung in den vergangenen Jahren war: wenn eine vereinfachte Version korrekt funktioniert, liegt es irgendwo an meinem spezifischen Programmumfeld. Und in dieser Version funktioniert es - zumindest bei meinem Test - einwandfrei.