DCGET und Cursorposition [ERLEDIGT]

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

DCGET und Cursorposition [ERLEDIGT]

Beitrag von Manfred »

Hi,

irgendwie stehe ich wieder auf dem Schlauch. Ich baue den Inhalt eines DCGET zusammen und übergebe ihn per setdata(). Das klappt auch, was muß ich nun tun, damit der Cursor hinter dem letzten Zeichen steht, wenn das Getfeld den Focus erhält, damit der Rest ergänzt werden kann vom User.
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Beim Get:

Code: Alles auswählen

GETEVAL {|o|o:setInputFocus:={|a,b,o|EndOfGet(o,GetOptions)}} 
Funktion EndOfGet:

Code: Alles auswählen

PROCEDURE EndOfGet(oXbp, GetOptions,lPlusOne) // lPlusOne=.T. for space at the end
LOCAL x                                       //    of the get, this is the default
DC_ValType(@lPlusOne,.T.)
x := Len(alltrim(oXbp:getdata()))+IIF(lPlusOne,2,1)
Re_ColorGets(oXbp,1,GetOptions)
x := IIF(x<IIF(lPlusOne,3,2), 1, x)     // If empty goto position 1
oXbp:Get:Pos := x
oXbp:setMarked({x,x})                   //   put cursor at end of text
RETURN
***********************************
static FUNCTION Re_ColorGets( o, nMode, GetOptions )
LOCAL aPres, aColor
IF valType(GetOptions) = "A"
  aColor := GetOptions[aGETOPT_COLORGETS]
ELSE
  aColor := DC_GetOptDefault()[aGETOPT_COLORGETS]
ENDIF
IF !Empty(aColor)
  IF Len(aColor) < 2
    AAdd(aColor,{ GRA_CLR_BLACK, GRA_CLR_WHITE })
  ENDIF
  IF nMode = 1
    aPres := { { XBP_PP_FGCLR, aColor[1,1] } , { XBP_PP_BGCLR, aColor[1,2] } }
  ELSE
    aPres := { { XBP_PP_FGCLR, aColor[2,1] } , { XBP_PP_BGCLR, aColor[2,2] } }
  ENDIF
  o:setPresParam(aPres)
ENDIF
RETURN nil
Hatte ich m.E. schon mal irgendwann gepostet.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

Hi Wolfgang,

das xbp:get ist doch das Eingabefeld. Wenn ich dann pos dahinterpacke, dann gibt es eine Fehlermeldung. Das hatte ich nämlich schon probiert. Im debugger aufgerufen gibt es ein DC-XbpGet zurück. Aber mit pos dahinter behauptet Xbase das wäre unbekannt.

Muß ich morgen nochmal genauer ansehen, was ich da verzapft habe.
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: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

ich hatte noch was vergessen zu sagen gestern. Da ich ja genau weiß, an welcher Stelle der Cursor stehen sollte, hatte ich es auch mit setmarked() ausprobiert. Das klappte auch nicht. Irgendwas mache ich da wohl falsch!?
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Zeig doch mal dein DCGET.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

Code: Alles auswählen

@ oDialogZusatz:nOben,oDialogZusatz:nLinks DCSAY "Bestellnr.:";
                                                    OBJECT oDialogZusatz:oText;
                                                    PARENT oDialogZusatz:oRahmenKopf;
                                                      SIZE oDialogZusatz:nSaybreite,oDialogZusatz:nSayHoehe
          @ DCGUI_ROW,DCGUI_COL DCGET oDialogZusatz:oBestellung:bestellnr;
                                 EVAL {|o| o:usevisualstyle := oSysPara:oWsPara:VisualStyl,;
                                           oDialogZusatz:oBestellung:addEditControl(o,.F.,,.T.);
                                      };
                      GETPRESENTATION {{ XBP_PP_DISABLED_FGCLR, GRA_CLR_BLACK }};
                             GOTFOCUS {|| bestellnrformat(oDialogzusatz)};
                               OBJECT oDialogZusatz:oBestellung:oBestellnr;
                               PARENT oDialogZusatz:oRahmenKopf;
                              PICTURE "XXXXXXXXXXX";
                                 SIZE oSysPara:skaliereXbParts(110),oDialogZusatz:nSayHoehe;
                              TABSTOP
