TabControl   zodpovězená otázka

VB.NET

Zdravím, mám funkční aplikaci (VB 2005), ALE:

Prvek TabControl obsahuje několik záložek (pages), na každé záložce je prvek ListView (vlastnost view=deail, MultiSelect=False) s mnoha řádky. Např.: záložky představují měsíce a v ListView je seznam knih, které byly v daném měsíci vypůjčeny. Vše (záložky a ListView) se vytváří a plní za běhu programu.

Problém:

Vybere-li uživatel konkrétní položku v ListView (v aktivní záložce), je třeba zvýraznit (např. bold, velikost fontu, ..) záložky, resp. ouška záložek (nejsou aktivní), jejichž ListViw vybranou položku obsahují.(nastavení vlastnost selected u ostatních ListView zvládám).

Tzn. na jedno kliknutí je vidět všechny měsíce, kdy byla kniha vypůjčena.

Má to řešení?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Záložky TabControlu mají vlastnost Font stejně jako každý jiný ovládací prvek. Není problém ji za běhu měnit.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano má, ALE změna fontu u záložky, změní nastavení fontů všech ovládacích prvků, které jsou na záložce umístěny, ALE „ouško“ záložky zůstane nezměněno.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pozrite sa na codeproject.com, je tam dosť úprav mnohých prvkov WinForms, určite tam nájdete aj taký TabControl, aký by Vám vyhovoval.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Jedná se o chybu v ovládacím prvku TabControl, kterou dosud nebyli schopni opravit (jako mnoho dalších věcí).

http://support.microsoft.com/kb/814345/e...

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Vyřešeno následujícím způsobem:

TabControl má mj. následující vlastnost „DrawMode“ – nastavenu na: „OwnerDrawFixed

Deklarace:

Private m_sListTC_Bold As String = ""

Událostní procedura:

  Private Sub tbcTrial_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles tbcTrial.DrawItem
    Dim tb As TabPage = CType(sender, TabControl).TabPages(e.Index)

    Dim nColor As Color, eStyle As FontStyle

    If m_sListTC_Bold.IndexOf("<" & (e.Index+1).ToString & ">") > -1 Then
      nColor = Color.DarkBlue
      eStyle = FontStyle.Bold
    Else
      nColor = Color.Black
      eStyle = FontStyle.Regular
    End If
    Dim Font As Font = New Font(tb.Font.Name, tb.Font.Size, eStyle)
    Dim Brush As New SolidBrush(nColor)
    Dim Rect As Rectangle = Me.tbcTrial.GetTabRect(e.Index)
    e.Graphics.DrawString(tb.Text, Font, Brush, Rect)
  End Sub

a kdesi v kódu:

' 2 a 5 tabPage zvýrazněn (počítáno od 1)
m_sListTC_Bold = "<2><5>"
tbcTrial.Refresh()   'Vyvolání události "DrawItem"

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback