habe ich einen Scrollbar im XbpDialog ?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

habe ich einen Scrollbar im XbpDialog ?

Beitrag von AUGE_OHR »

hi,

auf der :drawingArea habe ich das activeX MsComCtl ListView.
wenn ich nun das Listview "auffülle" erscheint evtl. ein vertikaler Scrollbar.

nun hat das Listview wohl "selbst" keinen Scrollbar sondern es ist der vom XbpDialog mit dem man das Listview "scrollt"

wenn ich nun ein :resize durchführe möchte ich "wissen" ob ich einen vertikalen Scrollbar habe und wie "breit" der ist unter Windows 7.

auch in der Höhe und Breite des XbpDialog "fehlt" ja jeweils "etwas" ... Border Padding ( Rahmenfüllung) wie bekomme ich die raus ?

Code: Alles auswählen

METHOD SplitDialog:MyReSize()
LOCAL aPosSP              := ::oSplitbar:CurrentPos()
LOCAL aSize
LOCAL aSizeDA             := ::DrawingArea:CurrentSize()
LOCAL nNewValue
LOCAL nHeightTitlebar     := xbpGetSystemMetrics( SM_CYCAPTION )
LOCAL nHeightMenubar     := xbpGetSystemMetrics( SM_CYMENU )
LOCAL nWidthBorder        := xbpGetSystemMetrics( SM_CXDLGFRAME )
LOCAL nHeightBorder       := xbpGetSystemMetrics( SM_CYDLGFRAME )
//
// wie "berechnet" man die :wide der Scrollbar ?
//
LOCAL nScrollWide           := 0 
   //
   // Resize :drawingArea, XbpSplitbar and XbpTreeview
   //
   aSize := ::CurrentSize()

   // Compute space occupied by dialog's titlebar, border
   // and menubar
   aSizeDA[2] := aSize[2] - (nHeightTitlebar +;
                             nHeightMenubar  +;
                             nHeightBorder*2 +2) ;
                          - XP_Vista()[2]

   nNewValue  := aSize[1] - ( aPosSP[1] +SP_WIDTH + nWidthBorder*2 +2 );
                          - XP_Vista()[1]

   ::DrawingArea:SetSize( { nNewValue, aSizeDA[2] } )
   ::DrawingArea:SetPos( { ::oSplitBar:CurrentPos()[1] + SP_WIDTH, 0 } )
   ::oSplitbar:SetSize( { SP_WIDTH, aSizeDA[2] } )

   ::dirTree:SetSize( { aPosSP[1], aSizeDA[2] } )

//   if ::hScroll
//       hm ... wie bekomme ich raus "ob" ein vertikaler Scrollbar sichtbar ist ?
//       nScrollWide  := 6
//   ENDIF

   ::oFiles:SetSize( { aSizeDA[1]-aPosSP[1]-SP_WIDTH-nScrollWide, aSizeDA[2] } )

RETURN SELF

FUNCTION XP_Vista()
LOCAL nVersion := OnOSVersion()
LOCAL nHigh := 0
LOCAL nWide := 0

   DO CASE
      CASE nVersion = 5
      CASE nVersion = 6
         nHigh := 6
         nWide := 6
   ENDCASE

RETURN {nHigh,nWide}
gruss by OHR
Jimmy
Antworten