Erreichen Ende des SLE-Feldes

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Erreichen Ende des SLE-Feldes

Beitrag von Rolf Ramacher »

Hallo,

ist es möglich beim Erreichen des Endes eines XbpSle() Feldes in das nächste SLE-Feld zu springen ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

Rolf Ramacher hat geschrieben:ist es möglich beim Erreichen des Endes eines XbpSle() Feldes in das nächste SLE-Feld zu springen ?
XbpSLE:autoTab := .T.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

so soll es laut Anleitung sein, aber wenn ich Buffer = 4 mache und dann 4 Zeichen eintippe, passiert erst was, wenn ich eine weitere Taste drücke. Wo liegt der Denkfehler?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

ich sehe gerade, ist hier
viewtopic.php?f=23&t=862
auch ein Thema
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Fr, 05. Apr 2019 13:35 ich sehe gerade, ist hier
viewtopic.php?f=23&t=862
auch ein Thema
... und hast du es jetzt verstanden :?:
:typeOut- Gibt an, ob der Cursor hinter das letzte Zeichen im Editierpuffer bewegt werden sollte.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

es wurde ja geklärt, das Typeout dafür nicht geeignet ist.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

moin
Manfred hat geschrieben: Fr, 05. Apr 2019 14:44 es wurde ja geklärt, das Typeout dafür nicht geeignet ist.
zeige doch mal wie du es verwendet hast ...
SLEOUT.ZIP
pure Xbase++
(1009 Bytes) 274-mal heruntergeladen
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

soll ich das in SLEOut einmbauen und hier einstellen, oder was meinst Du genau?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Sa, 06. Apr 2019 10:08 soll ich das in SLEOut einmbauen und hier einstellen, oder was meinst Du genau?
was willst du denn modifizieren um es "unbrauchbar" zu machen :roll:

Ich machen in solchen Fällen ein Demo um zu sehen ob es klappt wie es soll.
wenn es damit klappt aber nicht in der App dann liegt der Fehler wo anders.

Code: Alles auswählen

o:autoTab := .T.
funktioniert wie beschrieben :
Erst "hinter dem letzte Zeichen" geht er dann weiter zum nächsten Control was o:TabStop := .T. hat

wenn du die Länge "bei der Eingabe" brauchst dann wäre ein eigener "Reader" angesagt.
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

Das ist der Code und der klappt nicht so wie gewollt

Code: Alles auswählen

METHOD fahrer:anmelden(oParent)
       LOCAL aDlgSize   := {oSysPara:skaliereXbParts(300),oSysPara:skaliereXbParts(240)}
       LOCAL lErfolg    := .T.
       LOCAL lExit      := .F.
       LOCAL mp1        := 0
       LOCAL mp2        := 0
       LOCAL nEvent     := 0
       LOCAL nLinks     := oSysPara:skaliereXbParts(5)
       LOCAL nOben      := oSysPara:skaliereXbParts(170)
       LOCAL nPbHoehe   := oSysPara:skaliereXbParts(30)
       LOCAL nPbLaenge  := oSysPara:skaliereXbParts(70)
       LOCAL nSleHoehe  := oSysPara:skaliereXbParts(20)
       LOCAL nSleLaenge := oSysPara:skaliereXbParts(50)
       LOCAL oDialog    := NIL
       LOCAL oPb        := NIL
       LOCAL oPbOk      := NIL
       LOCAL oText      := NIL
       LOCAL oXbp       := NIL

       MEMVAR oSysPara

       DEFAULT oParent TO AppDesktop()

       ::db_oeffnen()
       ::felderleeren()
       oDialog := DialogFenster():new(oParent,,,aDlgSize,,.F.,.F.,,.T.,.T.,"Anmelden:",.F.,.T.,1)

       oText := feldtexte():new(oDialog:drawingarea,,{nlinks,nOben},,,,"L","Personalnummer:")

       nLinks += oText:currentSize()[1]

       ::oNummer               := mk_Sle():new(oDialog:drawingArea,,{nLinks,nOben},{nSleLaenge,nSleHoehe},,,"WWWWW")
       ::oNummer:autoTab       := .T.
       ::oNummer:datalink      := { |x| IIF( x==NIL, ::oNummer, ::oNummer := x) }
       ::oNummer:bufferlength  := 4
       ::oNummer:tabStop       := .T.
       ::oNummer:create(oDialog)

       nOben -= oSysPara:skaliereXbParts(50)
       nLinks := oSysPara:skaliereXbParts(5)

       oText := feldtexte():new(oDialog:drawingarea,,{nlinks,nOben},,,,"L","Pin           :")

       nLinks += oText:currentSize()[1]

       ::oPin               := mk_Sle():new(oDialog:drawingArea,,{nLinks,nOben},{nSleLaenge,nSleHoehe},,,"WWWWW")
       ::oPin:autoTab       := .T.
       ::oPin:datalink      := { |x| IIF( x==NIL, ::oPin, ::oPin := x) }
       ::oPin:bufferlength  := 4
       ::oPin:tabStop       := .T.
       ::oPin:unReadable    := .T.
       ::oPin:create(oDialog)

       oPbOk          := PushButton():new(oDialog,,{oDialog:currentsize()[1]/2-nPbLaenge,10},{nPbLaenge,nPbHoehe})
       oPbOk:caption  := "OK"
       oPbOk:tabStop  := .T.
       oPbOk:create(oDialog)
       oPbOk:activate := { || IF(::satzsuchen(::oNummer:editbuffer(),,"nummer",,,,.T.) .AND. ::oPin:editbuffer() == ::pin,lExit := .T.,(lErfolg := .F.,lExit := .T.)) }

       oPb          := PushButton():new(oDialog,,{oPbOk:currentPos()[1]+oPbOk:currentsize()[1],oPbOk:currentPos()[2]},{nPbLaenge,nPbHoehe})
       oPb:caption  := "Abbruch"
       oPb:tabStop  := .T.
       oPb:create(oDialog)
       oPb:activate := { || lExit := .T., lErfolg := .F. }

       oDialog:show()
       SetAppFocus(::oNummer)
       DO WHILE ! lExit
          nEvent := AppEvent( @mp1, @mp2, @oXbp )
          oXbp:handleEvent( nEvent, mp1, mp2 )
       ENDDO
       ::db_schliessen()
       IF ! lErfolg
          oSysPara:oMessage:anzeigen("Personalnummer/oder Pin falsch. Eingabe ungültig")
       ENDIF
       oDialog:destroy()
       oDialog := NIL
