VBiB/ACCB.net - Visual Basic in België | .net Ineta User Group  
Hoofdmenu

Advertenties

Het Computer Winkeltje HCW


Evenementen

Forum

Plaats nieuw bericht   Dit onderwerp is gesloten. Het plaatsen of bewerken van berichten is niet mogelijk
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
Auteur Bericht
saarOffline
Onderwerp: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 17:24
Junior Developer


Geregistreerd op: 05-dec-2007
Berichten: 81

Status: Offline
Ik heb een project gemaakt met een klasse personen. Nu is het de bedoeling dat ik een lijst aanmaak op basis van de personen die aanwezig zijn in de code en dat als ik een persoon selecteer een ander formulier krijg met die de gegevens van die persoon op, alleen lukt het niet zo goed.
Hier is de code:
Dit is de klasse:
Visual Basic code:

Public Class klasse_personen
    Dim p_id As String
    Dim p_naam As String
    Dim p_voornaam As String
    Dim p_adres As String
    Dim p_Telefoonnummer As String
    Dim p_Geboortedatum As String
    Dim p_geslacht As String
    Public ReadOnly Property id() As String
        Get
            Return p_id
        End Get
    End Property
    Public ReadOnly Property naam() As String
        Get
            Return p_naam
        End Get
    End Property

    Public ReadOnly Property voornaam() As String
        Get
            Return p_voornaam
        End Get
    End Property

    Public ReadOnly Property adres() As String
        Get
            Return p_adres
        End Get
    End Property
    Public ReadOnly Property telefoonnummer() As String
        Get
            Return p_Telefoonnummer
        End Get
    End Property
    Public ReadOnly Property Geboortedatum() As String
        Get
            Return p_Geboortedatum
        End Get
    End Property
    Public ReadOnly Property Geslacht() As String
        Get
            Return p_geslacht
        End Get
    End Property
End Class


En dit is men form
Visual Basic code:

Public Class lijst
    Dim Persoon As klasse_personen
    Dim personenlijst As List

   
    Private Sub cboPersonen_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPersonen.SelectedIndexChanged
        Dim index As Integer = cboPersonen.SelectedIndex
        Dim form As New frmPersoon(personenlijst.items(index))
        form.showdiaolog()
        cboPersonen.Items.RemoveAt(index)
        cboPersonen.Items.Insert(index, personenlijst(index))

        Dim persoon1 As New klasse_personen("123", "Sara", "Vanden Hautte", "meeregem 66", "093709080", "02/08/1987", "vrouw")
        Dim persoon2 As New klasse_personen("456", "Robbe", "Dobbe", "meergem 68", "089897654", "08/10/90", "man")
    End Sub
    Private Sub opvullen_combobox()
        For Each p As klasse_personen In Personenlijst
            cboPersonen.Items.Add(p_naam & " " & p_voornaam)
        Next
    End Sub
End Class

 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 17:48
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
Even een eerste vraagje: kan je wel personen aanmaken? want ik zie nerges een "sub new". Of heb je deze er uit gelaten. Geen erg uiteraard.
ook een schrijf foutje --> form.showdiaolog moet volgens mij dit worden: form.showdialog

Ik heb net in een ander topic uitgelegd welke methoden er zijn om waardes tussen je form uit te wisselen:

http://www.vbib.be/index.php?name=PNphpBB2&file=viewtopic&p=16452#16452

Ik stel voor dat je gebruik maakt van methode 3 of 4 (dit zijn de beste), en dat je als waarde die je doorgeeft de klasse "klasse_personen" gebruikt. dus:

Visual Basic code:
public sub new (byval persoon as klasse_personen)

of
Visual Basic code:
private _persoon as klasse_persoon
public property persoon as klasse_persoon
    get
        return _persoon
    end get
    set(value as klasse_persoon)
        _persoon = value
    end set
end property

 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
saarOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 18:06
Junior Developer


Geregistreerd op: 05-dec-2007
Berichten: 81

Status: Offline
ArComAr schreef:
Even een eerste vraagje: kan je wel personen aanmaken? want ik zie nerges een "sub new". Of heb je deze er uit gelaten. Geen erg uiteraard.
ook een schrijf foutje --> form.showdiaolog moet volgens mij dit worden: form.showdialog

Ik heb net in een ander topic uitgelegd welke methoden er zijn om waardes tussen je form uit te wisselen:

http://www.vbib.be/index.php?name=PNphpBB2&file=viewtopic&p=16452#16452

