Kalenderwochen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Kalenderwochen

    Hallo

    möchte Buttons zur Laufzeit erzeugen die als Text
    die Kalenderwoche im angegebenen Jahr und Monat haben.
    Hab es mit folgendem Code versucht, aber da werden soviele
    Buttons erzeugt wieviel Tage der Monat hat.


    VB.NET-Quellcode

    1. Sub KalWo()
    2. ListBox1.Items.Clear()
    3. For i = 0 To KalenderButtons.Count - 1
    4. Me.Controls.Remove(KalenderButtons(i))
    5. KalenderButtons(i).Dispose()
    6. Next
    7. For i = 1 To DateTime.DaysInMonth(CInt(cbjahr.Text), CInt(cbmonat.Text))
    8. EingabeDatum = cbjahr.Text & "." & cbmonat.Text & "." & cbtag.Text
    9. Datum = CDate(EingabeDatum)
    10. Woche = DatePart(DateInterval.WeekOfYear, Datum, FirstDayOfWeek.Monday,
    11. FirstWeekOfYear.FirstFourDays)
    12. ListBox1.Items.Add(Woche)
    13. Label1.Text = "Dieses Datum befindet sich in Woche: " & Woche
    14. Dim KW As New Button
    15. Controls.Add(KW)
    16. KW.Height = 40
    17. KW.Width = 40
    18. KW.Text = CType(Woche, String) ' WeekdayName(w, True)
    19. KW.Location = New Point(XposWochentage, YPosWochentage)
    20. YPosWochentage += 40
    21. KalenderButtons.Add(KW)
    22. Next
    23. YPosWochentage = 100
    24. End Sub


    L.G Willi
    Teste das mal, und schalte bitte Option Strict On : Option Explicit On : Option Infer Off

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim KalenderButtons As New List(Of Button)
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. End Sub
    5. Sub KalWo()
    6. Dim datum As Date = Date.Parse("01.01.2019")
    7. Dim usedWeak As Integer = Integer.MinValue
    8. Dim x As Integer = ListBox1.Location.X
    9. Dim y As Integer = ListBox1.Location.Y + ListBox1.Height + 10
    10. For i As Integer = 1 To DateTime.DaysInMonth(datum.Year, datum.Month)
    11. Dim aktDatum As New Date(datum.Year, datum.Month, i)
    12. Dim Woche As Integer = DatePart(DateInterval.WeekOfYear, aktDatum, FirstDayOfWeek.Monday, FirstWeekOfYear.FirstFourDays)
    13. If usedWeak <> Woche Then
    14. ListBox1.Items.Add(Woche)
    15. usedWeak = Woche
    16. Dim KW As New Button
    17. Controls.Add(KW)
    18. KW.Height = 40
    19. KW.Width = 40
    20. KW.Text = CType(Woche, String) ' WeekdayName(w, True)
    21. KW.Location = New Point(x, y)
    22. x += 40
    23. KalenderButtons.Add(KW)
    24. End If
    25. Next
    26. End Sub
    27. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    28. KalWo()
    29. End Sub
    30. End Class
    Das kommt drauf an. Im Unterforum Sourcecodeaustausch einen Thread erstellen und dort mittels [+ Erweiterte Antwort] Deinen Upload vollführen. EXE-Dateien sind dort nicht erlaubt.
    Programme mit EXE-Dateien kommen in den Showroom.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Welches Zip-Format nutzt Du und wie groß ist das Ganze? Du kannst keinen Ordner hochladen und ne gewisse Größe kannst Du auch nicht überschreiten.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @papawt die kompletten Verzeichnisse obj und bin.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nach dem Archiverstellen solltest Du den Inhalt immer nochmal an anderer auspacken und das Projekt öffnen, um sicherzugehen, dass es funktioniert. In diesem Fall geht es nicht, da ein falscher Ordnerverweis in der .sln drin ist: Zeile#6
    Project("...") = "Kalender Layout", "Kalender Layout\Kalender Layout.vbproj"
    muss lauten
    Project("...") = "Kalender Layout", "Kalender Layout.vbproj"
    da es keinen Unterordner Kalender Layout gibt.

    Sobald man den behoben hat, geht es dann aber endlich los.
    Ok, zum Code des Programms brauche ich nicht viel zu sagen. (Ich klammere grammatikalische Fehler mal komplett aus.) Fragt man 10 Leute, würden die auf mindestens 10 Arten das Programm umschreiben (wollen).
    Aber: Wozu sind die KWs und die Wochentage Buttons? Bei einem Button erwartet man eine Aktion, wenn man ihn anklickt.

    Bevor Du weitermachst, bitte die empfohlenen VS-Einstellungen verwenden. Das beinhaltet nicht nur Option Strict On, was Du erfreulicherweise hast, sondern auch Entfernung des VB6-Namespaces.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo

    VaporiZed schrieb:

    Wozu sind die KWs und die Wochentage Buttons


    Eigentlich wollte ich Labels erzeugen, aber dann hab ich doch
    Buttonns draus gemacht,ohne jeglichen Hintergedanken.

    Ich hab deinen Rat angenommen und VB6 Namespaces entfernt,
    und dann waren auch schon alles Fehlermeldungen drin.
    Um diese Fehler zu entfernen ist für mich als Anfänger zu Schwer,
    deswegen hab ich für dieses Projekt die Namespaces wieder zurückgemacht.
    Aber für Zukünftige Projekte werde ich deine Rat befolgen.
    Bin eigentlich Froh das ich das Projekt so wie es jetzt ist
    überhaupt geschafft habe.(Natürlich mit Eurer hilfe, wofür ich mich noch einmal
    ganz Herzlich bedanke).

    L.G. Willi

    papawt schrieb:

    Um diese Fehler zu entfernen ist für mich als Anfänger zu Schwer,
    Naja - dabei kann dir doch geholfen werden.
    Ich finde das grad eine Chance, enorm viel zu lernen.

    (Übrigens für beide Seiten. Immer wieder kommt vor, dass man auch 100% sichere Prinzipien etc. modifizieren muss, oder nochmal was bedenken, anhand von Problemen ausse Praxis.)