RETURN lErfolg
was verstehst Du unter "hinter dem letzen Zeichen". Wenn ich das 4 zeichen eingetippt habe, dann muß ein weiteres getippt werden (egal Space) dann wird der nächste PArt angesprungen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

Manfred hat geschrieben: Sa, 06. Apr 2019 11:02 was verstehst Du unter "hinter dem letzen Zeichen".
wenn o:bufferSize := 10 ist was kommt dann mach 10 ... :roll:
Manfred hat geschrieben:Wenn ich das 4 zeichen eingetippt habe, dann muß ein weiteres getippt werden (egal Space) dann wird der nächste PArt angesprungen.
wenn o:bufferSize := 4
genau SO :!:

---

ein EDIT Control kann nur so viele Zeichen aufnehmen wie Platz in einer Box ist :!:

will man "mehr" so muss man den ES_AUTOHSCROLL Style setzen.
der Default Buffer sind 32 und wird erhöht mit EM_SETLIMITTEXT

die Edit Control Notifications findet man hier
https://docs.microsoft.com/en-us/window ... ifications
das sind die Aktionen die ausgelöst werden können

der EN_MAXTEXT Notification Code ist wohl der den o:Typeout() nutzt
Sent when the current text insertion has exceeded the specified number of characters for the edit control.
The text insertion has been truncated.

Code: Alles auswählen

o:typeOut := {| uNIL1, uNIL2, self | ... }  
so ist Windows und das kann man nicht ändern ...

---

nun kann man aber ein "invisible GET" als "Reader" eines SLE nehmen wie es XbpGET() macht. :idea:
\SOURCE\samples\solution\xbpget\xbpget.prg
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erreichen Ende des SLE-Feldes

Beitrag von Martin Altmann »

Jimmy,
ihr schreibt aneinander vorbei! Manfred hat unter eXpress++ das Problem, das bei erreichen der maximalen Länge der Eingabe nicht automatisch das nächste Feld angesprungen wird. Seine Erwartungshaltung ist (und so funktioniert es auch bei mir - allerdings mit XClass++), das nach Eingabe des letzten Zeichens sofort das Eingabefeld verlassen wird.
Also vier Zeichen sind maximal möglich, dann soll nach dem Eingeben des vierten Zeichens das nächste Feld angewählt werden und das fünfte Zeichen dort erscheinen.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

Martin, Du liegst falsch.
Der Code oben zeigt doch, das es xbase++ pur ist. Und wir sind hier nicht im express++ Bereich ;-)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erreichen Ende des SLE-Feldes

Beitrag von Martin Altmann »

Nun,
dein Codeschnippsel könnte genau so auch in eXpress++ vorkommen - insofern ging ich mal davon aus, dass er aus deiner Hauptanwendung stammt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

nein, könnte er so nicht. Da steht nirgends irgend was mit DC...... drin.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: Sa, 06. Apr 2019 13:40 allerdings mit XClass++
ich bin nun kein XClass++ User aber auch dort gibt es IMHO ein InvisibleGet()

p.s. auch mit SLEPIC() geht es nicht nur mit XbpGET()
gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erreichen Ende des SLE-Feldes

Beitrag von Martin Altmann »

Manfred hat geschrieben: Sa, 06. Apr 2019 13:54 nein, könnte er so nicht. Da steht nirgends irgend was mit DC...... drin.
Unsinn Manfred,
das sind alles Klassen und Funktionen, die du selber geschrieben hast - da muss auch keine DC vorkommen!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

prima, dass Du Dich so gut mit express++ und dessen Aufbau auskennst
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Erreichen Ende des SLE-Feldes

Beitrag von Martin Altmann »

:?: Du sagtest doch, es sei kein eXpress++, weil da nichts mit DC vorkäme.
Ich schrieb, dass das aus deinem Code nicht ersichtlich ist - da kommt nämlich auch nichts mit xbp_ vor.
Also deine Funktionen und Klassen - die von eXpress++ instantiiert sein können - oder auch direkt von Xbase++!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Erreichen Ende des SLE-Feldes

Beitrag von brandelh »

du könntest ein SLE ableiten, das bei jedem Tastendruck prüft ob die gewünschte Länge im EditBuffer() steht, falls ja noch ein TAB auf das Element senden, oder den Focus in ein anderes setzen.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Erreichen Ende des SLE-Feldes

Beitrag von Manfred »

Hallo Hubert,
hatte ich versucht, aber leider zuerst falsch umgesetzt. Jetzt klappt es. Mal wieder zu einfach um selbst drauf zu kommen..... :angry4:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten