Fenstergröße
Moderator: Moderatoren
Fenstergröße
Ich habe die "ehrenvolle" Aufgabe, ein altes Clipper 5.2 Programm auf WIndows 7 laufen zu lassen... soweit so gut.
Leider ist das Programmfenster ( VIO-Modus ) immer sehr klein ( Bildschim läuft z.B. bei 1280*1024, kann aber noch höher sein!), da xbase vermutlich immer einen Standartzeichensatz für die Ausgabe nimmt.
Nun würde ich aber gern das Programmfenster der jeweiligen eingestellten Auflösung des Bildschirm in Bezug auf Fenstergröße + Zeichensatzgröße anpassen. Ist das im VIO-Modus überhaupt möglich? Wenn nein, geht es denn im XbpCrt-Modus?
Per Tastendruck ( welche auch immer ) soll zwischen 80x25 Zeichen auf 80x50 zeichen umgeschaltet werden können ( das alte Clipperprogramm hat sowas eingebaut ). Ist das mit dem XbpCrt-Modus möglich?
Ich stelle mir das so vor:
Programm ermittelt die Bildschirmauflösung und stellt darauf das Programmfenster und die Zeichensatzgröße in Abhängigkeit dieser Bildschirmauflösung ein.
Falls die Fragen unverständlich sind... ich bin NOCH ein absoluter xbase++ Laie und arbeite mich da gerade ein
Leider ist das Programmfenster ( VIO-Modus ) immer sehr klein ( Bildschim läuft z.B. bei 1280*1024, kann aber noch höher sein!), da xbase vermutlich immer einen Standartzeichensatz für die Ausgabe nimmt.
Nun würde ich aber gern das Programmfenster der jeweiligen eingestellten Auflösung des Bildschirm in Bezug auf Fenstergröße + Zeichensatzgröße anpassen. Ist das im VIO-Modus überhaupt möglich? Wenn nein, geht es denn im XbpCrt-Modus?
Per Tastendruck ( welche auch immer ) soll zwischen 80x25 Zeichen auf 80x50 zeichen umgeschaltet werden können ( das alte Clipperprogramm hat sowas eingebaut ). Ist das mit dem XbpCrt-Modus möglich?
Ich stelle mir das so vor:
Programm ermittelt die Bildschirmauflösung und stellt darauf das Programmfenster und die Zeichensatzgröße in Abhängigkeit dieser Bildschirmauflösung ein.
Falls die Fragen unverständlich sind... ich bin NOCH ein absoluter xbase++ Laie und arbeite mich da gerade ein
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Fenstergröße
Hallo MaTel,
ist sicher kein Problem.
Noch besser ist aber -meine ich- der Hybridmodus .
Uli
ist sicher kein Problem.
Noch besser ist aber -meine ich- der Hybridmodus .
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- 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: Fenstergröße
suche mal nach APPSYS.PRGMaTel hat geschrieben:Programm ermittelt die Bildschirmauflösung und stellt darauf das Programmfenster und die Zeichensatzgröße in Abhängigkeit dieser Bildschirmauflösung ein.
mit SetMode(<nMaxRow>, <nMaxCol>) kannst du den Bildschirmmodus "umschalten".
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Fenstergröße
Es gab hier vor kurzem eine Diskussion im Forum, wie man aus der Bildschirmauflösung die maximale Anzahl Splaten und Zeilen errechnen kann. Knechte doch mal die Foren-Suchfunktion danach. Manfred brauchte das, glaube ich.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Fenstergröße
Guten Morgen,
vor einigen Jahren habe ich mich mit dem Problem herumgeschlagen. Ich muss allerdings erst das Programm raussuchen (habe von hier keinen Zugriff auf die Quellen).
Du solltest Dir mal die Funktion SetMode() anschauen. Das zweite Problem war damals (noch zu Zeiten von Windows 2000) war ein nicht-proportionaler Font, der auch entsprechend skalierbar ist. Ich habe damals Lucida Console verwendet. Da Windows überwiegend mit proportionalen Fonts arbeitet, ist die Auswahl von nicht-proportionalen Fonts recht bescheiden.
Je nach Grösse der Schriftart gibt es diese nicht, dann wird die nächst-kleinere, verfügbare Schriftgrösse genommen. Das Programm lief damals auf Monitoren mit 1024*768 Auflösung (wenn ich mich recht erinnere), und Lucida Console war die Schriftart, mit der man am besten (eben auch von der Darstellung her) klarkam.
Code-Beispiele folgen dann heute abend.
vor einigen Jahren habe ich mich mit dem Problem herumgeschlagen. Ich muss allerdings erst das Programm raussuchen (habe von hier keinen Zugriff auf die Quellen).
Du solltest Dir mal die Funktion SetMode() anschauen. Das zweite Problem war damals (noch zu Zeiten von Windows 2000) war ein nicht-proportionaler Font, der auch entsprechend skalierbar ist. Ich habe damals Lucida Console verwendet. Da Windows überwiegend mit proportionalen Fonts arbeitet, ist die Auswahl von nicht-proportionalen Fonts recht bescheiden.
Je nach Grösse der Schriftart gibt es diese nicht, dann wird die nächst-kleinere, verfügbare Schriftgrösse genommen. Das Programm lief damals auf Monitoren mit 1024*768 Auflösung (wenn ich mich recht erinnere), und Lucida Console war die Schriftart, mit der man am besten (eben auch von der Darstellung her) klarkam.
Code-Beispiele folgen dann heute abend.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2829
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 97 Mal
- Danksagung erhalten: 13 Mal
Re: Fenstergröße
Hallo,
einfach mal schnell rüberkopiert:
Wie geschrieben, Lucida Console war damals der Font, der am flexibelsten einsetzbar war.
einfach mal schnell rüberkopiert:
Code: Alles auswählen
#define DEF_ROWS 25
#define DEF_COLS 80
aSizeDesktop := AppDesktop():currentSize()
nFontWide := Int(aSizeDesktop[1] / DEF_COLS * 0.95)
nFontHigh := Int(aSizeDesktop[2] / DEF_ROWS * 0.95)
aPos := { (aSizeDesktop[1]-(DEF_COLS * nFontWide)) /2, ;
(aSizeDesktop[2]-(DEF_ROWS * nFontHigh)) /2 }
// Create XbpCRT object
oCrt := XbpCrt():New ( NIL, NIL, aPos, DEF_ROWS, DEF_COLS )
oCrt:FontWidth := nFontWide
oCrt:FontHeight := nFontHigh
oCrt:title := AppName()
oCrt:titleBar := TRUE
oCrt:FontName := "Lucida Console"
oCrt:Create()
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fenstergröße
Hi,
hier habe ich einen Vortrag zur Migration von der DevCon 2007.
Im letzten Beispiel zeige ich wie man mit einem XbpCRT() Programm (VIO geht nicht) einen Zeichensatz wählen und auch speichern kann.
http://www.xbaseforum.de/viewtopic.php?f=16&t=2294
auf der 4. Seite gibt es auch noch diesen Artikel, aber da wurde das Beispiel im Beitrag zerstört. Die ZIP müsste aber noch funktionieren.
http://www.xbaseforum.de/viewtopic.php?f=16&t=225
hier habe ich einen Vortrag zur Migration von der DevCon 2007.
Im letzten Beispiel zeige ich wie man mit einem XbpCRT() Programm (VIO geht nicht) einen Zeichensatz wählen und auch speichern kann.
http://www.xbaseforum.de/viewtopic.php?f=16&t=2294
auf der 4. Seite gibt es auch noch diesen Artikel, aber da wurde das Beispiel im Beitrag zerstört. Die ZIP müsste aber noch funktionieren.
http://www.xbaseforum.de/viewtopic.php?f=16&t=225
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: Fenstergröße
hier ist der Thread http://www.xbaseforum.de/viewtopic.php?f=30&t=6377Jan hat geschrieben:Es gab hier vor kurzem eine Diskussion im Forum, wie man aus der Bildschirmauflösung die maximale Anzahl Splaten und Zeilen errechnen kann.
gruss by OHR
Jimmy
Jimmy
- 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: Fenstergröße
hi,
welche Fonts kann man im Hybrid Modus "richtig" resizen ? hiess es nicht es würde mit TTF Fonts gehen ?
mit dem Standard "Alaska CRT" hab ich bei 4:3 Auflösungen gute Resultate aber bei 16:9 oder 19:10 passt es im "Vollbild" nicht in der "Breite".
"Terminal" und "Courier New" haben bei "wide Screen" das selbe Problem wie "Alaska Crt".
"Lucida Console" geht da zwar ... ist mir aber "zu dünn".
so und nun eine Frage :warum "knallt" es bei "SetFont" wenn ich diese Fonts verwende
welche Fonts kann man im Hybrid Modus "richtig" resizen ? hiess es nicht es würde mit TTF Fonts gehen ?
mit dem Standard "Alaska CRT" hab ich bei 4:3 Auflösungen gute Resultate aber bei 16:9 oder 19:10 passt es im "Vollbild" nicht in der "Breite".
"Terminal" und "Courier New" haben bei "wide Screen" das selbe Problem wie "Alaska Crt".
"Lucida Console" geht da zwar ... ist mir aber "zu dünn".
so und nun eine Frage :
Code: Alles auswählen
oCrt := XbpCrt() :new(...)
oCrt:SysMenu := .F.
oCrt:titleBar := .F. // no CRT Titlebar
oCrt:Border := XBPDLG_NO_BORDER
oCrt:setName(nSetName) // better to Identify
oCrt:create()
oCrt:SetFont( oFont )
mit"Times New Roman"
"Arial Black"
"Arial Fett"
"Arial Unicode MS"
"Courier"
"Verdana"
"Helvetica"
"Arial"
"MS Serif"
oError:args :
-> VALTYPE: O CLASS: XbpCrt
-> VALTYPE: O CLASS: XbpFont
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter hat falschen Typ
oError:filename :
oError:genCode : 2
oError:operation : :setFont
oError:osCode : 0
oError:severity : 2
oError:subCode : 1025
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Fenstergröße
Hallo Jimmy,
warum benutzt Du SetFont unmittelbar nach Create() ?
Ich mache es so:
warum benutzt Du SetFont unmittelbar nach Create() ?
Ich mache es so:
Code: Alles auswählen
// XbpCRT-Fenster erzeugen
oCrt := XbpCrt():New ( NIL, NIL, aPos,25/*nRows*/,80/*nCols*/ )
oCrt:FontWidth := nFontWidth
oCrt:FontHeight := nFontHeight
oCrt:title := AppName()
oCrt:FontName := "COURIER NEW"+nationMsg(NAT_MSG_FNT_STYLE_BOLD) // "Alaska Crt"
oCrt:Create()
oCrt:PresSpace() // Presentation Space initialisieren
SetAppWindow( oCrt ) // XbpCrt wird aktives Fenster und Ausgabegerät
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fenstergröße
AUGE_OHR hat geschrieben: so und nun eine Frage :
warum "knallt" es bei "SetFont" wenn ich diese Fonts verwendedas steht in der Dokumentation von 1.90.355 zu XbpCrt():SetFont()"Times New Roman"
"Arial Black"
"Arial Fett"
"Arial Unicode MS"
"Courier"
"Verdana"
"Helvetica"
"Arial"Hinweis: Der in <oXbpFont> angegebene Zeichensatz muß eine Nicht-Proportional-Schrift, d.h. ein Zeichensatz mit fester Breite, sein, andernfalls wird ein Laufzeitfehler ausgelöst.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Fenstergröße
Courier ist allerdings ein Zeichensatz mit fester Zeichenbreite.
Uli
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- 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: Fenstergröße
schon klar aber es geht hier um CRT "Vollbild" d.h. mit dem oCrt:resize Slot wo man dann oCrt:SetFont(oFont) verwenden muss.UliTs hat geschrieben:warum benutzt Du SetFont unmittelbar nach Create() ?
p.s. es handelt sich um dass was Till uns auf dem JHV gezeigt hat
gruss by OHR
Jimmy
Jimmy
- 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: Fenstergröße
wenn ich das richtig verstehe "sollten" es die mit oFont:vector = .F. sein ?UliTs hat geschrieben:Courier ist allerdings ein Zeichensatz mit fester Zeichenbreite.
wie Ulli sagte zeigt mir c:\ALASKA\XPPW32\Source\samples\basics\FONT\fontdb.prg für
Code: Alles auswählen
"Courier"
"MS Serif"
"MS Sans Serif"
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fenstergröße
Ist Courier ein TrueType Font ? Ich meine nur Courier New ...
Ich nutze dieses Programm um einen schönen Font zu finden:
Ich nutze dieses Programm um einen schönen Font zu finden:
- Dateianhänge
-
- CrtFont.zip
- (2.43 KiB) 526-mal heruntergeladen
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: Fenstergröße
hi,
sehr schön mit der INI Datei
ich habe mir aus dem FONTDB Sample etwas ähnliches gebaut aber wir beide arbeiten auf das oCRT mit oCrt:configure() statt wie Till mit oCrt:SetFont(oFont)
Frage : was war bei Cl*pper die möglichen "Auflösungen" ?
25 x 80
50 x 80
43 x 80
50 x 132
50 x 144 (?)
sehr schön mit der INI Datei
ich habe mir aus dem FONTDB Sample etwas ähnliches gebaut aber wir beide arbeiten auf das oCRT mit oCrt:configure() statt wie Till mit oCrt:SetFont(oFont)
Frage : was war bei Cl*pper die möglichen "Auflösungen" ?
25 x 80
50 x 80
43 x 80
50 x 132
50 x 144 (?)
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Fenstergröße
Courier ist kein TrueType Font. Es funktioniert aber trotzdem. Man ist nur in der Wahl der Schriftgröße eingeschränkt.brandelh hat geschrieben:Ist Courier ein TrueType Font ? Ich meine nur Courier New ...
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fenstergröße
Diese INI Lösung ist sehr alt und unflexibel, wer als eine INI Dateiverwaltung sucht, findet in der Wissensbasis bessereAUGE_OHR hat geschrieben:sehr schön mit der INI Datei
Das Programm ermöglicht nur die Suche nach dem passenden Font für CRT, ich habe damals einige für uns freigeschaltet die gut ausgesehen haben.
Insbesondere bei den LINIEN Symbolen, aber auch z.B. bei § muss man aber immer mit Abstrichen rechnen.
Hier eine modernere Version im Anwendungsprogramm, das die Funktion beim Programmstart mit .f. aufruft,
Code: Alles auswählen
ChangeFont( .f. ) // ohne Nachzufragen letzte Einstellung starten.
Code: Alles auswählen
case hpmen=NR_DIENST
do case
case submen=1
ChangeFont() // Bildschirmschriten umstellen
Code: Alles auswählen
*------------------------------------------------------------------------
procedure ChangeFont( lZeigAuswahlFenster )
local oCrt := SetAppWindow()
local aSizeDesktop := AppDesktop():currentSize()
local nDesktopBreite := aSizeDesktop[1]
local nDesktopHoehe := aSizeDesktop[2]
local nBreite, nHoehe
local aFontList := { { "Alaska Crt" , 16, 8 } ,;
{ "8514oem" , 20,10 } ,;
{ "Terminal" , 18,10 } ,;
{ "IBM3270" , 29,13 } ,;
{ "IBM3270" , 29,14 } ,;
{ "IBM3270" , 35,14 } ,;
{ "IBM3270" , 36,15 } ,;
{ "IBM3270" , 38,15 } ,;
{ "Lucida Console", 28,13 } ,;
{ "Lucida Console", 29,13 } ,;
{ "Lucida Console", 30,14 } ,;
{ "Lucida Console", 32,14 } ,;
{ "Lucida Console", 35,14 } ,;
{ "Lucida Console", 36,14 } }
static nAktivFont := 1 // Alaska CRT
local nMaxFontNr := len(aFontList)
local cWahl
local cFileName := UserInI("INI") // INI-Dateinamen DES Users ermitteln
local cSection := "Benutzervorgaben"
local cVar := "Bildschirmschriftart"
DEFAULT lZeigAuswahlFenster TO .t.
if lZeigAuswahlFenster
do while .t.
cWahl := ask(12,"Schrift: "+aFontList[nAktivFont,1]+;
" ["+ntrim(aFontList[nAktivFont,2])+"-"+ntrim(aFontList[nAktivFont,3])+"]"+;
" wechseln ? <L>etzte, <N>„chste, <E>nde","<" )
do case
case cWahl = "E"
exit
case cWahl = "N"
nAktivFont++
case cWahl = "L"
nAktivFont--
end case
* hier muá die Schriftart ge„ndert werden
if nAktivFont > nMaxFontNr // šber und
nAktivFont := 1
endif
if nAktivFont < 1 // Unterl„ufe ausgleichen
nAktivFont := nMaxFontNr
endif
oCrt:FontName := aFontList[nAktivFont,1]
oCrt:FontHeight := aFontList[nAktivFont,2]
oCrt:FontWidth := aFontList[nAktivFont,3]
oCrt:configure()
nBreite := oCrt:currentSize()[1]
nHoehe := oCrt:currentSize()[2]
oCrt:setPos( { (nDesktopBreite-nBreite)/2 , (nDesktopHoehe-nHoehe)/2 } )
enddo
if ! SetIni(cSection, cVar, nAktivFont , cFileName)
meldung(12,"F",{ cSection + " - " + cVar,;
"konnten nicht in INI-Datei geschrieben werden:",;
cFileName } )
endif
else
nAktivFont := val( GetIni(cSection, cVar, "1", cFileName) )
if nAktivFont < 1 .or. nAktivFont > nMaxFontNr // m”gliche Fehler ausgleichen
nAktivFont := 1
endif
if nAktivFont > 1 // 1 ist ja Standard !
oCrt:FontName := aFontList[nAktivFont,1]
oCrt:FontHeight := aFontList[nAktivFont,2]
oCrt:FontWidth := aFontList[nAktivFont,3]
oCrt:configure()
nBreite := oCrt:currentSize()[1]
nHoehe := oCrt:currentSize()[2]
oCrt:setPos( { (nDesktopBreite-nBreite)/2 , (nDesktopHoehe-nHoehe)/2 } )
endif
endif
return
Daher fehlt die das Fenster vergrößern würde.
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: Fenstergröße
und wie sehen deine BOX Zeichen aus ?UliTs hat geschrieben:Courier ist kein TrueType Font. Es funktioniert aber trotzdem. Man ist nur in der Wahl der Schriftgröße eingeschränkt.
um die zu bekommen muss man oFont:Codepage := 255 setzten und dann funktioniert oCrt:SetFont nicht mehr
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Fenstergröße
Hi,
ich hatte früher die doppelten Ränder außen, die sich mit einfach gekreuzt haben, die Kreuzungen fehlen komplett.
Daher habe ich bei den XbpCRT Programmen auf einfache Linien umgestellt und z.B. "Lucida Console" zeigt es schön an:
ich hatte früher die doppelten Ränder außen, die sich mit einfach gekreuzt haben, die Kreuzungen fehlen komplett.
Daher habe ich bei den XbpCRT Programmen auf einfache Linien umgestellt und z.B. "Lucida Console" zeigt es schön an:
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: Fenstergröße
so langsam denke ich das oCRT:SetFont() noch nicht ganz richtig arbeitet ...
hier der Codeund hier Fehlermeldungbestückt und einen "sichtbaren" Nachweis das sich der Font verändert während beies "so" nicht "wirkte" ... hm
ok, wenn es in der "Liste der Änderungen" unter "Neu" steht und in "Blau" im Helpfile dann ist es eben noch nicht sehr erprobt ( was User damit anstellen ... ) :-"
hier der Code
Code: Alles auswählen
oFont := oCrt:Setfont()
IF NIL <> oFont
IF oFont:isDerivedFrom( XbpFont() )
IF oFont:status() == XBP_STAT_CREATE
// hier wäre erst OK
ELSE
Msgbox("Error CREATE")
ENDIF
ELSE
Msgbox("Error FONT")
ENDIF
ELSE
Msgbox("FONT = NIL")
ENDIF
oCrt:SetFont( oFont )
klar hat er vorher "Error CREATE" geschrienen ... aber ich habe vorher mitoError:args :
-> VALTYPE: O CLASS: XbpCrt
-> VALTYPE: O CLASS: XbpFont
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter hat falschen Typ
oError:filename :
oError:genCode : 2
oError:operation : :setFont
oError:osCode : 0
oError:severity : 2
oError:subCode : 1025
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
Code: Alles auswählen
oCrt := oDlg:drawingArea:ChildList()[1]
oFontDlg := XbpFontDialog():New()
oFontDlg:fixedOnly := .T.
oFontDlg:create()
oFont := oFontDlg:display()
IF NIL <> oFont
oCrt:SetFont(oFont)
ENDIF
Code: Alles auswählen
oCrt:FontName := oFont:familyName
oCrt:FontHeight := oFont:height
oCrt:FontWidth := oFont:width
oCrt:configure()
ok, wenn es in der "Liste der Änderungen" unter "Neu" steht und in "Blau" im Helpfile dann ist es eben noch nicht sehr erprobt ( was User damit anstellen ... ) :-"
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Fenstergröße
Ich habe die Codepage nicht verändert. Einzellinien und Doppellinien funktionieren. Allerdings "Kreuzungen" und "Dreiecke" zwischen Einzel- und Doppellinien nicht.AUGE_OHR hat geschrieben:und wie sehen deine BOX Zeichen aus ?UliTs hat geschrieben:Courier ist kein TrueType Font. Es funktioniert aber trotzdem. Man ist nur in der Wahl der Schriftgröße eingeschränkt.
um die zu bekommen muss man oFont:Codepage := 255 setzten und dann funktioniert oCrt:SetFont nicht mehr
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- 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: Fenstergröße
im Prinzip ist es eigentlich egal ob die BOX Symbole "stimmen" oder nicht.
es scheint aber so das nicht alle "machbaren" Fonts auch "richtige" Ergebnisse liefern.
bislang hab ich CRT Fenster nur auf maximale Grösse gebracht ohne "resize"
wie bei Hubert muss man dann einen Kompromiss aus Font Grösse und Row/Col machen.
nun hat uns Till ja Beispiel zum Thema CRT "resize" gezeigt wobei er eine Class geschrieben hat.also genau das was ich als "Shell" für ein CRT Fenster vorgeschlagen habe.
die "Shell" ist ja schon fertig und mit "Lucida Console" funktioniert es ... aber welcher Font noch ?
wenn man meint "Alaska CRT" ist doch vorhanden dann probiert es mal mit verschiedenen "Auflösungen"
hierbei ist sowohl AppDeskTop:CurrentSize() als auch ROW / COL gemeint.
"Alaska CRT" scheint bei allen 4:3 "Auflösungen" zu funktionieren aber bei "wide-Screen" und "Vollbild"
stimmt ja dann die "Umrechnung" nicht wie bei "Lucida Console" d.h. statt 50 x 132 sind es dann 50 x 144
***
was nun oCrt:SetFont( oFont ), was ich vorher nie gesehen haben, angeht sieht es so aus das bei einem
"eingebetteten" CRT eine Änderrung per oCRT:Configure() nicht gleich zu einem "optischen" Resultat führt (refresh).
man muss ja auch die "Shell" entsprechend "umrechnen" und ggf. ändern wenn es nicht mehr auf den Bildschirm "passt"
***
was nun XbpFontDialog() -> oFont angeht ist ja oFont:fixedOnly := .T. MUSS für ein CRT Fenster,
aber damit wird auch "Courier" ohne "New" angezeigt was mit oCrt:SetFont( oFont ) abstürzt während
"Courier New" ohne Probleme funktioniert.
sieht man sich den Code von Till an so findet man oFont:Codepage := 255 was für OEM steht.
ich "denke" Alaska lässt bei oCrt:SetFont( oFont ) auch nun diese Fonts zu welche eine OEM Codepage haben.
man müsste also eine eigene Class machen und das für CRT Fenster weiter "abfangen"aber dann bleiben nicht mehr viele Fonts übrig ...
es scheint aber so das nicht alle "machbaren" Fonts auch "richtige" Ergebnisse liefern.
bislang hab ich CRT Fenster nur auf maximale Grösse gebracht ohne "resize"
wie bei Hubert muss man dann einen Kompromiss aus Font Grösse und Row/Col machen.
nun hat uns Till ja Beispiel zum Thema CRT "resize" gezeigt wobei er eine Class geschrieben hat.
Code: Alles auswählen
FUNCTION CreateSizeableCrt( oParent, nRows, nCols, cTitle, xBGColor )
// Create a dialog that hosts the console window.
// The dialog serves as a background for the
// console
oDlg := XbpDialog():New( oParent )
...
oDlg:Create()
// Create console window without frame and title
// bar.
oCrt := XbpMainCrt():New ( oDlg:DrawingArea,,, nRows, nCols )
...
oCrt:Create()
...
RETURN oCrt
die "Shell" ist ja schon fertig und mit "Lucida Console" funktioniert es ... aber welcher Font noch ?
wenn man meint "Alaska CRT" ist doch vorhanden dann probiert es mal mit verschiedenen "Auflösungen"
hierbei ist sowohl AppDeskTop:CurrentSize() als auch ROW / COL gemeint.
"Alaska CRT" scheint bei allen 4:3 "Auflösungen" zu funktionieren aber bei "wide-Screen" und "Vollbild"
stimmt ja dann die "Umrechnung" nicht wie bei "Lucida Console" d.h. statt 50 x 132 sind es dann 50 x 144
***
was nun oCrt:SetFont( oFont ), was ich vorher nie gesehen haben, angeht sieht es so aus das bei einem
"eingebetteten" CRT eine Änderrung per oCRT:Configure() nicht gleich zu einem "optischen" Resultat führt (refresh).
man muss ja auch die "Shell" entsprechend "umrechnen" und ggf. ändern wenn es nicht mehr auf den Bildschirm "passt"
***
was nun XbpFontDialog() -> oFont angeht ist ja oFont:fixedOnly := .T. MUSS für ein CRT Fenster,
aber damit wird auch "Courier" ohne "New" angezeigt was mit oCrt:SetFont( oFont ) abstürzt während
"Courier New" ohne Probleme funktioniert.
sieht man sich den Code von Till an so findet man oFont:Codepage := 255 was für OEM steht.
ich "denke" Alaska lässt bei oCrt:SetFont( oFont ) auch nun diese Fonts zu welche eine OEM Codepage haben.
man müsste also eine eigene Class machen und das für CRT Fenster weiter "abfangen"
Code: Alles auswählen
CLASS MyCrtFontDialog() FROM XbpFontDialog()
EXPORTED:
METHOD display()
ENDCLASS
METHOD MyFontDlg:display()
LOCAL oFont := NIL
LOCAL nButton
DO WHILE .T.
oFont := ::XbpFontDialog:display()
IF NIL <> oFont
IF oFont:fixed = .T. .AND. ; // CRT-Fenster needs FIXEDFONT
oFont:Codepage = 255 // OEM ... hm
EXIT
ELSE
nButton := ConfirmBox( , ;
"wrong Font "+oFont:FamilyName+" for Hybrid Mode. try again ?" ,;
"Error Font", ;
XBPMB_YESNO , ;
XBPMB_QUESTION+XBPMB_APPMODAL+XBPMB_MOVEABLE,;
XBPMB_DEFBUTTON1)
IF nButton = XBPMB_RET_YES
ELSE
oFont := NIL
EXIT
ENDIF
ENDIF
ELSE
EXIT
ENDIF
ENDDO
RETURN oFont
gruss by OHR
Jimmy
Jimmy