Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

VB 6.0 - Bladeren in database met plaatjes.

None
6 antwoorden
  • Beste allemaal

    Ik heb aan een datacontrol een database hangen.
    Bij elk record zit een plaatje.
    Ik heb een cmdButton voor vooruit en terug bladeren.
    Als ik blader dan krijg ik het juiste plaatje erbij. :D
    Maar op het moment dat ik het programma start heb ik het
    eerste record op mijn scherm, maar dan nog geen plaatje, want
    daarvoor moet je eerst met de cmdButton hebben gebladerd.
    Maar dat is natuurlijk niet netjes.
    Op het moment van opstarten moet bij de eerste record dus ook
    direct het plaatje in de picturebox verschijnen die er bij hoort.


    Hebben jullie daar een oplossing voor ?


    [b:129b7f58a6]Code vooruitbladeren:[/b:129b7f58a6]
    [code:1:129b7f58a6]
    Private Sub Command3_Click()
    Data1.Recordset.MoveNext
    If Data1.Recordset.EOF Then
    MsgBox "Already at end of recordset!"
    Data1.Refresh
    Data1.Recordset.MoveLast
    End If
    Picture2.picture = LoadPicture(Text4(7).Text) ' pad en naam plaatje.
    End Sub[/code:1:129b7f58a6]


    grt, FX
  • Ummm, in de Load event van het formulier Picture2.picture = … aanroepen?
  • Dat zou inderdaad wel werken, de recordset naar het eerste record laten gaan (recordset.MoveFirst) en dan het plaatje laten openen dat daarbij hoort in de Form_Load()
  • Hoi


    [code:1:15f6b86fac]
    Private Sub Form_Load()
    Picture2.picture = LoadPicture(Text4(7).Text)

    etc

    [/code:1:15f6b86fac]

    Bovenstaande code werkt niet. In de database zit een textveld
    met het pad en naam van het plaatje. Dus bij het bladeren wordt
    de text van text4(7) gebruikt voor het inlezen van de locatie. Ik denk
    dat Form_load() zich afspeelt voor data1 control is ingelezen, of zoiets ?

    grt, FX
  • Ik denk dat je de form_activate event moet gebruiken.
    Echter als je binnen dezelfde vb applicatie meerdere forms gebruikt en van form naar form springt wordt deze steeds opnieuw aangeroepen.
    Je kan dan boven in de form een declaratie maken van bv

    Private start as boolean

    private sub form_initialize()
    'initialiseer start bij maken van form
    me.start = False

    End sub

    en dan

    private sub form_activate()
    'Alleen bij aanroepen eerste maal
    If Not me.start then
    Picture2.picture = LoadPicture(Text4(7).Text)
    start = True
    Endif

    Succes
    Jan Willem
  • Hoi Jan Willem

    Ik ga het uittesten, ik kom er nog op terug.

    Inmiddels ook de volgende tip gekregen:

    [b:0e599e6b3a]Een truukje is van het Paint event te gebruiken in plaats van het Load event. Je mag deze code dan wel enkel de eerste keer laten uitvoeren en niet iedere keer als de form gepaint wordt.[/b:0e599e6b3a]
    [code:1:0e599e6b3a]
    Private Sub Form_Paint()
    Static bHasAlreadyRun As Boolean

    If Not bHasAlreadyRun Then
    Data1.Recordset.MoveFirst
    Picture2.Picture = LoadPicture(Text4(7).Text)
    bHasAlreadyRun = True
    End If
    End Sub
    [/code:1:0e599e6b3a]


    Ik ga kijken wat voor mij de beste optie is.

    grt, FX

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.