Weiß jemand, wie man die Höhe der Reiter in XbpTabpage auslesen kann? Mit :tabHeight komme ich da nicht wirklich weiter. Das gibt -1 zurück, was lt. Onlinehilfe das 1,5fache der Titelzeile ausmachen soll. Aber stimmt das denn immer? Was ist mit Tabpages mit mehrzeiligen Captions, oder Icons dadrin? Dann verändert sich doch auch die Höhe?
Jan
Höhe Tabs in XbpTabpage
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Höhe Tabs in XbpTabpage
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.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Höhe Tabs in XbpTabpage
PDR 4294, public.xbase++.bugreport, 20. April 2001Jan hat geschrieben:Weiß jemand, wie man die Höhe der Reiter in XbpTabpage auslesen kann? Mit :tabHeight komme ich da nicht wirklich weiter. Das gibt -1 zurück, was lt. Onlinehilfe das 1,5fache der Titelzeile ausmachen soll. Aber stimmt das denn immer? Was ist mit Tabpages mit mehrzeiligen Captions, oder Icons dadrin? Dann verändert sich doch auch die Höhe?
> +-------+
> | Tab height = -1
> +--------
> |
> | actual page height ????
> |
> |
> +---------
oTab:ClientSize()
which gives the size of the client area of the tabpage - without tab. This was
introduced in 1.6.
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Höhe Tabs in XbpTabpage
Hallo Jimmy,
ja, das passt. Muchas Danke!
Hattest Du hier im Forum nicht mal irgendwo eine Aufstellung gemacht, was für Maße man so alles rausbekommen kann? Borderbreite, Titelleistenhöhe, etc.?
Jan
ja, das passt. Muchas Danke!
Hattest Du hier im Forum nicht mal irgendwo eine Aufstellung gemacht, was für Maße man so alles rausbekommen kann? Borderbreite, Titelleistenhöhe, etc.?
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.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Höhe Tabs in XbpTabpage
hi,
ein Sample gemacht.
Titleleisten Höhe und Schrift Type des :Title war in Zusammenhang mit "Button in der Titlebar".
Leider stimmt das ganze bei VISTA nicht mehr ... die 3 Buttons sind ja nicht mehr "quadratisch" ...
wenn du was darüber findest beim googlen, sag Bescheid ... ich habe mich darum noch nicht
gekümmert ...
Border war wegen den verschiedenen Xbpstatic und der Grösse der :DrawingArea. Ich hatte dazuJan hat geschrieben: Hattest Du hier im Forum nicht mal irgendwo eine Aufstellung gemacht, was für Maße man so alles rausbekommen kann? Borderbreite, Titelleistenhöhe, etc.?
ein Sample gemacht.
Titleleisten Höhe und Schrift Type des :Title war in Zusammenhang mit "Button in der Titlebar".
Leider stimmt das ganze bei VISTA nicht mehr ... die 3 Buttons sind ja nicht mehr "quadratisch" ...
wenn du was darüber findest beim googlen, sag Bescheid ... ich habe mich darum noch nicht
gekümmert ...
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Höhe Tabs in XbpTabpage
hi,
hab mal gerade "geguckt" und festgestellt das ich 2 Lösungen hatte und keine Lust die auszu-
probieren. Die eine geht über die API
aber ich glaube dann fehlte da der "Border" (-3) und deshalb hab ich dann
gemacht und das mit
gemacht. Nun muss ich "nur" noch die bei mir verwendete Konstante BORDER_SIZE "austauschen"
und es testen ob es nun stimmt ...
hab mal gerade "geguckt" und festgestellt das ich 2 Lösungen hatte und keine Lust die auszu-
probieren. Die eine geht über die API
Code: Alles auswählen
#define SM_CYCAPTION 4
::nYTitlebarheight := GetSystemMetrics(SM_CYCAPTION) - 3
FUNCTION GetSystemMetrics(nIndex)
STATIC GetSystemMetrics
IF GetSystemMetrics = NIL
GetSystemMetrics := DllPrepareCall("user32.dll",;
DLL_STDCALL,"GetSystemMetrics")
ENDIF
RETURN DllExecuteCall(GetSystemMetrics,nIndex)
Code: Alles auswählen
FUNCTION GetTitleBarHeight(oDlg)
LOCAL nBorder := GetBorderWide(oDlg)
LOCAL oRet
IF IsThemeActive(.T.)
oRet := (o:currentSize() [2] - o:drawingArea:currentSize() [2] - (2 * nBorder) - 1 - 2)
ELSE
oRet := (o:currentSize() [2] - o:drawingArea:currentSize() [2] - (2 * nBorder) - 1)
ENDIF
RETURN (oRet)
Code: Alles auswählen
#define SPI_GETBORDER 5
FUNCTION GetBorderWide(oDlg)
LOCAL nWide := 0
IF oDlg:border > XBPDLG_NO_BORDER
IF DllCall("User32.dll",;
DLL_STDCALL,;
"SystemParametersInfoA",;
SPI_GETBORDER,;
0,;
@nWide,;
0) # 0
//
// eine Rahmenline hat eine "Licht-" und eine "Schatten"-Seite
// von jeweils 1 Pixel breite.
//
// Wenn nWide also 1 zurück gibt dann muss man noch +1 +1 dazu
// rechnen ... und das links/rechts und evtl. unten und oben.
//
// bei "oben" kommt zusätzlich noch die unter Titlebar Line mit
// 2(?) Pixeln dazu
//
DO CASE
// Kein Rahmen
CASE oDlg:border == XBPDLG_NO_BORDER
// Fenstergr÷▀e ist verõnderbar
CASE oDlg:border == XBPDLG_SIZEBORDER
// *) D³nner Rahmen, Fenstergr÷▀e
CASE oDlg:border == XBPDLG_THINBORDER
//
// kann nicht verõndert werden
//
// Dicker Rahmen, Fenstergr÷▀e
CASE oDlg:border == XBPDLG_DLGBORDER
//
// kann nicht verõndert werden
//
//**) Dicker, hervorgehobener Rahmen (default)
CASE oDlg:border == XBPDLG_RAISEDBORDERTHICK
// *) D³nner, hervorgehobener Rahmen
CASE oDlg:border == XBPDLG_RAISEDBORDERTHIN
// Dicker, eingedr³ckter Rahmen
CASE oDlg:border == XBPDLG_RECESSEDBORDERTHICK
// *) D³nner, eingedr³ckter Rahmen
CASE oDlg:border == XBPDLG_RECESSEDBORDERTHIN
// Dicker, hervorgehobener Rahmen
CASE oDlg:border == XBPDLG_RAISEDBORDERTHICK_FIXED
//
// Gr÷▀e kann nicht verõndert werden
//
// *) D³nner, hervorgehobener Rahmen
CASE oDlg:border == XBPDLG_RAISEDBORDERTHIN_FIXED
//
// Gr÷▀e kann nicht verõndert werden
//
// Dicker, eingedr³ckter Rahmen
CASE oDlg:border == XBPDLG_RECESSEDBORDERTHICK_FIXED
//
// Gr÷▀e kann nicht verõndert werden
//
// *) D³nner, eingedr³ckter Rahmen
CASE oDlg:border == XBPDLG_RECESSEDBORDERTHIN_FIXED
//
// Gr÷▀e kann nicht verõndert werden
ENDCASE
ENDIF
ENDIF
RETURN nWide
und es testen ob es nun stimmt ...
gruss by OHR
Jimmy
Jimmy