XbpMle Windows 7, WordWrap verhält sich anders
Moderator: Moderatoren
XbpMle Windows 7, WordWrap verhält sich anders
Holt man einen String mit SetData() in ein XbpMle Control ist das verhalten
Im Windows 7 anders als im Windows XP.
Ein String wie z.B.:
1-1234567890123456789012345678901234567890
wenn Mle ist kleiner als die Zeile, WordWrap = .T. (default), horizScroll = .F.
Windows XP formatiert es in 2 Zeilen:
1-123456789012345678901234567890
1234567890
Windows 7 in 3 Zeilen:
1-
12345678901234567890123456789012
34567890
Ich brauche aber das zweizeilige Ergebnis XP like.
Der Unterschied liegt wahrscheinlich in der ComCtl32.dll, denn genauso verhält sich das NotePad je nach Windows Version. Der zusätzliche Zeilenumbruch in Windows 7 passiert auch bei folgenden Zeichen +, (, ), %, ! und -.
Hat jemand einen Tip?
Im Windows 7 anders als im Windows XP.
Ein String wie z.B.:
1-1234567890123456789012345678901234567890
wenn Mle ist kleiner als die Zeile, WordWrap = .T. (default), horizScroll = .F.
Windows XP formatiert es in 2 Zeilen:
1-123456789012345678901234567890
1234567890
Windows 7 in 3 Zeilen:
1-
12345678901234567890123456789012
34567890
Ich brauche aber das zweizeilige Ergebnis XP like.
Der Unterschied liegt wahrscheinlich in der ComCtl32.dll, denn genauso verhält sich das NotePad je nach Windows Version. Der zusätzliche Zeilenumbruch in Windows 7 passiert auch bei folgenden Zeichen +, (, ), %, ! und -.
Hat jemand einen Tip?
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: XbpMle Windows 7, WordWrap verhält sich anders
sind es die gleichen FONTS ?
eventuell ist aber auch der Rand bei Windows 7 kleiner.
Wenn du einen fixen Umbruch brauchst, würde ich chr(13) einfügen
eventuell ist aber auch der Rand bei Windows 7 kleiner.
Wenn du einen fixen Umbruch brauchst, würde ich chr(13) einfügen
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: XbpMle Windows 7, WordWrap verhält sich anders
Frage : ist es möglich das MLE "breiter" zu machen damit es passt ?Eugen hat geschrieben:Hat jemand einen Tip?
Hubert bringt mich auf die Idee ob vielleicht das helfen "könnte"
Code: Alles auswählen
oMLE::useVisualStyle := .F.
gruss by OHR
Jimmy
Jimmy
Re: XbpMle Windows 7, WordWrap verhält sich anders
Danke die Nachfrage.
Wir spiegeln in diese Mle die Ziffer 22 im Zulassungsbescheinigung für Kraftfahrzeuge.
Ich habe es mit xbpMle realisiert sichtbar sind 7 Zeilen, 44 sind Maximum. Die Zeilenlänge ist 54.
Insgesamt 2376 Zeichen sind möglich. Font ist ::mle22:setFontCompoundName( FONT_COURIER_MEDIUM + FONT_STYLE_BOLD )
Bei der Eingabe ersetze ich alle Space’s mit CHR(255), damit verhindere ich den Zeilenumbruch beim einfügen mit der Leertaste in einen String der länger ist als eine Zeile. So kann ich mitten editieren und nachfolgende Zeichen wandern brav nach hinten weiter. Ich könnte das minus Zeichen mit CHR(196) ersetzen, was mach ich aber mit % oder + oder (?
Die Idee mit useVisualStyle müsste ich ausprobieren, habe aber nie damit gearbeitet.
Wir spiegeln in diese Mle die Ziffer 22 im Zulassungsbescheinigung für Kraftfahrzeuge.
Ich habe es mit xbpMle realisiert sichtbar sind 7 Zeilen, 44 sind Maximum. Die Zeilenlänge ist 54.
Insgesamt 2376 Zeichen sind möglich. Font ist ::mle22:setFontCompoundName( FONT_COURIER_MEDIUM + FONT_STYLE_BOLD )
Bei der Eingabe ersetze ich alle Space’s mit CHR(255), damit verhindere ich den Zeilenumbruch beim einfügen mit der Leertaste in einen String der länger ist als eine Zeile. So kann ich mitten editieren und nachfolgende Zeichen wandern brav nach hinten weiter. Ich könnte das minus Zeichen mit CHR(196) ersetzen, was mach ich aber mit % oder + oder (?
Die Idee mit useVisualStyle müsste ich ausprobieren, habe aber nie damit gearbeitet.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9388
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: XbpMle Windows 7, WordWrap verhält sich anders
Wenn Du kein Manifest linkst/auslieferst, spielt das keine Rolle, weil dann sowieso keine visuellen Stile eingesetzt werden. Ansonsten kannst Du - bei vorhandenem Manifest - visuelle Stile für die komplette App abschalten:Die Idee mit useVisualStyle müsste ich ausprobieren, habe aber nie damit gearbeitet.
Code: Alles auswählen
GetApplication():EnableVisualStyles := XBPAPP_NOSTYLES
Herzlich,
Tom
Tom
Re: XbpMle Windows 7, WordWrap verhält sich anders
Ich arbeite dort ohne Manifest, die Option fehlt flach.
Morgen werde ich mit COC beim TÜV sprechen, vieleicht schlagen wir ein Kompromis und arbeiten nicht mehr mit festem Courier Font.
Wenn man dann die Spaces nicht gegen CHR(255) austauscht, kann man im Mle einigermassen gut editieren und formatieren, Nachteil, auf dem Papier ist die Formatierung öfters anders als auf dem Bildschirm. Auf dem Papier dürfen nicht mehr als ein Leerzeichen zwischen den Wörtern bleiben, damit keine Chance für Fälschung (dazwischen schreiben) gegeben ist.
Ich danke für die Tipps
Morgen werde ich mit COC beim TÜV sprechen, vieleicht schlagen wir ein Kompromis und arbeiten nicht mehr mit festem Courier Font.
Wenn man dann die Spaces nicht gegen CHR(255) austauscht, kann man im Mle einigermassen gut editieren und formatieren, Nachteil, auf dem Papier ist die Formatierung öfters anders als auf dem Bildschirm. Auf dem Papier dürfen nicht mehr als ein Leerzeichen zwischen den Wörtern bleiben, damit keine Chance für Fälschung (dazwischen schreiben) gegeben ist.
Ich danke für die Tipps
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: XbpMle Windows 7, WordWrap verhält sich anders
Hi,
nur ein Leerzeichen zwischen dem Text ?
Man kann übrigens die Schriftbreite eines Textes ermitteln (bei FixFont reicht ja ein Zeichen) und das Control in der Breite anpassen, dass genau 27 rein passen.
oMle:setSize() ...
nur ein Leerzeichen zwischen dem Text ?
Code: Alles auswählen
do while " " $ cTxt
cTxt := strTran(cTxt, " ", " ")
enddo
oMle:setSize() ...
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9388
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: XbpMle Windows 7, WordWrap verhält sich anders
Es ist tatsächlich so, ich hab's nachgestellt, und es hat nichts mit visuellen Stilen zu tun. Windows 7 wrappt nach dem "-", XP tut das nicht. Das Verhalten ändert sich auch nicht, wenn man visuelle Stile zu-/abschaltet. Das "neue" Formatierungsverhalten ist also betriebssystemimmanent.
Ich sehe zwei Lösungen. Entweder untersucht man den Text manuell während der Eingabe, also im Handler, und formatiert ihn dort, oder man schaut sich das hier an - und versucht, es zu verstehen:
http://support.microsoft.com/kb/109551
Ich sehe zwei Lösungen. Entweder untersucht man den Text manuell während der Eingabe, also im Handler, und formatiert ihn dort, oder man schaut sich das hier an - und versucht, es zu verstehen:
http://support.microsoft.com/kb/109551
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15701
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: XbpMle Windows 7, WordWrap verhält sich anders
Man könnte auch die Formatierung des Textes (wordwrap aus, horizontal scroll an) nach dem Editieren erledigen (nach KillFocus, Inhalt lesen, formatieren, setData()...)
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: XbpMle Windows 7, WordWrap verhält sich anders
hm ... warum 1 x MLE statt 7 x SLE ?Eugen hat geschrieben:Wir spiegeln in diese Mle die Ziffer 22 im Zulassungsbescheinigung für Kraftfahrzeuge.
Ich habe es mit xbpMle realisiert sichtbar sind 7 Zeilen, 44 sind Maximum. Die Zeilenlänge ist 54.
Insgesamt 2376 Zeichen sind möglich.
das man eine Wordwrap bekommt hängt ja mit der Fenster Grösse zusammen.
du kannst ja mit GraQueryTextBox() die Länge einer Zeile ermitteln und das MLE "anpassen".
aber wie ich schon am Anfang sagte : 7 x SLE statt 1 x MLE ... und wenn dich die "Rahmen" stören sollten da gibt es auch eine Lösung.
gruss by OHR
Jimmy
Jimmy