XbpMle Windows 7, WordWrap verhält sich anders

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Eugen
Rookie
Rookie
Beiträge: 12
Registriert: Di, 14. Okt 2008 22:11
Wohnort: Köln

XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von Eugen »

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?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von brandelh »

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
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von AUGE_OHR »

Eugen hat geschrieben:Hat jemand einen Tip?
Frage : ist es möglich das MLE "breiter" zu machen damit es passt ?

Hubert bringt mich auf die Idee ob vielleicht das helfen "könnte"

Code: Alles auswählen

oMLE::useVisualStyle := .F.
ich habe es nicht ausprobiert !!!
gruss by OHR
Jimmy
Benutzeravatar
Eugen
Rookie
Rookie
Beiträge: 12
Registriert: Di, 14. Okt 2008 22:11
Wohnort: Köln

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von Eugen »

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.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von Tom »

Die Idee mit useVisualStyle müsste ich ausprobieren, habe aber nie damit gearbeitet.
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:

Code: Alles auswählen

GetApplication():EnableVisualStyles := XBPAPP_NOSTYLES
(Voraussetzung: 1.9 SL1)
Herzlich,
Tom
Benutzeravatar
Eugen
Rookie
Rookie
Beiträge: 12
Registriert: Di, 14. Okt 2008 22:11
Wohnort: Köln

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von Eugen »

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von brandelh »

Hi,

nur ein Leerzeichen zwischen dem Text ?

Code: Alles auswählen

do while "  " $ cTxt
   cTxt := strTran(cTxt, "  ", " ")
enddo
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() ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von Tom »

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
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von brandelh »

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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: XbpMle Windows 7, WordWrap verhält sich anders

Beitrag von AUGE_OHR »

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.
hm ... warum 1 x MLE statt 7 x SLE ?

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
Antworten