vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Tabpages enabled 
Autor: PACoSys
Datum: 10.06.04 17:55

Hallo,

ich habe folgendes Problem, wenn ich mit
tabCtrl.TabPages(1).Enabled = False
eine Tabpage enable werden zwar die Steuerelemente auf dieser deaktiviert, aber sie selbst ist noch wählbar. Kann man das irgendwie umgehen? Bzw. wie deaktiviert man eine Tabpage richtig?

Gru? Patrick
---
Wer nicht fragt, bleibt dumm.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: WaldiMaywood
Datum: 10.06.04 22:34

Indem du dir z.B. eine eigene TabControl Klasse erstellst und dieses Feature integrierst. Aber, was rede ich, schau doch einfach hier (d. dritte Beitrag) vorbei.

Steve
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: WaldiMaywood
Datum: 11.06.04 11:38

Falls du Probleme mit Klasse hast, hier der funktionierende Code (war ein kleiner Fehler enthalten):
Public Class TabControlEx
    Inherits System.Windows.Forms.TabControl
    Private Const WM_LBUTTONDOWN As Integer = &H201
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_LBUTTONDOWN Then
            Dim pt As New Point(m.LParam.ToInt32)
            Dim index As Integer
            For index = 0 To Me.TabPages.Count - 1
                If GetTabRect(index).Contains(pt) Then
                    If TabPages(index).Enabled Then
                        MyBase.WndProc(m)
                    End If
                    Exit Sub
                End If
            Next
        End If
        MyBase.WndProc(m)
    End Sub
    Protected Overrides Sub OnKeyDown(ByVal ke As _
      System.Windows.Forms.KeyEventArgs)
        Dim currentIndex As Integer = Me.SelectedIndex
        Dim index As Integer
        If ke.KeyCode = Keys.Left AndAlso Not (ke.Alt AndAlso Not ke.Control) _
          Then
            For index = currentIndex - 1 To 0 Step -1
                If TabPages(index).Enabled Then
                    Me.SelectedIndex = index
                    Exit For
                End If
            Next
            ke.Handled = True
        ElseIf ke.KeyCode = Keys.Right AndAlso Not (ke.Alt AndAlso Not _
          ke.Control) Then
            For index = currentIndex + 1 To TabPages.Count - 1
                If TabPages(index).Enabled Then
                    Me.SelectedIndex = index
                    Exit For
                End If
            Next
            ke.Handled = True
        End If
        MyBase.OnKeyDown(ke)
    End Sub
    Public Sub DisablePage(ByRef pTabPage As TabPage)
        With pTabPage
            .Enabled = False
        End With
        Me.Refresh()
    End Sub
    Private Sub TabControlEx_DrawItem(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.DrawItemEventArgs) Handles MyBase.DrawItem
        Dim intOffsetLeft As Int32
        Dim intOffsetTop As Int32
        Dim r As RectangleF = RectangleF.op_Implicit(e.Bounds)
        Dim r2 As RectangleF
        Dim ItemBrush As New SolidBrush(Me.BackColor)
        Dim b As Brush
        If Me.TabPages(e.Index).Enabled Then
            b = Brushes.Black
        Else
            b = Brushes.Gray
        End If
        Dim sf As New StringFormat
        sf.Alignment = StringAlignment.Center
        sf.LineAlignment = StringAlignment.Center
        Dim im As Bitmap
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            im = CType(Me.ImageList.Images(Me.TabPages(e.Index).ImageIndex), _
              Bitmap)
        End If
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            r2 = New RectangleF(r.X + (im.Width \ 2), r.Y, r.Width, r.Height)
        Else
            r2 = New RectangleF(r.X, r.Y, r.Width, r.Height)
        End If
        If CBool(e.State And DrawItemState.Selected) Then
            e.Graphics.FillRectangle(ItemBrush, e.Bounds)
            e.Graphics.DrawString(Me.TabPages(e.Index).Text, e.Font, b, r2, sf)
            intOffsetLeft = 5
            intOffsetTop = 5 '4
        Else
            e.Graphics.DrawString(Me.TabPages(e.Index).Text, e.Font, b, r2, sf)
            intOffsetLeft = 2
            intOffsetTop = 2 '4
        End If
        If Me.TabPages(e.Index).ImageIndex <> -1 Then
            Me.ImageList.Draw(e.Graphics, Convert.ToInt32(r.Left) + _
              intOffsetLeft, Convert.ToInt32(r.Top) + intOffsetTop, Me.TabPages( _
              e.Index).ImageIndex)
        End If
    End Sub
End Class
Übrigens, damit das Tab auch wie Enabled = False dargestellt wird, muss du die TabControl "DrawMode " Eigenschaft auf "OwnerDrawFixed" ändern.
TabPages "deaktivieren" kannst du dann mit der "DisablePage()" Methode.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: PACoSys
Datum: 16.06.04 08:55

Soweit funktioniert's. Das Problem ist bloß, daß TabControlEx_DrawItem nicht aufgerufen wird. Woran kann das liegen?

Gru? Patrick
---
Wer nicht fragt, bleibt dumm.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: WaldiMaywood
Datum: 16.06.04 09:21

>> Das Problem ist bloß, daß TabControlEx_DrawItem nicht aufgerufen wird. Woran kann das liegen?

.. du musst die TabControl "DrawMode " Eigenschaft auf "OwnerDrawFixed" ändern.

Steve
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: PACoSys
Datum: 16.06.04 09:48

Danke, funktioniert. War mir sicher, daß ich das eingestellt habe, war aber nicht so. Also nochmal danke.

Gru? Patrick
---
Wer nicht fragt, bleibt dumm.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: Toolmaster
Datum: 09.09.06 14:56

ist dieser weg in vb 2005 auch noch immer nötig? oder hat ms hier etwas nachgebessert?

grüße georg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Tabpages enabled 
Autor: ModeratorFZelle (Moderator)
Datum: 11.09.06 08:53

Es ist immer noch so.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel