Announcement

Collapse
No announcement yet.

Tabcontrol captions in bold

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Jules Marchildon
    replied
    Steven;

    You are very welcome!

    Regards,
    Jules

    Leave a comment:


  • Steven Pringels 3
    replied
    You're the man Jules !! Thanks a lot !!





    ------------------

    Leave a comment:


  • Jules Marchildon
    replied
    Steven;

    Something from SGT Peppers Lonely Hearts Club Band...

    HTH
    Regards,
    Jules

    Code:
    '-----------------------------------------------------------------------------
    ' Bold selected Tab
    ' Code based from Peter Lameijn, disabled tab example from this forum.
    '
    '-----------------------------------------------------------------------------
    #Compile Exe
    #Include "win32api.inc"
    #Include "commctrl.inc"
     
    %MAXTABS = 8
    %IDC_TAB = 101
    %IDC_LBL = 102
     
    Global hDlg As Long, lTCI As TC_ITEM, lZStr As Asciiz * 64, hTab() As Long, lRect As RECT, TabId() As String
     
    '----------------------------------------------------------------------------
    '
    '
    '----------------------------------------------------------------------------
    CallBack Function CbMain ()
     
      Local lPnmh As NMHDR Ptr, lRet As Long, lDBU As Long, lTCI As TC_ITEM, lDISPtr As DRAWITEMSTRUCT Ptr
      Static PrevSel As Long
      Local hFont As Long
       
      Select Case CbMsg
     
        Case %WM_DRAWITEM
     
          lDisPtr = CbLparam
          lZStr = TabID$( @lDisPtr.ItemId+1 )
     
          Call TabCtrl_GetItemRect( hTab(0), @lDisPtr.ItemId, lRect )
        
          IF @lDisPtr.ItemState = %ODS_SELECTED THEN
                LOCAL rc AS RECT : rc = lRect : rc.nBottom = rc.nBottom + 4
                Call FillRect( @lDisPtr.hDC,rc,GetStockObject(%LTGRAY_BRUSH) )
                '*Use a bold font if selected
                hFont = CreateFont(-8,0,0,0,%FW_BOLD,0,0,0,0,0,0,0,0,"MS Sans Serif")
          ELSE
                '*Or a normal one if not selected
                hFont = CreateFont(-8,0,0,0,%FW_NORMAL,0,0,0,0,0,0,0,0,"MS Sans Serif")
          END IF
           
           hFont = SelectObject(@lDisPtr.hDC,hFont)
           Call SetTextColor( @lDisPtr.hDc, Rgb(@lDisPtr.ItemId*35,0,[email protected]*35) )
           Call TextOut( @lDisptr.hDc, lRect.nLeft + 5, lRect.nTop + 3, lZStr, Len (lZStr) )
           Call DeleteObject(SelectObject(@lDisPtr.hDC,hFont))
            
        Case %WM_NOTIFY
          lPnMh = CbLparam
          Select Case @lPnMh.Code
            Case %TCN_SELCHANGE
              lRet = TabCtrl_GetCursel (hTab(0))
                Call ShowWindow( hTab(PrevSel+1), %SW_HIDE )
                Call ShowWindow( hTab(lRet+1), %SW_SHOW )
                PrevSel = lRet
          End Select
      End Select
    End Function
     
    '-----------------------------------------------------------------------------
    '
    '
    '-----------------------------------------------------------------------------
    Function PbMain() As Long
     
      Dim hTab(10), TabID(10), lCnt As Long
     
      Call InitCommonControls()
     
      Dialog New 0, "Test Tab",,,300,200, %WS_VISIBLE Or %WS_SYSMENU To hDlg
      Control Add "SysTabControl32",  hDlg, %IDC_TAB, "",5,5,290,160,%WS_CHILD Or %WS_VISIBLE Or _
                                            %TCS_MULTILINE Or %TCS_RIGHTJUSTIFY Or %TCS_OWNERDRAWFIXED OR %TCS_TABS
                                             
      Control Handle hDlg, %IDC_TAB To hTab(0)
     
      For lCnt = 1 To %MAXTABS
        TabID$(lCnt) = "Tab #" + Trim$(Str$(lCnt))
        Dialog New hTab(0), TabID$(lCnt),10,10,280,160, %WS_VISIBLE Or %WS_CHILD To hTab(lCnt)
        Control Add Label, hTab(lCnt), -1, "This is "+TabId$(lCnt),5,5,100,15
        lZStr        = TabID$(lCnt)
        lTCI.mask    = %TCIF_TEXT
        lTCI.pszText = VarPtr (lzStr)
        Call TabCtrl_InsertItem( hTab(0), lCnt -1, lTCI )
        Call GetClientRect( hTab(0), lRect )
        Call InflateRect( lRect, -10 , -56 )
        Call OffsetRect(  lRect, -4 , -5 )
        Call MoveWindow( hTab(lCnt),lRect.nLeft,lRect.nTop,lRect.nRight,lRect.nBottom, %True )
      Next
     
      Call ShowWindow( hTab(1), %SW_SHOW )
      Dialog Show Modal hDlg, Call CbMain
     
    End Function

    Leave a comment:


  • Lance Edmonds
    replied
    That is not a standard behavior for a tab-control, so you'll probably have to use an ownerdraw tab-control - a fair amount of work just to draw one tab in bold.

    On an aside, Jules Marchildon once created a vertical tab control using an ownerdraw listbox (very creative!). This may be in the source code forum. IIRC, it was somewhere around March 2000.

    ------------------
    Lance
    PowerBASIC Support
    mailto:[email protected][email protected]</A>

    Leave a comment:


  • Steven Pringels 3
    started a topic Tabcontrol captions in bold

    Tabcontrol captions in bold

    hi,

    How can I make the selected Tab's caption to be bold where all
    the other remain normal. I looked in the MSDN but I can't find
    any style that would do this. Does anyone see the light ?

    Thanks

    Steve.

    ------------------
Working...
X