Hur skapar jag en kontroll med vanlig kod i Visual Basic 6? >Hur skapar jag en kontroll med vanlig kod i Visual Basic 6? Förutsatt du har en KontrollArray av myFrame() och myLabel(): Hm...ok, men: Skapa en fram i desing time som heter "myFrame". Sätt Index = 0 för "myFrame". Samma sak med labeln. Efter lite pulande kom jag fram till följande:Dynamiska kontroller...
Alltså...t.ex:
private sub form_load()
for i = 1 to 30
skapa myFrame(i)
skapa myLabel(i) i myFrame(i)
ställ in storlek, plats, caption m.m
next
end sub
Jag vill alltså göra control arrays där en label ligger i en frame.
Hur bör jag gå tillväga?
Tack!Sv: Dynamiska kontroller...
>
>Alltså...t.ex:
>
>private sub form_load()
>for i = 1 to 30
> skapa myFrame(i)
> skapa myLabel(i) i myFrame(i)
> ställ in storlek, plats, caption m.m
>next
>end sub
>
>Jag vill alltså göra control arrays där en label ligger i en frame.
>Hur bör jag gå tillväga?
>Tack!
Använd Controls.Add (ProgID, name, container)
Exempelvis såhär:
(förutsätter att du har ett formulär med en knapp Command1 och en textbox Text1)
Private Sub Command1_Click()
Dim n As Long
Dim NewField As TextBox
Dim NewFrame As Frame
For n = 0 To Text1.Text
Set NewFrame = Form1.Controls.Add("VB.Frame", "fraNotes" & n)
Set NewField = Form1.Controls.Add("VB.TextBox", "txtNotes" & n, NewFrame)
With NewFrame
.Caption = .Name
.Height = 685
.Width = 5000
.Top = .Top + 690 * n
End With
With NewField
.Top = 250
.Left = 200
.Height = 285
.Text = .Name
End With
NewFrame.Visible = True
NewField.Visible = True
Next n
End Sub
Problemet är att få in det i en array och jag är inte säker på fall det går.
Kanske nån annan som vet.
Annars finns möjligheten att använda VBControlExtender (kolla i MSDN).
Det finns även mer om Controls.Add i MSDN.
/AndersSv: Dynamiska kontroller...
<code>
Private sub form_load()
Dim Label As Label
Dim Frame As Frame
For i = 1 to 30
'skapa myFrame(i)
Set Frame = myFrame(i)
Load Frame
'skapa myLabel(i)
Set Label = myLabel(i)
Load Label
'Flytta myLabel(i) till myFrame(i)
Set Label.Container = Frame
'ställ in storlek, plats, caption m.m
Next
End sub
</code>
En kontroll array skapar du genom att lägga till önskad kontroll och tilldela index egenskapen för kontrollen ett värde. T.Ex. 0.Sv: Dynamiska kontroller...
Set Frame = myFrame(i)
ger:
Compile Error:
Sub of Function not definedSv: Dynamiska kontroller...
Sv: Dynamiska kontroller...
Private Sub Command1_Click()
Dim n As Long
Dim NewField As TextBox
Dim NewFrame As Frame
For n = 0 To Text1.Text
'Sätt parenteser runt index för kontrollen "fraNotes" & (n) så får man en array
Set NewFrame = Form1.Controls.Add("VB.Frame", "fraNotes" & (n))
Set NewField = Form1.Controls.Add("VB.TextBox", "txtNotes" & (n), NewFrame)
With NewFrame
.Caption = .Name
.Height = 685
.Width = 5000
.Top = .Top + 690 * n
End With
With NewField
.Top = 250
.Left = 200
.Height = 285
.Text = .Name
End With
NewFrame.Visible = True
NewField.Visible = True
Next n
End Sub
Detta eliminerar behovet av att lägga en kontroll på formuläret i design-time.
Hoppas det hjälper!
/Anders