[Gelöst] [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 11:37

Hallo zusammen,

ich staune hier gerade über ein lustiges Phänomen des 2009 R2 ClassicClients (Build 33137):

In einer Form habe ich eine Textbox, welche so hoch ist, dass sie drei Textzeilen anzeigen kann.
Damit sie auch mehrere Zeilen darstellt, ist selbstverständlich das Property MultiLine gesetzt.
Jedoch soll der Zeilenumbruch an einer ganz bestimmten Stelle erfolgen, daher ist der darzustellende Text mit Backslashes versehen.

Unter 5.0 SP1 funktionierte das noch wunderbar.
Nach der (technischen) Umstellung auf 2009 R2 ClassicClient ignoriert die finsql.exe den Backslash und macht den Zeilenumbruch nur noch dann, wenn der sonstige Text nicht mehr in die Zeile passt.
Auf bestimmten Umgebungen kann man erkennen, dass der Backslash in dem Text vorhanden ist, da er dann durch das Kästchen dargestellt wird.
Dort, wo der Zeilenumbruch (zufällig) genau an der Stelle des Backslash erfolgt, wird dieses Kästchen nicht angezeigt.

Kennt jemand von euch dieses Phänomen, dessen Ursache und/oder eine Lösung dafür?

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 12:10

Hängt es vielleicht damit zusammen, daß die Entwicklung in NAV langsam ins dotnet-Framework wandert? R2 hat ja schon einiges davon freigegeben. Vielleicht braucht man jetzt \n anstatt von nur \ oder sowas?

Oder Unicode-Umstellung? Liegt der \ dort vielleicht hinter einer anderen Nr.?
Zuletzt geändert von HattrickHorst am 28. Februar 2012 12:11, insgesamt 1-mal geändert.

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 12:10

Hallo,

hab den gleichen Build, hab mir jetzt eine Form gebastelt, mit einer Textbox und einem Label.

Das Label macht bei mir einen sauberen Umbruch nach dem Backslash, während die Textbox keinen Umbruch macht, auch keinen automatischen.

Ist die Textbox allerdings nicht editierbar, macht sie alles richtig.

Gruß, Fiddi

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 12:35

fiddi hat geschrieben:Das Label macht bei mir einen sauberen Umbruch nach dem Backslash,
Dies kann ich bestätigen. Mein dreizeiliges Label macht genau dort den Zeilenumbruch, wo ich den Backslash gesetzt habe.

fiddi hat geschrieben:während die Textbox keinen Umbruch macht, auch keinen automatischen.
Auch keinen automatischen? MultiLine gesetzt?

fiddi hat geschrieben:Ist die Textbox allerdings nicht editierbar, macht sie alles richtig.
Das brachte bei mir leider nicht den gewünschten Erfolg :-(
Sie macht weiterhin den Zeilenumbruch dort, wo der Text nicht mehr in die Zeile passt, jedoch leider nicht dort, wo der Backslash steht.

Wieder ein Fall von "da hat die Anwendung ihre eigene Online-Hilfe nicht gelesen."

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 12:48

Kleiner Nachtrag, wenn die Textbox nicht mehr active-Control ist, funktioniert auch bei mir der Umbruch in der TextBox, wenn Sie editerbar ist.

Hab mal die Form als .TXT angehängt (ist nicht Styleguide, also nicht als Maßstab für gute Programmierung nehmen :mrgreen: )

Gruß, Fiddi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 13:02

Arbeitest du mit STRSUBSTNO?
Falls ja, wäre KB-Artikel 2674867/Build 33194 für dich relevant.

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 13:12

Ich habe die Ursache gefunden:
Bastel ich mir den String wie folgt zusammen, dann erzeugt jeder Backslash einen Zeilenumbruch an der gewünschten Stelle:
Code:
txt := 'asdf\jklö\asdfölkj'; 

Bastel ich mir den String (z. B. der besseren Lesbarkeit halber) mittels STRSUBSTNO zusammen, dann werden die Backslashes ignoriert:
Code:
txt := strsubstno('%1\%2\%3','asdf','jklö','asdfölkj'); 


Natalie hat geschrieben:Arbeitest du mit STRSUBSTNO?
Falls ja, wäre KB-Artikel 2674867/Build 33194 für dich relevant.
*grummel* Ja.
[EDIT]
Was heißt hier "[...]the STRSUBSTNO C/AL function converts a backslash (\) character to a CRLF character unexpectedly [...]" :?:
Genau das soll der Backslash doch machen! Wer das (in älteren Versionen) nicht wollte, musste den Backslash in den Parametern unterbringen.
(Genau wie bei Message: Message(Filename) konvertiert die Backslashes, Message('%1',Filename) zeigt die Backslashes an.)
[/EDIT]
[EDIT 2.0]
Ich habe mal meinen Kommentar in dem KB-Artikel hinterlassen.
[/EDIT 2.0]

fiddi hat geschrieben:Kleiner Nachtrag, wenn die Textbox nicht mehr active-Control ist, funktioniert auch bei mir der Umbruch in der TextBox, wenn Sie editerbar ist.
Dieses Verhalten entspricht sowohl der Doku und war schon immer in allen Versionen so.

Re: [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 16:19

Timo Lässer hat geschrieben:Was heißt hier "[...]the STRSUBSTNO C/AL function converts a backslash (\) character to a CRLF character unexpectedly [...]" :?:
Genau das soll der Backslash doch machen! Wer das (in älteren Versionen) nicht wollte, musste den Backslash in den Parametern unterbringen.
(Genau wie bei Message: Message(Filename) konvertiert die Backslashes, Message('%1',Filename) zeigt die Backslashes an.)

Also wenn ich STRSUBSTNO verwende, erwarte ich, dass die Funktion exakt die Platzhalter mit den Werten ersetzt und nicht noch irgendwelche anderen Zeichen. Das gleiche erwartest du ja auch, denn dein Message('%1',Filename) ist ja nichts anderes, als ein kombiniertes STRSUBSTNO mit dem MESSAGE-Befehl. (Dort erwartest du ja, dass die Slashes erhalten bleiben.)
Die MulitLine-Textbox, in der du jetzt die Konvertierung haben möchtest braucht nämlich die Slashes, um daraus Zeilenumbrüche zu machen. Kann er aber nicht, da keine Slashes vorhanden sind, sondern schon fertige Zeilenumbrüche. Alles meiner Meinung nach alles schick, es ist nur ein Bug in der STRSUBSTNO-Funktion.

Re: [Gelöst] [CC] Textbox mit Multiline ignoriert Backslash

28. Februar 2012 17:35

Hallo Tim!

Argh! Ich glaube, ich hatte das Problem falsch verstanden.
Klar, die Textbox benötigt ja die Backslashes, um damit den Zeilenumbruch zu machen.
Wenn da jetzt aber keine Backslashes mehr ankommen, dann kann sie den Zeilenumbruch nicht vollziehen.

Danke für die einfache aber plausible Erklärung.

Habe mir den Hotfix jetzt mal angefordert und warte darauf, dass der Admin ihn für mich herunterlädt, da exe-Dateien hier in diesem Netzwerk nur von der Technik heruntergeladen werden dürfen.

Re: [Gelöst] [CC] Textbox mit Multiline ignoriert Backslash

29. Februar 2012 10:40

Timo Lässer hat geschrieben:Habe mir den Hotfix jetzt mal angefordert und warte darauf, dass der Admin ihn für mich herunterlädt, da exe-Dateien hier in diesem Netzwerk nur von der Technik heruntergeladen werden dürfen.
Clever ;-)