Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
arnesson
Newbie
Newbie

Anmeldedatum: 14.12.2010
Beiträge: 2

Während der Laufzeit Labels erstellen - Fehler im code?
Verfasst am: 14.12.2010, 08:43

Hallo zusammen,

Vorweg: ich habe bisher nur VBA in Excel und Access programmiert. Nun habe ich mir VB Express 2010 runtergeladen und komme mit den uterschieden nicht so ganz zurecht.

Folgene Situation:
Ich möchte eine Application schreiben, bei der man einen Ordener Auswählt und die Unterordner (in meinem Fall Filme) einließt. Bis hierher funktioniert es.
Während er in der Do-Schleife jeden einzelnen Ordner findet, soll zu jedem Ordnernamen (entspricht Filmnamen) ein Label in ein Panel eingefügt werden (soll später das Titelbild welches jew. in den Ordnern liegt enthalten)

Leider erstellt der code jedoch nur EIN Label. Ich bin es schrittweise durchgegangen. Im ersten durchgang ist es bei der ersten position (verändert sich bei jedem durchlauf). Läuft der code komplet duch, ist genau ein Label im Panel mit den zuletzt gefundenen Ordner als Text. Ich vermute eigendlich, das er den vorgegebenen Namen der labels nicht ändert und es nur immer verschiebt.
Kann aber eig. nicht sein, da beim 2 durchlauf 2 labels (jedoch ohne beschriftung) im Panel sind. In VBA ging das iwie einfacher.

HILFE!

Der Code liegt in einer Form. Die Form hast einen Button (Name = "Cmd_SourceOeffnen", ein Panel (Name="Pnl_Filme") und eine Listbox (Name = "Lst_Filmliste") zur kontrolle (Hier werden alle Ordnernamen aufgeführt (funktioniert)

Code:
Code:
Public Class Form1

    Private Sub Cmd_SourceOeffnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmd_SourceOeffnen.Click
        Dim MainFolder As String

        MainFolder = ""

        If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then
            MainFolder = (FolderBrowserDialog1.SelectedPath) & "\"
        End If

        Call Filmliste(MainFolder, "*")
    End Sub

    Dim NewLbl As New Label 'Label = New Label()
    Private Sub Filmliste(ByVal MainFolder As String, ByVal Filter As String)
        Dim Name1 As String
        Dim LblCounter As Long
        Dim NewLbl As Label = New Label()
        LblCounter = 0

        Name1 = Dir(MainFolder, vbDirectory)    ' Ersten Eintrag abrufen.
        Do While Name1 <> ""    ' Schleife beginnen.
            ' Aktuelles und übergeordnetes Verzeichnis ignorieren.
            If Name1 <> "." And Name1 <> ".." Then
                ' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein
                ' Verzeichnis ist.
                If (GetAttr(MainFolder & Name1) And vbDirectory) = vbDirectory Then
                    If Name1 Like Filter & "*" Then
                        LblCounter = LblCounter + 1
                        With NewLbl
                            .Name = "Lbl_Bild_" & LblCounter
                            .Text = Name1
                            .Size = New Size(50, 16)
                            .Location = New Point(LblCounter * 60, 32)
                            .BorderStyle = BorderStyle.FixedSingle
                        End With
                        Pnl_Filme.Controls.Add(NewLbl)
                        Lst_Filmliste.Items.Add(Name1)    ' Eintrag nur anzeigen, wenn es sich


                    End If    ' um ein Verzeichnis handelt.
                End If
            End If
            Name1 = Dir()    ' Nächsten Eintrag abrufen.
        Loop

        Lst_Filmliste.Sorted = True
    End Sub
End Class


PS: Ist VB Express von der Sprache anders? Normaler weise schreibe ich sowas wie
Code:

    Dim LBL As Control
    For Col = 1 To 10
        Me.Controls.Add "Forms.Label.1", "Lbl_" & Col
        Set LBL = Me.Controls("Lbl_" & Col)
       
        LBL.Caption = "Test"
        LBL.Height = 12
        LBL.Width = 50
        LBL.Left = 10
        LBL.Top = 10
        LBL.BackColor = RGB(R, G, B)
        LBL.BorderStyle = 1
        LBL.TextAlign = 2
    Next Col


Aber das klappt in VB Express wohl nicht.
 
christopher.g
Überflieger
Überflieger

Anmeldedatum: 03.05.2008
Beiträge: 565


Verfasst am: 14.12.2010, 11:38

naja sicher
vba = vb6
und du benützt gerade vb.net
sie sind ähnlich aber nicht gleich ^^


ich kann leider kein vb.net (hab damals die falsche sprache gelernt ^^)
aber ich hatte ein ähnliches problem auch mal
lösung bei mir: newlbl.VISIBLE = TRUE
^^
das wars damals
vl hilfts dir was

ansonsten frag mal auf vb-paradise.de nach dort kann dir sicher geholfen werden
lg
 
arnesson
Newbie
Newbie

Anmeldedatum: 14.12.2010
Beiträge: 2


Verfasst am: 14.12.2010, 12:30

Hi,

Ach das is vb net^^ naja. Habe in nem anderen Forum die antwort bekommen das ich IN der Schleife ein New Label anlegen muss. Strange, aber scheint so zu sein^^

Also ca. so:
Code:
    Dim LBL As Label
    For Col = 1 To 10
      LBL = New Label 'Control
      LBL.Name = "Lbl_" & Col

      LBL.Text = "Test"
      LBL.Height = 12
      LBL.Width = 50
      LBL.Left = 10
      LBL.Top = 10
      LBL.BackColor = RGB(R, G, B)
      LBL.BorderStyle = 1
      LBL.TextAlign = 2

      Me.Controls.Add(LBL)
    Next Col
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: label, erstellen, vba, laufzeit, excel, 2010

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge [suche] Tuturials winsock & daten senden 984 09.06.2011, 13:19
Keine neuen Beiträge [Video] *.dll & *.ocx Installer 2612 06.03.2008, 21:19
Keine neuen Beiträge ListView speichern & laden 1331 05.08.2008, 13:32
Keine neuen Beiträge Registry & Co Fragen 1205 03.05.2007, 10:57
Keine neuen Beiträge Listbox speichern & laden 2273 22.03.2007, 21:25
 


[ Time: 0.0999s ][ Queries: 88 (0.0559s) ][ GZIP on - Debug on ]