Einen EditorGadget() auf gleichbreite Zeichenbreite

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von DarkSoul »

Hallo,

ich möchte einen EditorGadget() auf gleichbreite Zeichenbreite (Also das "M" und das "I" gleich breit) umstellen (so wie unter cmd.exe oder im PB-Editor).

Hatte im Hinterkopf, dass das über die Schriftart "Fixedsys" gemacht wird. Funktioniert aber nicht, weil die Schrift nicht geladen wird und anscheinend nicht existiert.

Wie geht das?
Bild
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von _JON_ »

Also hier unter Windows 10 ist die fixedsys font vorhanden.

Code: Alles auswählen

OpenWindow(0, 0, 0, 640, 320, "DOS", $80C80000 | #PB_Window_ScreenCentered)
SetWindowColor(0, 0)
EditorGadget(0, 0, 00, 640, 320, 0)
SetGadgetColor(0, #PB_Gadget_BackColor, 0)
SetGadgetColor(0, #PB_Gadget_FrontColor, $C0C0C0)

If LoadFont(0, "Fixedsys", 9)
  SetGadgetFont(0, FontID(0))
EndIf
SetGadgetText(0, #CRLF$ + "C:\Windows\system32")


Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von DarkSoul »

Bei mir nicht. Auf zwei Geräten sogar nicht. Ich lösche nie Schriftarten.

Beides Win 8.1.

Dein Beispiel geht auch nicht. Zeigt immer dieselbe Schriftart, egal, was ich bei LoadFont() angebe.
Vermutlich fehlt die Schriftart, obwohl sie unter CMD.EXE zu sehen und in NOTEPAD.EXE auswählbar ist.

Warum sie fehlt, ist fast schon egal, denn das müsste mein Programm dann ohnehin berücksichtigen.

Ich kenne mich mit diesen ganzen Schriftarten nicht aus. Die sehen sowieso alle irgendwie gleich aus.

Das Aussehen ist dabei egal. Gleich breit, das ist einzig wichtig.


Welche Schriftart ist garantiert immer verfügbar, die von der Zeichenbreite her wie Fixedsys ist?


Edit: Hat sich erledigt. Hatte ohnehin das falsche PB (x64) zufassen. Ich benutze sonst immer das x86 und da geht es.

Trotzdem danke!
Zuletzt geändert von DarkSoul am 08.11.2016 20:16, insgesamt 1-mal geändert.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von RSBasic »

Versuch eine andere Schriftart zu wählen. Z.B.: Courier New, Courier oder Consolas
Wichtig ist nur, dass du eine Monospace-Schriftart nimmst. Hier weitere Beispiele: https://de.wikipedia.org/wiki/Nichtprop ... hriftarten
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von DarkSoul »

Hat sich zeitlich überschnitten.

Das Problem ist erledigt (Siehe Edit-Eintrag).

Die Purebasic-Versionen für x64 und x86 verhalten sich an dieser Stelle unterschiedlich. Da es nur eine 32Bit-Version geben wird und ich gerade das falsche PB offen hatte, hat sich das Problem erübrigt. :allright:
Bild
es_91
Beiträge: 383
Registriert: 25.01.2011 04:48

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von es_91 »

DarkSoul hat geschrieben:Welche Schriftart ist garantiert immer verfügbar, die von der Zeichenbreite her wie Fixedsys ist?
Keine. Immer verfügbar ist nur Courier. Alle anderen könnten unter Umständen mal fehlen.

Falls Du mal eine suchst, die exakt Zeichenbreit zu FixedSys ist (bei Schriftgröße 10 und 96 dpi!) empfehle ich Bitstream Vera Mono oder das bekanntere DejaVu Mono, beide downzuloaden, mitzuliefern und einzubinden mit RegisterFontFile ().

( Courier, Courier New, Consolas, Lucida Console habe alle unterschiedliche Zeichenbreiten und decken sich nie mit FixedSys. )
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Einen EditorGadget() auf gleichbreite Zeichenbreite

Beitrag von DarkSoul »

Es geht nicht darum, wie groß die Zeichen sind. Es geht darum, dass alle Zeichen innerhalb des Gadgets dieselbe Breite haben.
Immer verfügbar ist nur Courier.
Den nehme ich jetzt und gut ist. :allright:
Bild
Antworten