HToggleButton increase width of focus rectangle

Hi, can anyone tell me how to increase the width of focus rectangle when any component like HToggleButton is focused

Hi, can anyone tell me how to increase the width of focus rectangle when any component like HToggleButton is focused

Similar Messages

  • How to increase width but maintain x, y coords.

    I'm trying to increase the width of a rectangle, but don't
    want to scale the rectangle or change the x,y base. How show I go
    about this.

    "SiHoop" <[email protected]> wrote in
    message
    news:gl5jq2$imk$[email protected]..
    > I'm trying to increase the width of a rectangle, but
    don't want to scale
    > the
    > rectangle or change the x,y base. How show I go about
    this.
    >
    > <?xml version="1.0" encoding="utf-8"?>
    > <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml"
    > creationComplete="init()"
    > layout="absolute">
    > <mx:UIComponent id="mainDisplay"/>
    > <mx:Script>
    > <![CDATA[
    > private var goalBox:Shape = new Shape();
    > public function init():void{
    > goalBox.graphics.lineStyle(1, 0xff0000);
    > goalBox.graphics.beginFill(0xff0000);
    > goalBox.graphics.drawRect(115, 90, 200, 1);
    > mainDisplay.addChild(goalBox)
    > }
    > public function clicked():void{
    > goalBox.width+=300
    > }
    > ]]>
    > </mx:Script>
    > <mx:Button click="clicked()"/>
    > </mx:Application>
    You'd call graphics.clear() and then draw it again at the new
    size, but the
    same x and y coordinates.

  • Custom focus rectangle in JTextField

    I'm trying to change my theme/look & feel to show a focus rectangle for JTextField, somewhat like this: [http://www.macvswindows.com/index.php?title=GUI_Customization|http://www.macvswindows.com/index.php?title=GUI_Customization] (second image down, or direct [http://www.macvswindows.com/images/thumb/f/f2/osx_aqua_colors.png/500px-osx_aqua_colors.png|http://www.macvswindows.com/images/thumb/f/f2/osx_aqua_colors.png/500px-osx_aqua_colors.png] ) I don't want to make it exactly like MacOS, but a similar idea.
    For now I'm just trying to do it on the inner part of the field. I can get it to paint with the code below, but then the caret painting messes things up as I tab through the fields or move the caret around inside the fields.
    So it seems I'm headed down the wrong path, what should I be doing? Extending DefaultHighlighter or DefaultCaret, or something else?
    Thanks,
    Jim
    package testui;
    import javax.swing.*;
    import javax.swing.plaf.metal.DefaultMetalTheme;
    import javax.swing.plaf.metal.MetalLookAndFeel;
    public class ThemeTest extends JFrame {
        public class TestMetalTheme extends DefaultMetalTheme {
            public void addCustomEntriesToTable(UIDefaults table) {
                UIManager.put("TextFieldUI", "customui.CustomTextFieldUI");
            public String getName() {
                return "TestMetalTheme";
        public static void main(String[] args) {
            ThemeTest testFrame = new ThemeTest();
            testFrame.setVisible(true);
        public ThemeTest() {
            try {
                MetalLookAndFeel.setCurrentTheme(new TestMetalTheme());
                UIManager.setLookAndFeel(new MetalLookAndFeel());
            } catch (Exception e) {
                e.printStackTrace();
            setSize(500, 500);
            setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            JPanel panel = new JPanel();
            add(panel);
            panel.add(new JTextField("test"));
            panel.add(new JTextField("test"));
            panel.add(new JTextField("test"));
            panel.add(new JButton("button"));
    package testui;
    import javax.swing.*;
    import javax.swing.plaf.ComponentUI;
    import javax.swing.plaf.metal.MetalTextFieldUI;
    import java.awt.*;
    public class CustomTextFieldUI extends MetalTextFieldUI {
        private Color focusColor = Color.cyan;
        private JComponent component;
        public CustomTextFieldUI(JComponent c) {
            if (c == null) {
                throw new IllegalArgumentException("component must be specified");
            this.component = c;
        public static ComponentUI createUI(JComponent c) {
            return new CustomTextFieldUI(c);
        protected void paintSafely(Graphics g) {
            super.paintSafely(g);
            if (component.hasFocus()) {
                Dimension size = component.getSize();
                Graphics2D g2d = (Graphics2D) g;
                System.out.println(g2d.getClip());
                System.out.println(g2d.getClipBounds());
                g2d.setColor(focusColor);
                g2d.setStroke(new BasicStroke(2f));
                g2d.drawRect(1, 1, size.width - 3, size.height - 3);
    }

    Why not just combine the two approaches?
    import java.awt.*;
    import java.awt.event.FocusEvent;
    import java.awt.event.FocusListener;
    import javax.swing.*;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.Border;
    import javax.swing.plaf.ComponentUI;
    import javax.swing.plaf.metal.MetalTextFieldUI;
    public class CustomTextFieldUI extends MetalTextFieldUI {
         private Color focusColor = Color.cyan;
         private JComponent component;
         private Border normalBorder;
         private Border focusedBorder;
         private FocusListener focusListener;
         public CustomTextFieldUI( JComponent c ) {
              if ( c == null ) {
                   throw new IllegalArgumentException( "component must be specified" );
              this.component = c;
              focusListener =  new FocusListener() {
                   public void focusGained( FocusEvent fe ) {
                        if ( normalBorder == null ) {
                             normalBorder = component.getBorder();
                             focusedBorder = new BevelBorder( BevelBorder.LOWERED ) {
                                  @Override
                                  public Color getHighlightInnerColor() { return focusColor; }
                                  @Override
                                  public Color getHighlightOuterColor() { return focusColor; }
                                  @Override
                                  public Color getShadowInnerColor() { return focusColor; }
                                  @Override
                                  public Color getShadowOuterColor() { return focusColor; }
                        component.setBorder( focusedBorder );
                   public void focusLost( FocusEvent fe ) {
                        component.setBorder( normalBorder );
         public static ComponentUI createUI( JComponent c ) {
              return new CustomTextFieldUI ( c );
         @Override
         protected void installListeners() {
              super.installListeners();
              component.addFocusListener( focusListener );
         @Override
         protected void uninstallListeners() {
              super.uninstallListeners();
              component.removeFocusListener( focusListener );
    }

  • Focus rectangle around jCheckBox

    Hi all,
    I have a JCheckBox with no label text with it. Usually when the JCheckBox has focus, theres a dotted focus rectangle around the label text, so in this case there never is.
    Since theres a few checkboxes in the same panel, it gets very confusing as you can't see what component is in focus. Is there any way about this? I was trying to create my own checkbox with a dotted border when the component gets focus, but theres no dotted border in swing.
    So my question is this:
    1) Is there any way to change the focus rectangle to go about the whole component and not just the text label?
    or
    2) Is there any dotted border in swing that I've missed?
    thanks,
    Justin

    what about having blank spaces as the text (the # of spaces determines the rectangle width)
    something like this
    import java.awt.*;
    import javax.swing.*;
    class Testing extends JFrame
      JCheckBox cbx1 = new JCheckBox("      ");
      JCheckBox cbx2 = new JCheckBox("      ");
      public Testing()
        setLocation(400,300);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel p = new JPanel();
        p.add(cbx1);
        p.add(cbx2);
        getContentPane().add(p);
        pack();
      public static void main(String[] args){new Testing().setVisible(true);}
    }

  • Does not allow to increase width of the filed

    hi all,
    well i have report that is designed by someone else in report 6i, now i want to change the width of one filed , that is i want to increase width but it does not allow me to change it
    how to change it??
    thanks
    abhi.

    There can be two reasons...
    1. Check the outer frame(s) for that field. I mean if that field exists in repeating frame or main frame then increase the frame size first then you can increase the field side.
    2. There is one button in the LAYOUT SECTION at top called FREEZE PANES. If it is pressed mean if you will resize the field size then frame side will be automatically adjust. So, suppose you replay LAYOUT section's size is not allowing you yo increase the frames out of the LAYOUT section. If it is then increase the layout section size and try..
    -Ammad

  • JButton & Win XP Look and Feel focus rectangle bug??

    I searched the bug database but was unable to find any matches...
    I have received a bug report from our users relating to mistakenly thinking a button has focus. In the XP LAF, when a button is a 'default' button, it has a blue rectancle drawn around it (which is correct). When you tab to that button however, there is no additional 'focus' rectangle to indicate that the button has focus. I tested this in native XP components and an additional rectancle IS drawn when the button gets focus (in addition to the blue rectangle). Shouldn't there be some sort of focus indicator in addition to the blue rectangle? I'm using JRE version 1.4.2_02.
    Thanks,
    Andy

    Hello Andy!
    If the behavior of Win XP LAF is different from the native this is definitely a bug. It would be greate if you file a bug here
    http://java.sun.com/webapps/bugreport.
    Thank you.
    Anton

  • How to increase width of canvas in xcelsius?

    How to increase width of canvas in xcelsius?

    Hi
    The simplest way is to go to File > Document Properties> Document and check Custome Size.  You will then be able to set the width and height in pixels.
    Alternatively if you want to widen the canvas as your components already go over the edge you can use the Fit Canvas to Components icon on the toolbar along the top.
    Hope this helps.
    Paul

  • How to increase width of LOV popup

    I would like to increase width of LOV popup in my ui. I found one suggestion to use skin to change the LOV display property and would like to know if there is any other default framework support to increase LOV size declaritively. Appreciate your responses.
    BTW I am using ADF version 11.1.1.6
    thanks.

    Thanks Timo. Yes I would like to increase the size of af:inputListOfValues popup displayed when clicked on the torch icon. But since I have all the LOVs already coded I would like to find a way to increase just the display width as the LOV popup doesn't expand completely and the user has to scroll to view the details displayed in the LOV popup.

  • ComboBox focus rectangle

    I m using Combobox and when I activated accesability by Tab,
    The focus rectangles apears in a grean color, how do I change the
    color of that rectangle.. (I want it to Yellow, like it comes for
    Buttons etc..)
    Regards
    Sidharth

    nobody replied

  • Focus rectangle

    Can someone tell me how to make a focus rectangle visible
    without tabbing. i.e. via code something like that below:
    I know its possible because I've done it before and can't
    remember how I did it.
    Thanks in advance.

    I read through my post and thought it wasn't very clear what
    I was asking. Basically I've created code before that would show a
    focus rectangle if a user clicked in that field with the mouse. Now
    I'm trying to do that again and can't remember how I did it.

  • Get length and width of a rectangle

    I am using sdo_sam.tiiled_bins to breakup rectangles into different sections. I need to divide the rectangle along the x or y axis depending on if is longer or wider. I checked the documentation and I could not find a way to get the length and width of a minimum bounding rectangle. Is there any built in functionality to get the length and width of a rectangle or do i have to create my own? Database is 11gr2.
    Thanks
    Rob

    Rob,
    You can use SDO_GEOM.SDO_MIN_MBR_ORDINATE and SDO_GEOM.SDO_MAX_MBR_ORDINATE to compute the length and width of an mbr.
    References:
    [ SDO_GEOM.SDO_MIN_MBR_ORDINATE | http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_objgeom.htm#i866250 ]
    [ SDO_GEOM.SDO_MAX_MBR_ORDINATE | http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_objgeom.htm#i866249 ]
    Regards,
    Noel

  • JTable Focus Rectangle

    When navigating around my table the focus recatangle is not shown - but the correct cell is selected.
    A single click selects a cell, but I need to double click to see the focus triangle.
    I would like the focus rectangle to appear when the cell is selected.
    Any ideas?

    Actually I was't thinking clearly when you asked about a "focus rectangle (which is why I always recommend a simple demo program that shows your problem). I thought you where asking about the "dotted line focus rectangle" that appears on components like JButton.
    Anyway here is a simple table and not that the "focus rectangle" appears on all cells except the column with boolean values.
    import java.awt.*;
    import java.util.*;
    import javax.swing.*;
    public class TableBasic extends JFrame
         public TableBasic()
              String[] columnNames = {"Date", "String", "Integer", "Boolean"};
              Object[][] data =
                   {new Date(), "A", new Integer(1), Boolean.TRUE },
                   {new Date(), "B", new Integer(2), Boolean.FALSE},
                   {new Date(), "C", new Integer(9), Boolean.TRUE },
                   {new Date(), "D", new Integer(4), Boolean.FALSE}
              JTable table = new JTable(data, columnNames)
                   //  Returning the Class of each column will allow different
                   //  renderers to be used based on Class
                   public Class getColumnClass(int column)
                        return getValueAt(0, column).getClass();
              table.setPreferredScrollableViewportSize(table.getPreferredSize());
              JScrollPane scrollPane = new JScrollPane( table );
              getContentPane().add( scrollPane );
         public static void main(String[] args)
              TableBasic frame = new TableBasic();
              frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
              frame.pack();
              frame.setLocationRelativeTo( null );
              frame.setVisible(true);
    }The default renderer for boolean values uses a JCheckBox to render the value. the check box uses setBorderPainted(false), which is why "focus rectangle" is not painted. Personally, I think this is a bug.
    Anyway, if you want the "focus rectangle" then you would need to create your own Boolean renderer, setBorderPainted(true) and provide a default EmptyBorder for the check box:
    Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);

  • Cropped focus rectangle on Spark VideoPlayer's Play/Pause button

    Can anyone help with an issue I am having with a cropped focus rectangle?
    The video player is cropping the focus rectangle on the bottom and left of the component.  One of my components is audio-only, and that is being cropped at the top too.  Images attached.
    Maybe I could rectify this by setting the focus rectangle direction inwards, instead of outwards?  How would I do that just for this particular component (I definitely wouldn't wan't to change the focus rectangle globally)
    Or is there some other fix perhaps?
    Should I register this as a bug?  If so, where should I do that?

    This looks like a bug. You can file bug reports here: http://bugs.adobe.com/flex/
    -Darrell

  • Increase width of a subscreen

    I  am working on an application.I have one main screen and three subscreens.Overall i am facing difficulty with subscreens.
    My present problems are many.But this forum is intended for below one.
    1) How can i increase width of a subscreen ?.I find three of my subscreen though well visible leave reasonable space
    twoards right which i feel can be utilized in better way.But i dont know how to increase the width .

    There is a bug in the forum software that results in multiple threads being posted. It's annoying, but, hey, at least you don't have to tidy it all up. I've just deleted the duplicates.
    Now, regarding your complaint on the speed of getting an answer. You do understand that this website is run by people just like yourself. Any answer you get is voluntary, by people wishing to help. You can't demand an answer. You can't expect a fast answer. Sometimes you might be lucky, sometimes you just have to wait until the right person comes along. ( And I did notice that on some of the duplicates at least, you did get answers). You found the answer yourself, within an hour - that's how long it might take for an expert to pick up your question.
    Also note that when you mark a question as answered, it's not obligatory to leave a comment.
    But thank-you for posting the answer. Not everyone does that.

  • Adding Icon and increasing width of tabpages to show the close button in a tabcontrol

    I have this code right now,
    Public Class FSMTabControl
    Inherits TabControl
    #Region "Declarations"
    Private _TextColour As Color = Color.FromArgb(255, 255, 255)
    Private _BackTabColour As Color = Color.FromArgb(54, 54, 54)
    Private _BaseColour As Color = Color.FromArgb(35, 35, 35)
    Private _ActiveColour As Color = Color.FromArgb(47, 47, 47)
    Private _BorderColour As Color = Color.FromArgb(30, 30, 30)
    Private _UpLineColour As Color = Color.FromArgb(0, 160, 199)
    Private _HorizLineColour As Color = Color.FromArgb(23, 119, 151)
    Private CenterSF As New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
    #End Region
    #Region "Properties"
    <Category("Colours")> _
    Public Property BorderColour As Color
    Get
    Return _BorderColour
    End Get
    Set(value As Color)
    _BorderColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property UpLineColour As Color
    Get
    Return _UpLineColour
    End Get
    Set(value As Color)
    _UpLineColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property HorizontalLineColour As Color
    Get
    Return _HorizLineColour
    End Get
    Set(value As Color)
    _HorizLineColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property TextColour As Color
    Get
    Return _TextColour
    End Get
    Set(value As Color)
    _TextColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property BackTabColour As Color
    Get
    Return _BackTabColour
    End Get
    Set(value As Color)
    _BackTabColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property BaseColour As Color
    Get
    Return _BaseColour
    End Get
    Set(value As Color)
    _BaseColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property ActiveColour As Color
    Get
    Return _ActiveColour
    End Get
    Set(value As Color)
    _ActiveColour = value
    End Set
    End Property
    Protected Overrides Sub CreateHandle()
    MyBase.CreateHandle()
    Alignment = TabAlignment.Bottom
    End Sub
    #End Region
    #Region "Draw Control"
    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
    ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
    DoubleBuffered = True
    Font = New Font("Segoe UI", 10)
    SizeMode = TabSizeMode.FillToRight
    ItemSize = New Size(240, 32)
    End Sub
    Protected Overrides Sub OnPaint(e As PaintEventArgs)
    Dim g = e.Graphics
    With G
    .SmoothingMode = SmoothingMode.HighQuality
    .PixelOffsetMode = PixelOffsetMode.HighQuality
    .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
    .Clear(_BaseColour)
    Try : SelectedTab.BackColor = _BackTabColour : Catch : End Try
    Try : SelectedTab.BorderStyle = BorderStyle.FixedSingle : Catch : End Try
    .DrawRectangle(New Pen(_BorderColour, 2), New Rectangle(0, 0, Width, Height))
    For i = 0 To TabCount - 1
    Dim Base As New Rectangle(New Point(GetTabRect(i).Location.X, GetTabRect(i).Location.Y), New Size(GetTabRect(i).Width, GetTabRect(i).Height))
    Dim BaseSize As New Rectangle(Base.Location, New Size(Base.Width, Base.Height))
    If i = SelectedIndex Then
    .FillRectangle(New SolidBrush(_BaseColour), BaseSize)
    .FillRectangle(New SolidBrush(_ActiveColour), New Rectangle(Base.X + 1, Base.Y - 3, Base.Width, Base.Height + 5))
    .DrawString(TabPages(i).Text, Font, New SolidBrush(_TextColour), New Rectangle(Base.X + 7, Base.Y, Base.Width - 3, Base.Height), CenterSF)
    .DrawLine(New Pen(_HorizLineColour, 2), New Point(Base.X + 3, CInt(Base.Height / 2 + 2)), New Point(Base.X + 9, CInt(Base.Height / 2 + 2)))
    .DrawLine(New Pen(_UpLineColour, 2), New Point(Base.X + 3, Base.Y - 3), New Point(Base.X + 3, Base.Height + 5))
    Else
    .DrawString(TabPages(i).Text, Font, New SolidBrush(_TextColour), BaseSize, CenterSF)
    End If
    Next
    .InterpolationMode = InterpolationMode.HighQualityBicubic
    End With
    End Sub
    Private Declare Auto Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
    Protected CloseButtonCollection As New Dictionary(Of Button, TabPage)
    Private _ShowCloseButtonOnTabs As Boolean = True
    <Browsable(True), DefaultValue(True), Category("Behavior"), Description("Indicates whether a close button should be shown on each TabPage")> _
    Public Property ShowCloseButtonOnTabs() As Boolean
    Get
    Return _ShowCloseButtonOnTabs
    End Get
    Set(ByVal value As Boolean)
    _ShowCloseButtonOnTabs = value
    For Each btn In CloseButtonCollection.Keys
    btn.Visible = _ShowCloseButtonOnTabs
    Next
    RePositionCloseButtons()
    End Set
    End Property
    Protected Overrides Sub OnCreateControl()
    MyBase.OnCreateControl()
    RePositionCloseButtons()
    End Sub
    Protected Overrides Sub OnControlAdded(ByVal e As System.Windows.Forms.ControlEventArgs)
    MyBase.OnControlAdded(e)
    Dim tp As TabPage = DirectCast(e.Control, TabPage)
    Dim rect As Rectangle = Me.GetTabRect(Me.TabPages.IndexOf(tp))
    Dim btn As Button = AddCloseButton(tp)
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.X + rect.Width - rect.Height + 11, CInt(rect.Y + 7))
    SetParent(btn.Handle, Me.Handle)
    AddHandler btn.Click, AddressOf OnCloseButtonClick
    CloseButtonCollection.Add(btn, tp)
    End Sub
    Protected Overrides Sub OnControlRemoved(ByVal e As System.Windows.Forms.ControlEventArgs)
    Dim btn As Button = CloseButtonOfTabPage(DirectCast(e.Control, TabPage))
    RemoveHandler btn.Click, AddressOf OnCloseButtonClick
    CloseButtonCollection.Remove(btn)
    SetParent(btn.Handle, Nothing)
    btn.Dispose()
    MyBase.OnControlRemoved(e)
    End Sub
    Protected Overrides Sub OnLayout(ByVal levent As System.Windows.Forms.LayoutEventArgs)
    MyBase.OnLayout(levent)
    RePositionCloseButtons()
    End Sub
    Public Event CloseButtonClick As CancelEventHandler
    Protected Overridable Sub OnCloseButtonClick(ByVal sender As Object, ByVal e As EventArgs)
    If Not DesignMode Then
    Dim btn As Button = DirectCast(sender, Button)
    Dim tp As TabPage = CloseButtonCollection(btn)
    Dim ee As New CancelEventArgs
    RaiseEvent CloseButtonClick(sender, ee)
    If Not ee.Cancel Then
    Me.TabPages.Remove(tp)
    RePositionCloseButtons()
    End If
    End If
    End Sub
    Protected Overridable Function AddCloseButton(ByVal tp As TabPage) As Button
    Dim closeButton As New Button
    With closeButton
    '' TODO: Give a good visual appearance to the Close button, maybe by assigning images etc.
    '' Here I have not used images to keep things simple.
    .Text = "X"
    .FlatStyle = FlatStyle.Flat
    .BackColor = _BaseColour
    .ForeColor = Color.White
    .Font = New Font("Microsoft Sans Serif", 6, FontStyle.Bold)
    End With
    Return closeButton
    End Function
    Public Sub RePositionCloseButtons()
    For Each item In CloseButtonCollection
    RePositionCloseButtons(item.Value)
    Next
    End Sub
    Public Sub RePositionCloseButtons(ByVal tp As TabPage)
    Dim btn As Button = CloseButtonOfTabPage(tp)
    If btn IsNot Nothing Then
    Dim tpIndex As Integer = Me.TabPages.IndexOf(tp)
    If tpIndex >= 0 Then
    Dim rect As Rectangle = Me.GetTabRect(tpIndex)
    If Me.SelectedTab Is tp Then
    btn.BackColor = Color.Red
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.X + rect.Width - rect.Height + 11, CInt(rect.Y + 7))
    Else
    btn.BackColor = _BaseColour
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.X + rect.Width - rect.Height + 11, CInt(rect.Y + 7))
    End If
    btn.Visible = ShowCloseButtonOnTabs
    btn.BringToFront()
    End If
    End If
    End Sub
    Protected Function CloseButtonOfTabPage(ByVal tp As TabPage) As Button
    Return (From item In CloseButtonCollection Where item.Value Is tp Select item.Key).FirstOrDefault
    End Function
    #End Region
    End Class
    This code shows a perfect tabcontrol as in the picture below,
    I managed to get this code working by combining three other VB themes I found. Right now, I just want to increase the width of the tab so the close button doesn't hides the text. And I want to add a icon to the left of the tab and be able to change it on
    runtime.
    The icons name will be on, off, 1, 2, plus .ico 
    Is it possible ? and is it possible to make the tabs curved at the corner like in chrome.

    Hi,
     I have went through your TabControl class and changed it around a little bit to get something similar to what i think you want.  I made it so that the Tabs are resized with the TabControl itself so that they always fill the width of the TabControl. 
    I also, made the Text of the tabs have its own rectangle which will automatically adjust it`s width according to weather or not the close buttons are shown so the text will never be under the buttons.
     As for the Icons, you could create another small class that inherits from the TabPage base class and add a public property to it for the Icon image.  You would have to use that class to add TabPages and set the Icon property.  Then in the
    TabControl class`s OnPaint overrides sub you would check if the Icon property of the TabPage is set and draw the image if it is.
     I didn`t go that far but, i used the TabPage`s Tag property for the Icon image.  Actually it is just an Image, not an Icon.  So, in the TabControl`s OnPaint overrides sub i check if the TabPage`s Tag property is set to an Image and if it
    is i adjust the Text rectangle to avoid the Image and draw the image.
     I moved the StringFormat to the OnPaint sub and set it to keep the text left aligned so it stayed next to the Image.  You can change it back to the Center if you want.  I also set the StringFormat trimming to EllipsisCharacter so it will
    cut the text off if it is to long to fit between the Image and the Close button.
     You can test it in a new form project first and to check out how it works and what i changed.
    Imports System.ComponentModel
    Imports System.Drawing.Drawing2D
    Imports System.Drawing.Text
    Public Class FSMTabControl
    Inherits TabControl
    #Region "Declarations"
    Private _TextColour As Color = Color.FromArgb(255, 255, 255)
    Private _BackTabColour As Color = Color.FromArgb(54, 54, 54)
    Private _BaseColour As Color = Color.FromArgb(35, 35, 35)
    Private _ActiveColour As Color = Color.FromArgb(47, 47, 47)
    Private _BorderColour As Color = Color.FromArgb(30, 30, 30)
    Private _UpLineColour As Color = Color.FromArgb(0, 160, 199)
    Private _HorizLineColour As Color = Color.FromArgb(23, 119, 151)
    #End Region
    #Region "Properties"
    <Category("Colours")> _
    Public Property BorderColour() As Color
    Get
    Return _BorderColour
    End Get
    Set(ByVal value As Color)
    _BorderColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property UpLineColour() As Color
    Get
    Return _UpLineColour
    End Get
    Set(ByVal value As Color)
    _UpLineColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property HorizontalLineColour() As Color
    Get
    Return _HorizLineColour
    End Get
    Set(ByVal value As Color)
    _HorizLineColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property TextColour() As Color
    Get
    Return _TextColour
    End Get
    Set(ByVal value As Color)
    _TextColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property BackTabColour() As Color
    Get
    Return _BackTabColour
    End Get
    Set(ByVal value As Color)
    _BackTabColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property BaseColour() As Color
    Get
    Return _BaseColour
    End Get
    Set(ByVal value As Color)
    _BaseColour = value
    End Set
    End Property
    <Category("Colours")> _
    Public Property ActiveColour() As Color
    Get
    Return _ActiveColour
    End Get
    Set(ByVal value As Color)
    _ActiveColour = value
    End Set
    End Property
    Protected Overrides Sub CreateHandle()
    MyBase.CreateHandle()
    Alignment = TabAlignment.Bottom
    End Sub
    #End Region
    #Region "Draw Control"
    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
    DoubleBuffered = True
    Font = New Font("Segoe UI", 10)
    SizeMode = TabSizeMode.Fixed
    End Sub
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    With e.Graphics
    .SmoothingMode = SmoothingMode.HighQuality
    .PixelOffsetMode = PixelOffsetMode.HighQuality
    .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
    .Clear(_BaseColour)
    Try : SelectedTab.BackColor = _BackTabColour : Catch : End Try
    Try : SelectedTab.BorderStyle = BorderStyle.FixedSingle : Catch : End Try
    .DrawRectangle(New Pen(_BorderColour, 2), New Rectangle(0, 0, Width, Height))
    If Me.Created AndAlso Me.TabCount > 0 Then
    Dim tw As Integer = CInt(Me.ClientSize.Width / Me.TabCount)
    Dim offset As Integer = Me.TabCount
    If Me.ItemSize.Width <> tw - offset Then Me.ItemSize = New Size(tw - offset, 32)
    End If
    Using CenterSF As New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center, .Trimming = StringTrimming.EllipsisCharacter, .FormatFlags = StringFormatFlags.NoWrap}
    For i As Integer = 0 To TabCount - 1
    Dim Base As Rectangle = Me.GetTabRect(i)
    Dim txtrect As New Rectangle(Base.Left, Base.Top, Base.Width, Base.Height)
    Dim img As Image = Nothing
    If Me.TabPages(i).Tag IsNot Nothing Then
    txtrect.X += Base.Height
    txtrect.Width -= Base.Height
    img = DirectCast(Me.TabPages(i).Tag, Image)
    End If
    If ShowCloseButtonOnTabs Then
    txtrect.Width -= Base.Height
    End If
    If i = SelectedIndex Then
    .FillRectangle(New SolidBrush(_BaseColour), Base)
    .FillRectangle(New SolidBrush(_ActiveColour), New Rectangle(Base.X + 1, Base.Y - 3, Base.Width, Base.Height + 4))
    .DrawString(TabPages(i).Text, Font, New SolidBrush(_TextColour), txtrect, CenterSF)
    .DrawLine(New Pen(_HorizLineColour, 2), New Point(Base.X + 3, CInt(Base.Height / 2 + 2)), New Point(Base.X + 9, CInt(Base.Height / 2 + 2)))
    .DrawLine(New Pen(_UpLineColour, 2), New Point(Base.X + 3, Base.Y - 3), New Point(Base.X + 3, Base.Height + 5))
    Else
    .DrawString(TabPages(i).Text, Font, New SolidBrush(_TextColour), txtrect, CenterSF)
    End If
    If img IsNot Nothing Then
    .DrawImage(img, Base.Left + 2, Base.Top + 2, Base.Height - 4, Base.Height - 4)
    End If
    Next
    End Using
    .InterpolationMode = InterpolationMode.HighQualityBicubic
    End With
    End Sub
    Private Declare Auto Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
    Protected CloseButtonCollection As New Dictionary(Of Button, TabPage)
    Private _ShowCloseButtonOnTabs As Boolean = True
    <Browsable(True), DefaultValue(True), Category("Behavior"), Description("Indicates whether a close button should be shown on each TabPage")> _
    Public Property ShowCloseButtonOnTabs() As Boolean
    Get
    Return _ShowCloseButtonOnTabs
    End Get
    Set(ByVal value As Boolean)
    _ShowCloseButtonOnTabs = value
    For Each btn As Button In CloseButtonCollection.Keys
    btn.Visible = _ShowCloseButtonOnTabs
    Next
    RePositionCloseButtons()
    Me.Refresh()
    End Set
    End Property
    Protected Overrides Sub OnCreateControl()
    MyBase.OnCreateControl()
    RePositionCloseButtons()
    End Sub
    Protected Overrides Sub OnControlAdded(ByVal e As System.Windows.Forms.ControlEventArgs)
    MyBase.OnControlAdded(e)
    Dim tp As TabPage = DirectCast(e.Control, TabPage)
    Dim rect As Rectangle = Me.GetTabRect(Me.TabPages.IndexOf(tp))
    Dim btn As Button = AddCloseButton(tp)
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.X + rect.Width - rect.Height + 11, CInt(rect.Y + 7))
    SetParent(btn.Handle, Me.Handle)
    AddHandler btn.Click, AddressOf OnCloseButtonClick
    'ResizeTabs()
    CloseButtonCollection.Add(btn, tp)
    End Sub
    Protected Overrides Sub OnControlRemoved(ByVal e As System.Windows.Forms.ControlEventArgs)
    Dim btn As Button = CloseButtonOfTabPage(DirectCast(e.Control, TabPage))
    RemoveHandler btn.Click, AddressOf OnCloseButtonClick
    CloseButtonCollection.Remove(btn)
    SetParent(btn.Handle, Nothing)
    btn.Dispose()
    MyBase.OnControlRemoved(e)
    'ResizeTabs()
    End Sub
    Protected Overrides Sub OnLayout(ByVal levent As System.Windows.Forms.LayoutEventArgs)
    MyBase.OnLayout(levent)
    RePositionCloseButtons()
    End Sub
    Public Event CloseButtonClick As CancelEventHandler
    Protected Overridable Sub OnCloseButtonClick(ByVal sender As Object, ByVal e As EventArgs)
    If Not DesignMode Then
    Dim btn As Button = DirectCast(sender, Button)
    Dim tp As TabPage = CloseButtonCollection(btn)
    Dim ee As New CancelEventArgs
    RaiseEvent CloseButtonClick(sender, ee)
    If Not ee.Cancel Then
    Me.TabPages.Remove(tp)
    RePositionCloseButtons()
    End If
    End If
    End Sub
    Protected Overridable Function AddCloseButton(ByVal tp As TabPage) As Button
    Dim closeButton As New Button
    With closeButton
    '' TODO: Give a good visual appearance to the Close button, maybe by assigning images etc.
    '' Here I have not used images to keep things simple.
    .Text = "X"
    .FlatStyle = FlatStyle.Flat
    .BackColor = _BaseColour
    .ForeColor = Color.White
    .Font = New Font("Microsoft Sans Serif", 6, FontStyle.Bold)
    End With
    Return closeButton
    End Function
    Public Sub RePositionCloseButtons()
    For Each item As KeyValuePair(Of Button, TabPage) In CloseButtonCollection
    RePositionCloseButtons(item.Value)
    Next
    End Sub
    Public Sub RePositionCloseButtons(ByVal tp As TabPage)
    Dim btn As Button = CloseButtonOfTabPage(tp)
    If btn IsNot Nothing Then
    Dim tpIndex As Integer = Me.TabPages.IndexOf(tp)
    If tpIndex >= 0 Then
    Dim rect As Rectangle = Me.GetTabRect(tpIndex)
    If Me.SelectedTab Is tp Then
    btn.BackColor = Color.Red
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.Right - rect.Height + 11, CInt(rect.Y + 7))
    Else
    btn.BackColor = _BaseColour
    btn.Size = New Size(CInt(rect.Height / 2), CInt(rect.Height / 2))
    btn.Location = New Point(rect.Right - rect.Height + 11, CInt(rect.Y + 7))
    End If
    btn.Visible = ShowCloseButtonOnTabs
    btn.BringToFront()
    End If
    End If
    End Sub
    Protected Function CloseButtonOfTabPage(ByVal tp As TabPage) As Button
    Return (From item In CloseButtonCollection Where item.Value Is tp Select item.Key).FirstOrDefault
    End Function
    #End Region
    End Class
     In the Form`s code you can set the images for the TabPage icons like this.
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.TabPage1.Tag = Image.FromFile("C:\testfolder\img1.png")
    Me.TabPage2.Tag = Image.FromFile("C:\testfolder\img2.png")
    End Sub
    End Class
     Here is an example of what it looks like.
    If you say it can`t be done then i`ll try it
    Thanks :)) I tried you code and it works perfectly.
    Though i don't want the tabs have their width's by the size of form, so i fixed a width,
    If Me.Created AndAlso Me.TabCount > 0 Then
    'Dim tw As Integer = CInt(Me.ClientSize.Width / Me.TabCount)
    'Dim offset As Integer = Me.TabCount
    'If Me.ItemSize.Width <> tw - offset Then Me.ItemSize = New Size(tw - offset, 32)
    Me.ItemSize = New Size(200, 32)
    End If
    Here is the screenshot,
    I just don't know why the arrows (left and right) aren't full. here is a gif,
    Why is that :O Should I paint the arrows as well ?

Maybe you are looking for

  • How to consume a ABAP webservice in a  webdynpro app?

    Hi, I have a BAPI in ABAP that is exposed as a webservice. I want to use this to build a webdynpro app so that i can consume this webservice. This BAPI returns the Employee data. As soon as the person logs into the portal i am going to pass his login

  • Using an external hard drive with an airport extreme and HP computer

    - I recently bought the airport extreme, and also bought a Seagate external hard drive for my music files.  I can see the hard drive on the airport utility but cannot access it or find where to access it.  I am using an HP computer with windows 7. He

  • Access Rights

    I need two different access rights to a same user. One when he signs on to the application using forms and another when he sign on using SQL*PLUS. Is there a way to do this??

  • IOS 8 photo import to pc

    Since updating to iOS 8, My phone doesn't appear in My Computer in Windows (7) as before. This used to be the quick way to get photos off an iphone...has iOS 8 taken away this capability? Is itunes the only way to get photos off the iphone now (unles

  • Query Creation directly in Production

    RSA1-->Transport Connection Choose the 'Bex Changeability' icon at the top right screen; in the popup set 'Everything changeable' for query elements.