Ik stel voor dat je gebruik maakt van methode 3 of 4 (dit zijn de beste), en dat je als waarde die je doorgeeft de klasse "klasse_personen" gebruikt. dus:

Visual Basic code:
public sub new (byval persoon as klasse_personen)

of
Visual Basic code:
private _persoon as klasse_persoon
public property persoon as klasse_persoon
    get
        return _persoon
    end get
    set(value as klasse_persoon)
        _persoon = value
    end set
end property



Dit beginnertje wist zelfs niet dat het een sub new moest gebruiken. Mijn grootste probleem is dat deze oefening zich basseerd op een vorige oefening van personen en ik kom er niet wat ik waar moet zetten.
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 18:17
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
Probeer je sub new dan al eens te maken op de manier die ik gaf in die andere topic. Daar zie je hoe ik het doe:

Visual Basic code:
public sub new (byval naam as string, byval voornaam as string, ...)


uiteraard met de juiste types voor uw variabelen Wink
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
saarOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 18:52
Junior Developer


Geregistreerd op: 05-dec-2007
Berichten: 81

Status: Offline
ArComAr schreef:
Probeer je sub new dan al eens te maken op de manier die ik gaf in die andere topic. Daar zie je hoe ik het doe:

Visual Basic code:
public sub new (byval naam as string, byval voornaam as string, ...)


uiteraard met de juiste types voor uw variabelen Wink


Dit heb ik er van gemaakt, ik denk dat ik nog wat moet veranderen want er zitten nog fouten in.
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 19:21
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
geef hem dan eens, dan zal ik eens kijken.
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
saarOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 19:41
Junior Developer


Geregistreerd op: 05-dec-2007
Berichten: 81

Status: Offline
Visual Basic code:

Public Class lijst
    Dim Persoon As klasse_personen
    Dim personenlijst As List

    Public Sub New(ByVal persoon As klasse_personen)

    End Sub
    Private Sub cboPersonen_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPersonen.SelectedIndexChanged
        Dim index As Integer = cboPersonen.SelectedIndex
        Dim form As New frmPersoon(personenlijst.items(index))
        form.ShowDialog()
        cboPersonen.Items.RemoveAt(index)
        cboPersonen.Items.Insert(index, personenlijst(index))

        Dim persoon1 As New klasse_personen("123", "Sara", "Vanen utte", "meeregem 66", "093709080", "02/08/1987", "vrouw")
        Dim persoon2 As New klasse_personen("456", "Robbe", "Dobbe", "meergem 68", "089897654", "08/10/90", "man")
    End Sub
    Private Sub opvullen_combobox()
        For Each p As klasse_personen In Personenlijst
            cboPersonen.Items.Add(p_naam & " " & p_voornaam)
        Next
    End Sub
    Public Sub New(ByVal p_id As String, ByVal p_naam As String, ByVal p_voornaam As String, ByVal p_adres As String, ByVal p_Geboortedatum As String, ByVal p_Telefoonnummer As String, ByVal p_geslacht As String)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
    End Sub
End Class

Visual Basic code:

Public Class klasse_personen
    Dim p_id As String
    Dim p_naam As String
    Dim p_voornaam As String
    Dim p_adres As String
    Dim p_Telefoonnummer As String
    Dim p_Geboortedatum As String
    Dim p_geslacht As String
    Public ReadOnly Property id() As String
        Get
            Return p_id
        End Get
    End Property
    Public ReadOnly Property naam() As String
        Get
            Return p_naam
        End Get
    End Property

    Public ReadOnly Property voornaam() As String
        Get
            Return p_voornaam
        End Get
    End Property

    Public ReadOnly Property adres() As String
        Get
            Return p_adres
        End Get
    End Property
    Public ReadOnly Property telefoonnummer() As String
        Get
            Return p_Telefoonnummer
        End Get
    End Property
    Public ReadOnly Property Geboortedatum() As String
        Get
            Return p_Geboortedatum
        End Get
    End Property
    Public ReadOnly Property Geslacht() As String
        Get
            Return p_geslacht
        End Get
    End Property
End Class

Visual Basic code:

Public Class frmPersoon

    Private Sub btnToon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToon.Click
        Dim f2 As Form2
        Dim geslacht As String

        If RdbVrouw.Checked = True Then
            geslacht = "vrouw"
        ElseIf RdbVrouw.Checked = True Then
            geslacht = "man"
        End If

        f2 = New Form2(CStr(txtNaam.Text), CStr(txtVoornaam.Text), CStr(txtAdres.Text), CStr(txtGeboortedatum.Text), CStr(txtTelefoon.Text), CStr(geslacht))
        f2.ShowDialog()
    End Sub
