anoniem Geplaatst: 15 februari 2005 Delen Geplaatst: 15 februari 2005 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 Quote Link naar reactie
anoniem Geplaatst: 15 februari 2005 Auteur Delen Geplaatst: 15 februari 2005 Ummm, in de Load event van het formulier Picture2.picture = ... aanroepen? Quote Link naar reactie
anoniem Geplaatst: 15 februari 2005 Auteur Delen Geplaatst: 15 februari 2005 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() Quote Link naar reactie
anoniem Geplaatst: 15 februari 2005 Auteur Delen Geplaatst: 15 februari 2005 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 Quote Link naar reactie
anoniem Geplaatst: 16 februari 2005 Auteur Delen Geplaatst: 16 februari 2005 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 Quote Link naar reactie
anoniem Geplaatst: 16 februari 2005 Auteur Delen Geplaatst: 16 februari 2005 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 Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen