Seite 1 von 1

xclass Edit-Feld

Verfasst: Di, 16. Okt 2007 16:02
von stevie
Ich erstelle ein Edit-Feld:
oSleSensor := dsSle():new(oEdit, , {60,280}, {80,20}, , .T. )
czahl:=recno()
oSleSensor:clipSiblings := .T.
oSleSensor:tabStop := .T.
oSleSensor:bufferLength := 13
if cmode = "bearbeiten"
oSleSensor:setdata( osrv1:fieldget(3),,)
endif
oSleSensor:create()

Wenn setdata nicht ausgeführt wurde, wird linksbündig angefangen, wenn aber nicht dann wird rechts angefangen und das Value, was editiert werden soll, wird erst nach einem Tastendruck angezeigt. Was muss ich tun, damit die Daten ohne Tastendruck sofort links angezeigt werden?

Verfasst: Mi, 17. Okt 2007 8:52
von Sören
Hallo Stevie,

mach mal das ::SetData() erst nach dem ::Create(), dann sollte es
eigentlich funktionieren.

Verfasst: Mi, 17. Okt 2007 9:59
von stevie
Sören hat geschrieben:Hallo Stevie,

mach mal das ::SetData() erst nach dem ::Create(), dann sollte es
eigentlich funktionieren.
wenn ich das mache, werden im gesamten Feld nur noch große "X" angezeigt.

Verfasst: Mi, 17. Okt 2007 10:10
von brandelh
Hi,

normalerweise kann man in Xbase++ Methoden erst aufrufen sobald das Create() erfolgt ist (Ausnahme oXbpPrinter:list()). Warum die X erscheinen, keine Ahnung eventuell signalisieren sie aber eine Art Feldüberlauf wie die * bei GET ?

Verfasst: Mi, 17. Okt 2007 10:19
von stevie
brandelh hat geschrieben:Hi,

normalerweise kann man in Xbase++ Methoden erst aufrufen sobald das Create() erfolgt ist (Ausnahme oXbpPrinter:list()). Warum die X erscheinen, keine Ahnung eventuell signalisieren sie aber eine Art Feldüberlauf wie die * bei GET ?
Ergänzung: Das tritt nur auf, wenn die Feldinhalte numerisch sind.
Wenn sie Zeichen sind, klappts. Das heißt, wenn ich die Daten vorher mit alltrim und str bearbeite, werden sie ordentlich angezeigt. setdata() muss natürlich dabei hinter create() ausgeführt werden.
Wenn ich die aber so bearbeite muss ich sie ja danach wieder mit val() in numerisch verwandeln, damit das in die Db eingetragen werden kann.

Verfasst: Mi, 17. Okt 2007 10:25
von Martin Altmann
Hallo Stevie,
damit XClass++ weiß, was es darstellen soll, musst Du natürlich einige Angaben machen - z.B. einen :datalink mitgeben.
So mache ich das bei mir (ohne Probleme) mit einem numerischen Feld:

Code: Alles auswählen

::Coden         := dsSle():new( ::drawingArea, , {130,398}, {30,18} )
::Coden:bufferLength := 3
::Coden:tabStop := .T.
::Coden:autoTab := .T.
::Coden:Picture := "@K 999"
::Coden:Tooltip := "Geben Sie die Codenummer des Hundes an!"
::Coden:KillInputFocus := { |a,b,obj| ::hcrtest( obj ) }
::Coden:dataLink := {|x| IIf( PCOUNT()==0, &dateiname->Coden, &dateiname->Coden := x ) }
AAdd( ::editControls, ::Coden )
Wenn Du kein Feld aus einer Datenbank nimmst, sondern eine Variable, musst Du diese vorher zwingend initialisieren, damit das dsSle weiß, was auf es zukommt!

Viele Grüße,
Martin