End Class



Laatst aangepast door saar op 30 apr 2008 - 19:25, in totaal 1 keer bewerkt
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 19:58
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
mag ik een beetje uitleg vragen? Embarassed
1. je class lijst, dit is het formulier met alle namen in een listbox (veronderstel ik)?
2. klasse_personen spreekt voor zich.
3. frmPersoon, is dit het formulier dat de gegevens van een persoon toont?
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
saarOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 20:17
Junior Developer


Geregistreerd op: 05-dec-2007
Berichten: 81

Status: Offline
Maak een nieuw project Personen.
Maak een klasse persoonn met de volgende gegevens: id, voornaam, geslacht, adres, telefoon en geboortedatum. Schrijf een programma waarmee je jouw gegevens toont in een scherm.

Schrijf nu een programma waarbij tijdens het opstarten een generische lijst met een aantal personen objecten wordt gevuld; vervolgens worden de namen van deze personen getoond in een list box van een eerste formulier. Als je een naam kiest in de list box wordt een tweede formulier geopend met de gegevens van die persoon. Voorzie 2 knoppen Cancel en OK. Bij het klikken op de OK knop worden de gewijzigde gegevens bewaard zolang het programma loopt.
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 20:24
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
Kzal eerst mijne preek weer eens geven Razz

Kben het programma zelf ffkes aan het maken, dan ben ik zeker van men stuk.

het hoofdformulier laat ik even buitenbeschouwing.

in de klassepersonen:

je hebt allemaal "readonly properties" dus je kan ze alleen gaan lezen. Als je nu een aanpassing wil doen, dan gaat dit niet gemakkelijk. Je gaat eerst de huidige waarde moeten wegdoen uit de lijst, om dan een nieuw item toe te voegen aan de lijst. Je kan dus best gewoon gebruik maken van properties (zonder die readonly). Dan heb je een get- en een setter.

voor het 2de formulier:

je voegt dus een nieuwe persoon toe aan de lijst, dus je past de persoon niet aan. Aangezien de geselecteerde persoon moet aangepast kan je best een byref referentie maken in de sub new. Je hebt de sub new in het hoofdformulier geplaatst, maar ik bedoelde eigenlijk van deze te plaatsen in het 2de formulier. Moest je leerkracht iets hebben tegen die sub new, dan zeg je maar dat dat is om publieke variabelen uit te sparen Wink

Ik post direct hier een goede oplossing.


ohja, en aanmaken van de personen lijst doe je best in de form_load van je hoofdformulier. Dan wordt die aangemaakt bij het opstarten. Nu doe je dit na een selectedindex changed event, en dan wordt die elke keer toegevoegd wanneer er een naam gekozen wordt. Bijgevolg krijg je dubbele namen in je lijst.

Opvullen van de combobox gaat ook op een vele simpelere manier dan jij nu doet, en ook het gebruik van het selectedindexChanged event gaat vele makkelijker, maar dat ge je in de oplossing moeten zien
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
ArComArOffline
Onderwerp: Re: beginnerke in nesten (generiche lijst)  BerichtGeplaatst: 06 dec 2007 - 21:04
Moderator


Geregistreerd op: 24-jul-2006
Berichten: 3725
Woonplaats: Westerlo
Status: Offline
Hey Saar, hier kan je je oplossing vinden. Ik heb er speciaal voor u een aantal speciallekes in gestoken Wink

http://arcomar.sin.khk.be/VBiB/generische%20lijst.rar

oplossing komt ook in de downloads te staan.

Als je het startupform wisselt tussen "lijst" en "startupform2", dan kun je 2 verschillende manier van gebruik van geboortedatum zien.
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
Berichten van afgelopen:     
Ga naar:  
Tijden zijn in GMT + 1 uur
Plaats nieuw bericht   Dit onderwerp is gesloten. Het plaatsen of bewerken van berichten is niet mogelijk
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
PNphpBB2 © 2003-2007 
 

 
Postnuke - ADODB Database - PHP 4/5 - pnPhpBB2 - Hosting bij Openminds
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno 21-12-2000)
vbib.be gestart op 1/03/06 (extra vanaf 1/09: vbnet.be en vbdotnet.be)
VBiB is gerelateerd met wintips.be

Nieuwsbrief RSS Feed: backend.php