DCGET und letztes Wort markieren

Moderator: Moderatoren

Antworten
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

DCGET und letztes Wort markieren

Beitrag von Rudolf »

Hallo,
ich verwende Express 255 und habe das Problem dass beim Markieren des letzten Wortes in einem GET die ganze Zeile markiert wird und der Cursor am Ende steht.
Tritt das Problem auch bei der aktuellsten Version auf ? Von Roger bekomme ich keine Antwort auf mein Problem da er erst nachschaut wenn ich auf die neueste Version update.
Grüße
Rudof
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGET und letztes Wort markieren

Beitrag von Tom »

Hallo, Rudolf.

Ich kann das für Build 257 und Build 259 bestätigen, Build 260 habe ich noch nicht installiert. Wenn man in einem DCGET, das mehrere Wörter enthält, auf das letzte doppelklickt, wird bis zum Ende der folgenden Leerzeichen markiert und der Cursor wandert ans Ende. Bei den vorangehenden Wörtern ist das allerdings auch so: Es wird nicht nur das Wort selbst markiert, sondern auch das Leerezeichen rechts daneben. Das wiederum ist in vielen Applikationen Standardverhalten - wenn ich jetzt, beim Schreiben dieser Nachricht, auf ein Wort doppelklicke, wird das nachfolgende Leerzeichen mitmarkiert (Firefox).

Die Ursache liegt m.E. darin, dass ein Eingabefeld nie leer ist, sondern für die korrekte automatische Formatierung mit Leerzeichen aufgefüllt.
Herzlich,
Tom
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCGET und letztes Wort markieren

Beitrag von Rudolf »

Hallo Tom,
danke, das klingt plausibel, ich scrolle im Eingabefeld oft z.B. mit picture "@S30" für einen String der wesentlich größer ist. Wenn also das letzte Wort mit dem Rest markiert wird, springt der Cursor wahrscheinlich standardmäßig auf die letzte Stelle und lässte den linken Rest verschwinden. Kann dem Kunden also erklären dass es Windows Standard ist und muss kein eXpress++ Update machen.
Grüße
Rudolf
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGET und letztes Wort markieren

Beitrag von Tom »

Hallo, Rudolf.

Wenn man mit einem Standard-SLE (XbpSLE) arbeitet und das leer liefert, wie in den Login-Beispielen aus der Alaska-Installation, entsteht das Problem beim letzten Wort nicht. Die Ursache besteht für eXpress++-Anwender darin, dass sie oft Textvariablen für die Eingabe so vorformatieren, dass das DCGET automatisch die richtige Länge bekommt:

Code: Alles auswählen

cText := Space(30)

@ 1,1 DCSAY 'Eingabe:' GET cText // wird automatisch für 30 Zeichen sauber formatiert, weil cText nicht leer ist
(analog bei direkten Eingaben in Datenbankfelder)

Dadurch ist der EditBuffer nicht leer, sondern eben mit 30 Leerzeichen vorbefüllt. Bei der Eingabe wird nun entweder eingefügt und dabei am Ende abgeschnitten - oder ersetzt. Der EditBuffer behält seine 30 Zeichen Länge - es sei denn, man markiert bis zum Ende und drückt <Entf>, dann ist er - vorübergehend - kürzer. Deshalb funktionieren mit eXpress++ in dieser Variante auch die CueBanner nicht, weil die nur angezeigt werden können, wenn das Eingabefeld faktisch komplett leer ist. Aber das hier funktioniert:

Code: Alles auswählen

cText1 := ''
cText2 := ''
@ 1,1 DCGET cText1 PICT Replicate("!",30) GETSIZE 30 EVAL {|o|o:CueBanner := 'Test 1'}
@ 2,1 DCGET cText2 PICT Replicate("!",30) GETSIZE 30 EVAL {|o|o:CueBanner := 'Test 2'}
DCREAD GUI ADDBUTTONS
Man sieht den CueBanner, wenn das Feld nicht den Fokus hat. Gebe ich jetzt etwas ein, funktioniert anschließend auch die Markierung. All das scheitert, wenn ich cText<x> auch mit nur einem einzigen Leerzeichen vorbefülle.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: DCGET und letztes Wort markieren

Beitrag von Tom »

Zur Veranschaulichung (Code aus dem Beispiel): Doppelklick auf das letzte Wort. Im zweiten GET ist das CueBanner sichtbar.
Dateianhänge
rudolf.jpg
rudolf.jpg (14.2 KiB) 4767 mal betrachtet
Herzlich,
Tom
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DCGET und letztes Wort markieren

Beitrag von Rudolf »

Hallo Tom,
stimmt, wenn ich die Leerzeichen am Ende trimme, funktioniert es. Aber leider geht es nicht ohne die Leerzeichen, da sonst der Eingabestring nicht erweitet werden kann.
Bei mir geht übrigends o:CueBanner nicht, könnte aber auch an der eXpress++ Version 255 liegen
Grüße
Rudolf
Antworten