********************************************************************************
STATIC FUNCTION bestellnrformat(oDialog)
                oDialog:oBestellung:oBestellnr:setMarked({9,3})
                RETURN .T.
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Und wenn du da statt GOTFOCUS mal mein GETEVAL einsetzt ?
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Und :?: :?: :?:
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

oops,

ich dachte ich hätte geantwortet. Das klappt auch nicht. Nochmals erwähnt: Ich erzeuge die Eingabemaske und sobald ich auf Ändern gehe, wird der Wert für besagtes Getfeld erzeugt und mit setData() eingespielt. Wenn dann mittels Tab das Eingabefeld angesprungen wird, ist es komplett unterlegt und der Cursor steht am Anfang.
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Ja, das macht ja wohl der Teil:

Code: Alles auswählen

GOTFOCUS {|| bestellnrformat(oDialogzusatz)}
Deswegen meinte ich mal raus damit.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

verstehe ich jetzt nicht. Was soll anders sein, wenn ich das entferne? Irgendwo muß ich doch setmarked() setzen.
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Warum soll denn das gleich markiert sein, wenn du am Ende weiterschreiben möchtest ?
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

ach so,

das war nur ein Versuch den Cursor überhaupt ans Ende zu stellen, weil alles andere ja anscheinend nicht zum Erfolg führte. Und ob der da markiert ist, ist ja egal, Hauptsache am Ende....
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition

Beitrag von Wolfgang Ciriack »

Genau das macht meine gepostete Version.
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition

Beitrag von Manfred »

Auh man, sowas blödes aber auch.

Das konnte ja auch nicht optisch klappen. :setMarked() erwartet den Anfangswert und den Endwert nicht wie ich es gemacht habe die Länge. In meinem Fall muß es einfach so gemacht werden z.B.

Code: Alles auswählen

@ DCGUI_ROW,DCGUI_COL DCGET oDialogZusatz:oBestellung:bestellnr;
                                 EVAL {|o| o:usevisualstyle := oSysPara:oWsPara:VisualStyl,;
                                           oDialogZusatz:oBestellung:addEditControl(o,.F.,,.T.),;
                                           o:setInputFocus := {|a,b,o|o:setMarked({9,11})}; <-- wenn ich 9,9 mache, dann siehe unten
                                      };
                      GETPRESENTATION {{ XBP_PP_DISABLED_FGCLR, GRA_CLR_BLACK }};
                               OBJECT oDialogZusatz:oBestellung:oBestellnr;
                               PARENT oDialogZusatz:oRahmenKopf;
                              PICTURE "XXXXXXXXXXX";
                                 SIZE oSysPara:skaliereXbParts(110),oDialogZusatz:nSayHoehe;
                              TABSTOP
Und das muß auch anscheinend so bleiben. Wenn ich z.B. 9,9 mache, dann springt der Cursor zwar ans Ende, aber sobald ich tippe springt er an den Anfang und überschreibt dann den vorhandenen Wert. Warum macht er denn sowas?
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

Ich weiss nicht, warum du so an deinem SetMarked hängst :?: :?: :?:
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition [ERLEDIGT]

Beitrag von Manfred »

weil es mit dem pos nicht klappte
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
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

Hier ein kurzes Testprogramm, damit du siehst, das es funktioniert.
Dateianhänge
test.zip
(946 Bytes) 231-mal heruntergeladen
Viele Grüße
Wolfgang
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DCGET und Cursorposition [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

@Manfred,
und nochmal probiert ?
Viele Grüße
Wolfgang
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: DCGET und Cursorposition [ERLEDIGT]

Beitrag von Manfred »

Ich habe es mit dem geteval probiert und das klappt jetzt so wie ich es haben möchte. Danke für den Tipp.
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