Hej, jag sitter med en frame1(0) som innehåller en label1(0) <code> Kanon, funka ju bra, om jag nu utvecklar detta med att jag har en tabstrip (sstab1) Skippa sstaben. Den kanske verkar smidig i början. Men har många nackdelar. Använd istället Tabstrip i Microsoft Windows Common Controls 6. Ok, jag har upplevt att sstabben är bättre för du slippe dölja kontroller mm, dom hamnar ju dolda automatiskt på varje flik. Tjena, jag sitter och tragglar med koden ovan i denna tråd, som fungerar men jag vill placera den nya framen med innehåll i tab 2 som jag skapar. Du använder en array av picturebox'ar, frames eller annan kontrol som är en container. Problemet med sstabben är att det endast är en container. Vilket innebär att TabStripen döljer och visar kontroller genom att flytta dem till Left = -74760.Load object
nu vill jag köra:
<code>
load frame1(1) 'ny frame
frame1(1).left=frame1(0).left +2000 ' lägger framen bredvid den första
frame1(1).visible=true 'visar den nya framen
</code>
så långt allt väl
men label1(0) då som ligger i frame1(0) och som jag vill ska visas i den nya framen?
<code>
load label1(1)
label1(1).left=label1(0).left +2000 ' lägger label1 bredvid den första
label1(1).visible=true
</code>
detta placerar väl label1(1) under nya framen, hur får man den I den nya framen?
nån som förstått? :-)Sv: Load object
Dim Frame As Frame
Dim Label As Label
'ny frame
Set Frame = Frame1(1)
Load Frame
'lägger framen bredvid den första
Frame.Left = Frame1(0).Left + 2000
'visar den nya framen
Frame.Visible = True
'ny Labeln
Set Label = Label1(1)
Load Label
'Flytter den till den nya Framen
Set Label.Container = Frame
'visar den nya Labeln
Label.Visible = True
</code>Sv: Load object
som jag har en tab på, och vill lägga den nya framen i en ny tab.
Skapa en tab är lugnt, men hur placerar jag det nya på den?Sv: Load object
Sv: Load object
Hur ska jag göra med den du föreslår då?Sv: Load object
jag har testat denna kod:
<code>
sstab1.tab=1 ' sätter fokus på den nya tabben
Set Frame.Container = SSTab1.container 'placerar i den nya tabben
</code>
detta fungerar NÄSTAN, för visst visas nya tabben med nya framen men klickar man på tabben innan ligger nya framen kvar.
Vad är felet o jag ska ju inte behöva köra med visible=true/false när sstabben gör detta som standard.
PS: jag vet fortfarande inte varför jag skall använda Tabstrip i Microsoft Windows Common Controls 6?Sv: Load object
Om du använder Frame kontroller som sidor. Så kan du växla mellan tabbar med följande kod:
<code>
Public Sub SelectTab(TabStrip As TabStrip, Pages As Object)
Dim Frame As Frame
Dim Index As Long
Index = TabStrip.SelectedItem.Index
For Each Frame In Pages
If Frame.Index = Index Then
Frame.Move TabStrip.ClientLeft, _
TabStrip.ClientTop, _
TabStrip.ClientWidth, _
TabStrip.ClientHeight
Frame.Visible = True
Else
Frame.Visible = False
End If
Next
End Sub
Private Sub Form_Load()
SelectTab TabStrip1, Frame1
End Sub
Private Sub TabStrip1_Click()
SelectTab TabStrip1, Frame1
End Sub
</code>
Använder Picturebox eller någon annan kontroll. Så ändrar du bara deklarationen av Frame till t.ex PictureBox:
<code>
Public Sub SelectTab(TabStrip As TabStrip, Pages As Object)
Dim PictureBox As PictureBox
Dim Index As Long
Index = TabStrip.SelectedItem.Index
For Each PictureBox In Pages
If PictureBox.Index = Index Then
PictureBox.Move TabStrip.ClientLeft, _
TabStrip.ClientTop, _
TabStrip.ClientWidth, _
TabStrip.ClientHeight
PictureBox.Visible = True
Else
PictureBox.Visible = False
End If
Next
End Sub
</code>Sv: Load object
Det är därför svårt att få till en dynamisk lösning. Den var helt enkelt inte till för att förändra vilka kontroller som tillhör vilka tabar under run-time.
Det är det som styrkan med Tabstripen. Du skapar själv dina egna siddor. Eller så kan du t.ex. använda en listview. Men ladda olika data beroende på vilken sida man valt.