Fenstergröße unter Windows 7
Moderator: Moderatoren
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Fenstergröße unter Windows 7
Hallo Leute,
nach langer Zeit mal wieder ein neues Problem !!!
Ich habe mir einen neuen Rechner mit Windows 7 zugelegt. Der anfänglichen Euphorie folgte recht schnell die Ernüchterung. Bei meinem Programm (Eisenbahn-Triebfahrzeugs-Datenbank LOKLISTE) stimmen jetzt alle Fenstergrößen nicht mehr !!! Der äußere Rahmen kommt jetzt durch den hellblauen Windows 7-Rahmen dem inneren Rahmen XbpStatic() sehr nahe, bzw. überschreibt diesen sogar. Beim Anruf eines Warn- oder Informationsfenster mit MSGBOX oder CONFIRMBOX ist der X-Button oben rechts am Rand des Fensters ohne obere Abgrenzung (unschön anzusehen). Gib es dafür eine generelle Xbase++ - Lösung oder muß ich jetzt alle Fenster (ca.660 Stück) an Windows 7 anpassen. Bei den Info-Fenstern gibts sowieso m.W. keine Programmierlösung. Ich hasse MicroSoft !!!
MfG
Dipl.Ing. Karl-Heinz Kahl aus Trittau
nach langer Zeit mal wieder ein neues Problem !!!
Ich habe mir einen neuen Rechner mit Windows 7 zugelegt. Der anfänglichen Euphorie folgte recht schnell die Ernüchterung. Bei meinem Programm (Eisenbahn-Triebfahrzeugs-Datenbank LOKLISTE) stimmen jetzt alle Fenstergrößen nicht mehr !!! Der äußere Rahmen kommt jetzt durch den hellblauen Windows 7-Rahmen dem inneren Rahmen XbpStatic() sehr nahe, bzw. überschreibt diesen sogar. Beim Anruf eines Warn- oder Informationsfenster mit MSGBOX oder CONFIRMBOX ist der X-Button oben rechts am Rand des Fensters ohne obere Abgrenzung (unschön anzusehen). Gib es dafür eine generelle Xbase++ - Lösung oder muß ich jetzt alle Fenster (ca.660 Stück) an Windows 7 anpassen. Bei den Info-Fenstern gibts sowieso m.W. keine Programmierlösung. Ich hasse MicroSoft !!!
MfG
Dipl.Ing. Karl-Heinz Kahl aus Trittau
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
den "breiten" Rahmen nennt man "Borderpadding" zu deutsch "Rahmenfüllung".KHKDampflok hat geschrieben:... stimmen jetzt alle Fenstergrößen nicht mehr !!! Der äußere Rahmen kommt jetzt durch den hellblauen Windows 7-Rahmen dem inneren Rahmen XbpStatic() sehr nahe, bzw. überschreibt diesen sogar.
wenn du im Forum mal suchst wirst du sehen das ich das schon seit der "beta" von Win 7 das Thema angesprochen habe.
grundsätzlich kann man mit "GetSystemMetrics" die Grösse feststellen
Code: Alles auswählen
// Defines used with the GetSystemMetrics()-API, see
// xbpGetSystemMetrics()
#define SM_CXDLGFRAME 7
#define SM_CYDLGFRAME 8
#define SM_CYMENU 15
#define SM_CYCAPTION 4
#define SM_CXPADDEDBORDER 92
FUNCTION xbpGetSystemMetrics( nValue )
RETURN DllCall( "USER32.DLL", DLL_STDCALL, "GetSystemMetrics", nValue )
Function GetTitleBarHeight()
RETURN (xbpGetSystemMetrics(SM_CYCAPTION))
Function GetMenubarHeight()
RETURN (xbpGetSystemMetrics(SM_CYMENU))
Function GetBorderHeight()
RETURN (xbpGetSystemMetrics(SM_CYDLGFRAME))
Function GetBorderWidth()
RETURN (xbpGetSystemMetrics(SM_CXDLGFRAME))
Function GetBorderPadding()
LOCAL nRet := 0
IF OnOSVersion() > 5
nRet := xbpGetSystemMetrics(SM_CXPADDEDBORDER)
ENDIF
RETURN nRet
ich habe es "nur" in den o:resize Functionen, die ich für jedes "Fenster" habe, eingesetzt und korrigiere dort die Grössen.
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Moin Karl-Heinz,
Du musst leider alle Fenster anpassen - aber mache es dann bitte gleich richtig, damit Du zukünftig nicht wieder Probleme bekommst!
Schau Dir mal die Instanzvariable :clientSize an (XbpDialog)!!!
Die ist recht neu und damit setzt Du nicht mehr die Größe des Fensters, sondern der :drawingArea (also dem Bereich innerhalb des Rahmens)!
Das erleichtert Dir zukünftig vieles!
Viele Grüße,
Martin
Du musst leider alle Fenster anpassen - aber mache es dann bitte gleich richtig, damit Du zukünftig nicht wieder Probleme bekommst!
Schau Dir mal die Instanzvariable :clientSize an (XbpDialog)!!!
Die ist recht neu und damit setzt Du nicht mehr die Größe des Fensters, sondern der :drawingArea (also dem Bereich innerhalb des Rahmens)!
Das erleichtert Dir zukünftig vieles!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15688
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hi,
genau wie Martin sagt, ist die einzige richtige Vorgehensweise die, dass man den inneren Bereich eines Fensters definiert den man selbt braucht
und der Rest vom Programm berechnet wird. Leider geht das erst mit der 1.90.355 (SP1) so, vorher hätte man das berechnen können, aber
unter Windows XP war der ja immer gleich (solange man nicht die Darstellung geändert hatte).
Aber neu ist das Thema nicht !
Ich habe mit Windows 98/NT 4.0 angefangen mit Xbase++ Programme zu schreiben (so wie alle ohne Rücksicht auf die Rahmenbreite).
Dann kam XP mit seinen RIESIGEN Rändern, die Umstellung auf "Windows-klassisch" behebt das zwar, aber niemand - außer mir - wollte die langweilige Anzeige ...
MsgBox() und andere Systemfenster müssten aber automatisch stimmen.
PS: es soll ja wahnsinnige geben, die den Office 2007 Look gut finden
genau wie Martin sagt, ist die einzige richtige Vorgehensweise die, dass man den inneren Bereich eines Fensters definiert den man selbt braucht
und der Rest vom Programm berechnet wird. Leider geht das erst mit der 1.90.355 (SP1) so, vorher hätte man das berechnen können, aber
unter Windows XP war der ja immer gleich (solange man nicht die Darstellung geändert hatte).
Aber neu ist das Thema nicht !
Ich habe mit Windows 98/NT 4.0 angefangen mit Xbase++ Programme zu schreiben (so wie alle ohne Rücksicht auf die Rahmenbreite).
Dann kam XP mit seinen RIESIGEN Rändern, die Umstellung auf "Windows-klassisch" behebt das zwar, aber niemand - außer mir - wollte die langweilige Anzeige ...
MsgBox() und andere Systemfenster müssten aber automatisch stimmen.
PS: es soll ja wahnsinnige geben, die den Office 2007 Look gut finden
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
hi,
o:clientSize ist schon gut, aber es nützt dir bei einem o:resize ja nichts wenn man z.b. sein Programm auf die neue Bildschirm Grösse anpassen möchte.
hat der User dann auch noch die DPI Einstellung von 96 auf 144 ( = 150%) erhöht stimmt Pos / Size mit der Font Grösse nicht mehr ... deshalb ein o:resize.
p.s. ich baue meine Xbparts aus einem Array mit aPos=aSize={0,0} auf wobei auch der Dialog 0.0 ist.
erst nach dem ersten o:show() schicke ich ihn durch das o:resize was einen "Effekt" ergibt ( Stufen einstellbar )
o:clientSize ist schon gut, aber es nützt dir bei einem o:resize ja nichts wenn man z.b. sein Programm auf die neue Bildschirm Grösse anpassen möchte.
hat der User dann auch noch die DPI Einstellung von 96 auf 144 ( = 150%) erhöht stimmt Pos / Size mit der Font Grösse nicht mehr ... deshalb ein o:resize.
p.s. ich baue meine Xbparts aus einem Array mit aPos=aSize={0,0} auf wobei auch der Dialog 0.0 ist.
erst nach dem ersten o:show() schicke ich ihn durch das o:resize was einen "Effekt" ergibt ( Stufen einstellbar )
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
640x480brandelh hat geschrieben:Bei mir gibt es nur fixe Fenstergrößen
die meist "moderne" LCD haben nicht mehr das 4:3 Format sondern 1920x1024 oder 1680x1050 oder 1600x900 ...
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Jimmy,
die Aussage, bei einer anderen Schriftgröße würde das mit :clientSize nicht mehr stimmen, ist natürlich falsch.
Das kann man natürlich problemlos berücksichtigen - mache ich schließlich auch.
Da ich keine Luste habe, hier noch Mal alles dazu zu schreiben, verweise ich der Einfachheit halber mal auf den folgenden Thread http://www.xbaseforum.de/viewtopic.php? ... 848#p13848 - sollte Dir ja bekannt vorkommen
Anhand dessen einfach:
...
nZoomV := ( AppDesktopDPI() / 96 )
...
::xbpDialog:clientSize := { int( nZoomV * 170 ), int( nZoomV * 120 ) }
Viele Grüße,
Martin
die Aussage, bei einer anderen Schriftgröße würde das mit :clientSize nicht mehr stimmen, ist natürlich falsch.
Das kann man natürlich problemlos berücksichtigen - mache ich schließlich auch.
Da ich keine Luste habe, hier noch Mal alles dazu zu schreiben, verweise ich der Einfachheit halber mal auf den folgenden Thread http://www.xbaseforum.de/viewtopic.php? ... 848#p13848 - sollte Dir ja bekannt vorkommen
Anhand dessen einfach:
...
nZoomV := ( AppDesktopDPI() / 96 )
...
::xbpDialog:clientSize := { int( nZoomV * 170 ), int( nZoomV * 120 ) }
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Leute,
erstmal Danke für die Tipps. Das mit dem ClientSize scheint wohl für mich der richtige Weg zu sein, nur leider weiß ich wieder nicht, wie das angewendet wird. Ich schicke mal ein Standardfenster von mir. Vielleicht kann einer von Euch mal kurz abändern oder ergänzen, was für ClientSize notwendig ist ?
oSuch := DataDialog():new( oParent, oOwner,, aSize,, .F. )
oSuch:title := "Suchfunktion"
oSuch:icon := nIcon
oSuch:create()
drawingArea := oSuch:drawingArea // Anzeigebereich vom Dialog holen
drawingArea:setFontCompoundName( "8.Helv" )
oStatic := XbpStatic():new( drawingArea,,{5,5}, aStatic )
oStatic:caption := cSuchbegriff
oStatic:type := XBPSTATIC_TYPE_GROUPBOX
oStatic:create()
Im Voraus schon Vielen Dank sagt
Dipl.Ing. Karl-Heinz Kahl aus Trittau
erstmal Danke für die Tipps. Das mit dem ClientSize scheint wohl für mich der richtige Weg zu sein, nur leider weiß ich wieder nicht, wie das angewendet wird. Ich schicke mal ein Standardfenster von mir. Vielleicht kann einer von Euch mal kurz abändern oder ergänzen, was für ClientSize notwendig ist ?
oSuch := DataDialog():new( oParent, oOwner,, aSize,, .F. )
oSuch:title := "Suchfunktion"
oSuch:icon := nIcon
oSuch:create()
drawingArea := oSuch:drawingArea // Anzeigebereich vom Dialog holen
drawingArea:setFontCompoundName( "8.Helv" )
oStatic := XbpStatic():new( drawingArea,,{5,5}, aStatic )
oStatic:caption := cSuchbegriff
oStatic:type := XBPSTATIC_TYPE_GROUPBOX
oStatic:create()
Im Voraus schon Vielen Dank sagt
Dipl.Ing. Karl-Heinz Kahl aus Trittau
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
- brandelh
- Foren-Moderator
- Beiträge: 15688
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hi,
zunächst braucht man die 1.90.355 ... wenn man dann mit dem XppFD ein PRG erzeugt,
dann sieht man das Vorgehen von clientsize ...
Man darf selbst aSize nicht füllen, d.h. der Parameter wird nicht übergeben und auch intern nicht gesetzt.
Danach setzt man die ClientSize Variabel auf die gewünschten Werte.
zunächst braucht man die 1.90.355 ... wenn man dann mit dem XppFD ein PRG erzeugt,
dann sieht man das Vorgehen von clientsize ...
Man darf selbst aSize nicht füllen, d.h. der Parameter wird nicht übergeben und auch intern nicht gesetzt.
Danach setzt man die ClientSize Variabel auf die gewünschten Werte.
Gruß
Hubert
Hubert
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Moin Karl-Heinz,
an Deinem Beispiel:
Also einfach den aSize-Parameter aus der new(,,,) entfernen, und dafür clientSize entsprechend setzen.
Achtung: Wenn Du das so einfach machst, ist der Bereich in Deinem Fenster, auf dem Du Text ausgibst, natürlich zu groß! Der innere Bereich ist ja dann so groß, wie es früher das gesamte Fenster war. Du musst also die Werte ein wenig verkleinern.
Viele Grüße,
Martin
an Deinem Beispiel:
Code: Alles auswählen
oSuch := DataDialog():new( oParent, oOwner,, ,, .F. )
oSuch:clientSize := aSize
oSuch:title := "Suchfunktion"
oSuch:icon := nIcon
oSuch:create()
drawingArea := oSuch:drawingArea // Anzeigebereich vom Dialog holen
drawingArea:setFontCompoundName( "8.Helv" )
oStatic := XbpStatic():new( drawingArea,,{5,5}, aStatic )
oStatic:caption := cSuchbegriff
oStatic:type := XBPSTATIC_TYPE_GROUPBOX
oStatic:create()
Achtung: Wenn Du das so einfach machst, ist der Bereich in Deinem Fenster, auf dem Du Text ausgibst, natürlich zu groß! Der innere Bereich ist ja dann so groß, wie es früher das gesamte Fenster war. Du musst also die Werte ein wenig verkleinern.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hi KarlHeinz
kleiner Tipp noch von mir. Ich habe das bei mir so, daß ich die positionen der xbparts in einem Array drin habe. und dann mir plus + minus berechne.
hat den vorteil, wenn du die Maske veränderst , mußt du nur das Startarray entsprechend der Größe anpassen.
kleiner Tipp noch von mir. Ich habe das bei mir so, daß ich die positionen der xbparts in einem Array drin habe. und dann mir plus + minus berechne.
hat den vorteil, wenn du die Maske veränderst , mußt du nur das Startarray entsprechend der Größe anpassen.
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
genau das ist nicht richtig "so" ... da "fehlt" noch was für "DPI-aware". ich "zitiere" hier mal aus der Ot4xbMartin Altmann hat geschrieben:die Aussage, bei einer anderen Schriftgröße würde das mit :clientSize nicht mehr stimmen, ist natürlich falsch.
Das kann man natürlich problemlos berücksichtigen - mache ich schließlich auch.
Da ich keine Luste habe, hier noch Mal alles dazu zu schreiben, verweise ich der Einfachheit halber mal auf den folgenden Thread http://www.xbaseforum.de/viewtopic.php? ... 848#p13848 - sollte Dir ja bekannt vorkommen
Anhand dessen einfach:
...
nZoomV := ( AppDesktopDPI() / 96 )
...
::xbpDialog:clientSize := { int( nZoomV * 170 ), int( nZoomV * 120 ) }
Code: Alles auswählen
extern "C" HFONT OT4XB_API _create_font_(HDC hDC, LPSTR szFaceName, int iDeciPtHeight,int iDeciPtWidth, int iAttributes, BOOL fLogRes)
{
FLOAT cxDpi, cyDpi;
HFONT hFont;
LOGFONT lf;
POINT pt;
TEXTMETRIC tm;
SaveDC (hDC) ;
SetGraphicsMode (hDC, GM_ADVANCED) ;
ModifyWorldTransform (hDC, NULL, MWT_IDENTITY) ;
SetViewportOrgEx (hDC, 0, 0, NULL) ;
SetWindowOrgEx (hDC, 0, 0, NULL) ;
if (fLogRes)
{
cxDpi = (FLOAT) GetDeviceCaps (hDC, LOGPIXELSX) ;
cyDpi = (FLOAT) GetDeviceCaps (hDC, LOGPIXELSY) ;
}
else
{
cxDpi = (FLOAT) (25.4 * GetDeviceCaps (hDC, HORZRES) / GetDeviceCaps(hDC, HORZSIZE)) ;
cyDpi = (FLOAT) (25.4 * GetDeviceCaps (hDC, VERTRES) / GetDeviceCaps(hDC, VERTSIZE)) ;
}
pt.x = (int) (iDeciPtWidth * cxDpi / 72) ;
pt.y = (int) (iDeciPtHeight * cyDpi / 72) ;
DPtoLP (hDC, &pt, 1) ;
lf.lfHeight = - (int) (fabs((FLOAT)pt.y) / 10.0 + 0.5) ;
lf.lfWidth = 0 ;
lf.lfEscapement = 0 ;
lf.lfOrientation = 0 ;
lf.lfWeight = (LONG) (iAttributes & 1 ? 700 : 0 ); // Bold
lf.lfItalic = (BYTE) (iAttributes & 2 ? 1 : 0 );
lf.lfUnderline = (BYTE) (iAttributes & 4 ? 1 : 0 );
lf.lfStrikeOut = (BYTE) (iAttributes & 8 ? 1 : 0 );
lf.lfCharSet = 0 ;
lf.lfOutPrecision = 0 ;
lf.lfClipPrecision = 0 ;
lf.lfQuality = 0 ;
lf.lfPitchAndFamily = 0 ;
_xstrcpy (lf.lfFaceName, szFaceName) ;
hFont = CreateFontIndirect (&lf) ;
if (iDeciPtWidth != 0)
{
hFont = (HFONT) SelectObject (hDC, hFont) ;
GetTextMetrics (hDC, &tm) ;
DeleteObject (SelectObject (hDC, hFont)) ;
lf.lfWidth = (int) (tm.tmAveCharWidth * fabs((FLOAT)pt.x) / fabs((FLOAT)pt.y) + 0.5) ;
hFont = CreateFontIndirect (&lf) ;
}
RestoreDC (hDC, -1) ;
return hFont ;
gruss by OHR
Jimmy
Jimmy
- Martin Altmann
- Foren-Administrator
- Beiträge: 16502
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Jimmy,
bei den Varianten an Einstellungsmöglichkeiten (und Änderungen im Verhältnis zu 96 dpi) ist (nach meiner Erfahrung) der Unterschied zwischen horizontalem und vertikalem Verhältnis vernachlässigbar! Beide Angaben mit dem selben Faktor multipliziert passt - schließlich sehe ich das ja an meiner eigenen Anwendung - und den Text nahtlos untereinander setzen tut ja eh keiner, zwischen den einzelnen Zeilen ist immer ein wenig Abstand (wie ja auch hier bei dem Text).
Viele Grüße,
Martin
bei den Varianten an Einstellungsmöglichkeiten (und Änderungen im Verhältnis zu 96 dpi) ist (nach meiner Erfahrung) der Unterschied zwischen horizontalem und vertikalem Verhältnis vernachlässigbar! Beide Angaben mit dem selben Faktor multipliziert passt - schließlich sehe ich das ja an meiner eigenen Anwendung - und den Text nahtlos untereinander setzen tut ja eh keiner, zwischen den einzelnen Zeilen ist immer ein wenig Abstand (wie ja auch hier bei dem Text).
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Leute, insbesondere Martin,
Danke fürs Beispiel, leuchtet ein und funktioniert !!!
Ein Schönheitsfehler ist aber noch dabei :
drawingArea := oSuch:drawingArea // Anzeigebereich vom Dialog holen
drawingArea:setFontCompoundName( "8.Helv" )
oStatic := XbpStatic():new( drawingArea,,{5,5}, aStatic )
Der Rahmen bzw. das Feld innerhalb des Rahmens positioniert sich ja nachwievor an der Gesamtfenstergröße, die ja mit drawingArea := oSuch:drawingArea bestimmt wird.
Wie kann ich das umgehen ?
MfG Karl-Heinz Kahl
Danke fürs Beispiel, leuchtet ein und funktioniert !!!
Ein Schönheitsfehler ist aber noch dabei :
drawingArea := oSuch:drawingArea // Anzeigebereich vom Dialog holen
drawingArea:setFontCompoundName( "8.Helv" )
oStatic := XbpStatic():new( drawingArea,,{5,5}, aStatic )
Der Rahmen bzw. das Feld innerhalb des Rahmens positioniert sich ja nachwievor an der Gesamtfenstergröße, die ja mit drawingArea := oSuch:drawingArea bestimmt wird.
Wie kann ich das umgehen ?
MfG Karl-Heinz Kahl
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
hi,
Frage : was ist dein jetzige Application Grösse und welche Bildschirm Auflösung hast du eingestellt ?
wenn du z.b. 1024x768 für beides verwendest und die Masken "bis zum Rand" gefüllt sind, welche nun unter Win7 durch "Borderpadding" nicht mehr "passt", dann musst du schon deine XbParts "verkleinern".
wenn nun deine Bildschirm Auflösung > Application ist kannst du das "Innen Mass", also o:DrawingArea:CurrentSize() unter XP, als "Innen Mass" unter Win7 nehmen.
damit hättest du dann unter Win7 1024+"Borderpadding" x 768+"Borderpadding".
Frage : was ist dein jetzige Application Grösse und welche Bildschirm Auflösung hast du eingestellt ?
wenn du z.b. 1024x768 für beides verwendest und die Masken "bis zum Rand" gefüllt sind, welche nun unter Win7 durch "Borderpadding" nicht mehr "passt", dann musst du schon deine XbParts "verkleinern".
wenn nun deine Bildschirm Auflösung > Application ist kannst du das "Innen Mass", also o:DrawingArea:CurrentSize() unter XP, als "Innen Mass" unter Win7 nehmen.
damit hättest du dann unter Win7 1024+"Borderpadding" x 768+"Borderpadding".
gruss by OHR
Jimmy
Jimmy
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Leute,
mein Einwand vom 19.11.2011 (mit der Positionierung) war zwar falsch, da als drawingarea ja ::clientSize verwendet wird und somit keine Beeinträchtigung der Positionierung eintritt. Es funktioniert ja jetzt auch schon weitestgehend, aber ein Problem habe ich trotzdem noch :
Ich verwende überwiegend zur Fenstererzeugung die Superklasse DataDialog, die in den XBase++ Beispielen beschrieben ist. Mir gefällt dabei die Datensatzbehandlung so gut, da kaum noch Ergänzugsschritte notwendig waren. Ich habe zwar noch geringfügige Ergänzungen vorgenommen, die aber bestimmt nicht Problemrelevant sind.
Das Problem besteht darin, das in der DataDialog-Klasse die Max- bzw.Min-Buttons in der Taskleiste nicht deaktiviert werden können. Das hat mich bislang nicht sonderlich gestört, da nach Wiederherstellung das Fenster die gleiche Form wie vorher hatte. Da ich für die Verwendung von ::clientSize := aSize die Werte von aSize verkleinern mußte, werden jetzt aber nach Betätigung des Min- bzw. Max-Buttons bei der Wiederherstellung die Fenster mit abgeschnittenem Inhalt angezeigt, d.h. bei der Wiederherstellung wird mein aSize für die Gesamtfenstergröße verwendet. Wer weiß Rat ?
Wichtig wäre mir, zu wissen, ob ich
a. auch bei Verwendung der DataDialog-Superklasse eine Eleminierung der Max- bzw.Min-Buttons erreichen kann (Ich brauche diese Funktionen nicht, da ich nur mit festen Fenstergrößen arbeite) und
b. wenn ich die Buttons nicht elemenieren kann, eine ::clientSize-Fenstergröße wiederherstellen kann ?
In der XBase++ - Hilfe habe ich folgenden Hinweis gefunden :
Bei einem MDI Client Fenster wird der Pushbutton zum Maximieren des Fensters immer angezeigt, es sei denn, :titleBar ist auf .F. (falsch) gesetzt.
Hängt das mit dem o.g. Problem zusammen ?
MfG. Karl-Heinz Kahl aus Trittau
mein Einwand vom 19.11.2011 (mit der Positionierung) war zwar falsch, da als drawingarea ja ::clientSize verwendet wird und somit keine Beeinträchtigung der Positionierung eintritt. Es funktioniert ja jetzt auch schon weitestgehend, aber ein Problem habe ich trotzdem noch :
Ich verwende überwiegend zur Fenstererzeugung die Superklasse DataDialog, die in den XBase++ Beispielen beschrieben ist. Mir gefällt dabei die Datensatzbehandlung so gut, da kaum noch Ergänzugsschritte notwendig waren. Ich habe zwar noch geringfügige Ergänzungen vorgenommen, die aber bestimmt nicht Problemrelevant sind.
Das Problem besteht darin, das in der DataDialog-Klasse die Max- bzw.Min-Buttons in der Taskleiste nicht deaktiviert werden können. Das hat mich bislang nicht sonderlich gestört, da nach Wiederherstellung das Fenster die gleiche Form wie vorher hatte. Da ich für die Verwendung von ::clientSize := aSize die Werte von aSize verkleinern mußte, werden jetzt aber nach Betätigung des Min- bzw. Max-Buttons bei der Wiederherstellung die Fenster mit abgeschnittenem Inhalt angezeigt, d.h. bei der Wiederherstellung wird mein aSize für die Gesamtfenstergröße verwendet. Wer weiß Rat ?
Wichtig wäre mir, zu wissen, ob ich
a. auch bei Verwendung der DataDialog-Superklasse eine Eleminierung der Max- bzw.Min-Buttons erreichen kann (Ich brauche diese Funktionen nicht, da ich nur mit festen Fenstergrößen arbeite) und
b. wenn ich die Buttons nicht elemenieren kann, eine ::clientSize-Fenstergröße wiederherstellen kann ?
In der XBase++ - Hilfe habe ich folgenden Hinweis gefunden :
Bei einem MDI Client Fenster wird der Pushbutton zum Maximieren des Fensters immer angezeigt, es sei denn, :titleBar ist auf .F. (falsch) gesetzt.
Hängt das mit dem o.g. Problem zusammen ?
MfG. Karl-Heinz Kahl aus Trittau
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
-
- Rekursionen-Architekt
- Beiträge: 237
- Registriert: Do, 14. Aug 2008 14:59
- Wohnort: Straelen
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 3 Mal
Re: Fenstergröße unter Windows 7
Hallo Karl-Heinz,
schau dir doch mal folgenden Link an http://www.xbaseforum.de/viewtopic.php? ... 096#p35653
Mit Hilfe dieses Beitrages habe ich die manchmal lästigen Min-Max-Buttons entfernen können.
schau dir doch mal folgenden Link an http://www.xbaseforum.de/viewtopic.php? ... 096#p35653
Mit Hilfe dieses Beitrages habe ich die manchmal lästigen Min-Max-Buttons entfernen können.
Viele Grüße
Dieter
Was man nicht versteht, besitzt man nicht.
Dieter
Was man nicht versteht, besitzt man nicht.
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Leute, insbesondere Dieter und Jimmy,
wohwwww.... seit Ihr gut. Schon lange habe ich mich mit der Unterdrückung der Min- und Max-Buttons beschäftigt, aber nie eine zufriedenstellende Lösung gefunden, aber durch Eure Hilfe ging das ganz einfach. Danke vielmals !!!
Jetzt habe ich nur noch ein ganz kleines Problem, bei dem Ihr mir vielleicht auch noch helfen könnt. Bei manchen Fenstern meiner LOKLISTE macht es Sinn, die Fenster verkleinern zu können, um darunter liegende Inhalte zu lesen. Stelle ich die alte Fenstergröße wieder her, erscheint bei der Superklasse DataDialog ein Fenster mit abgeschnittenem Inhalt. Das liegt m.E. daran, das bei der Wiederherstellung das Größenarray aSize für das ganze Fenster incl. Rahmen benutzt wird, bei der Erzeugung aber nur für oClient:clientSize. Bei Verwendung der XbpDialog-Klasse tritt der Fehler nicht auf !!!
Wer weiß Rat ?
Mfg Karl-Heinz Kahl aus Trittau
wohwwww.... seit Ihr gut. Schon lange habe ich mich mit der Unterdrückung der Min- und Max-Buttons beschäftigt, aber nie eine zufriedenstellende Lösung gefunden, aber durch Eure Hilfe ging das ganz einfach. Danke vielmals !!!
Jetzt habe ich nur noch ein ganz kleines Problem, bei dem Ihr mir vielleicht auch noch helfen könnt. Bei manchen Fenstern meiner LOKLISTE macht es Sinn, die Fenster verkleinern zu können, um darunter liegende Inhalte zu lesen. Stelle ich die alte Fenstergröße wieder her, erscheint bei der Superklasse DataDialog ein Fenster mit abgeschnittenem Inhalt. Das liegt m.E. daran, das bei der Wiederherstellung das Größenarray aSize für das ganze Fenster incl. Rahmen benutzt wird, bei der Erzeugung aber nur für oClient:clientSize. Bei Verwendung der XbpDialog-Klasse tritt der Fehler nicht auf !!!
Wer weiß Rat ?
Mfg Karl-Heinz Kahl aus Trittau
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
willst du "nur" lesen ?KHKDampflok hat geschrieben:Bei manchen Fenstern meiner LOKLISTE macht es Sinn, die Fenster verkleinern zu können, um darunter liegende Inhalte zu lesen.
...
Wer weiß Rat ?
dann mach doch das Fenster "transparent" dann kannst du das darunterliegende "lesen"
... ansonsten mal deine Code von o:resize zeigen.
gruss by OHR
Jimmy
Jimmy
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Jimmy,
ich verwende keinen o:resize Code. Ich meine die Ereignisse, die durch Min-Button, bzw. Wiederherstellungs-Button ausgelöst werden.
Kanst Du trotzdem helfen ?
Gruß Karl-Heinz aus Trittau
ich verwende keinen o:resize Code. Ich meine die Ereignisse, die durch Min-Button, bzw. Wiederherstellungs-Button ausgelöst werden.
Kanst Du trotzdem helfen ?
Gruß Karl-Heinz aus Trittau
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Leute, meine gestrige Euphorie ist totaler Ernüchterung gewichen.
Meine Entwicklungsebene ist noch auf dem Windows XP-Rechner installiert und dort funktionierte alles, wie berichtet. Ich habe dann heute das Ergebnis auf den Windows 7-Rechner installiert, und siehe da, es
wurde nichts übernommen. nicht einmal o:clientSize !!!!
Ich wiederhole mich : Scheiß Windows
Gruß Karl-Heinz
Meine Entwicklungsebene ist noch auf dem Windows XP-Rechner installiert und dort funktionierte alles, wie berichtet. Ich habe dann heute das Ergebnis auf den Windows 7-Rechner installiert, und siehe da, es
wurde nichts übernommen. nicht einmal o:clientSize !!!!
Ich wiederhole mich : Scheiß Windows
Gruß Karl-Heinz
Zuletzt geändert von KHKDampflok am Do, 24. Nov 2011 12:39, insgesamt 2-mal geändert.
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: Fenstergröße unter Windows 7
wer kennt sich aus mit dem DataDialog MDI Demo von Alaska ...KHKDampflok hat geschrieben:... Stelle ich die alte Fenstergröße wieder her, erscheint bei der Superklasse DataDialog ein Fenster mit abgeschnittenem Inhalt.
Wer weiß Rat ?
es gibt doch eine "Fenster Verwaltung"
Code: Alles auswählen
/*
* Men zur Verwaltung offener Fenster erzeugen
*/
FUNCTION WinMenu()
Code: Alles auswählen
CLASS METHOD WindowMenu:cascadeWindows
...
FOR i:=1 TO ::winCount
aDlgSize := ::windowStack[i]:currentSize()
nun muss das "Fenster" ja irgendwann in die "Verwaltung" aufgenommen worden sein.
suche mal in deinem Code nach
Code: Alles auswählen
WinMenu():addItem
wenn Grössen Änderungen "danach" kommen wird die dem Array nicht "bekannt" sein und ich "denke" das dass dein Problem ist.
du hast das EXE vom XP PC genommen und auf dem Win7 PC gestartet ? mit / ohne XP Manifest ?KHKDampflok hat geschrieben:Meine Entwicklungsebene ist noch auf dem Windows XP-Rechner installiert und dort funktionierte alles, wie berichtet. Ich habe dann heute das Ergebnis auf den Windows 7-Rechner instlliert, und siehe da, es wurde nichts übernommen ...
gruss by OHR
Jimmy
Jimmy
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Jimmy,
ersteinmal Danke für die prompte Antwort. Den ersten Tipp habe ich noch nicht geprüft, kann daher auch noch nichts dazu sagen.
Zum zweiten Thema :
Ich habe alle PRG-Files auf den Windows 7-Rechner kopiert und das Programm dort dann komplett neu compiliert, mit dem Ergebnis, das zwar alle Änderungen im Quellcode enthalten, aber in der Ausführung unwirksam sind !!!
MfG Karl-Heinz
ersteinmal Danke für die prompte Antwort. Den ersten Tipp habe ich noch nicht geprüft, kann daher auch noch nichts dazu sagen.
Zum zweiten Thema :
Ich habe alle PRG-Files auf den Windows 7-Rechner kopiert und das Programm dort dann komplett neu compiliert, mit dem Ergebnis, das zwar alle Änderungen im Quellcode enthalten, aber in der Ausführung unwirksam sind !!!
MfG Karl-Heinz
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!
-
- UDF-Programmierer
- Beiträge: 68
- Registriert: Do, 14. Dez 2006 20:55
- Wohnort: 22946 Trittau
- Kontaktdaten:
Re: Fenstergröße unter Windows 7
Hallo Jimmy,
Deinen ersten Tipp :
CLASS METHOD WindowMenu:cascadeWindows
...
FOR i:=1 TO ::winCount
aDlgSize := ::windowStack:currentSize()
habe ich mit einem Debug-Stopp()-Befehl überprüft. Anscheinend gelangt das Programm nicht in diese Routine.
Weiß sonst noch jemand Rat ?
MfG Karl-Heinz
Deinen ersten Tipp :
CLASS METHOD WindowMenu:cascadeWindows
...
FOR i:=1 TO ::winCount
aDlgSize := ::windowStack:currentSize()
habe ich mit einem Debug-Stopp()-Befehl überprüft. Anscheinend gelangt das Programm nicht in diese Routine.
Weiß sonst noch jemand Rat ?
MfG Karl-Heinz
Mit xbase habe ich ein Triebfahrzeugsarchiv "LOKLISTE" erstellt. Dieses Archiv enthält Daten aller Eisenbahntriebfahrzeuge vom "ADLER" bis zum ICE. Genaueres erfährt man unter www.lokliste.de, wo man auch eine kostenlose DEMO-Version herrunterladen kann !!!