|
Welke events kan een Form allemaal hebben. On Open The form is opened (can be cancelled) On Close The form is closed On Load The form loads On Unload The form unloads (can be cancelled) On Click A section of the form or a control is clicked, once, by the mouse On Dbl Click A section of the form or a control is clicked, twice, by the mouse On Current A record is loaded into the form (think of it as 'On Current Record') On Dirty The user makes any modification to the current record Before Update Before the update is committed to the form or control (can be cancelled) After Update A form record or an individual control is updated On Change A value on a control is modified On Timer The TimerInterval Property reaches a specified value Not In List The user enters a value that is not in a combo box On Mouse Move The mouse is moved over a section of the form or a control On Enter The user physically places cursor into the control. This can beaccomplished with the Tab or Enter key, or by a click of the mouse Form_Open() Treedt op als een form geopend wordt. Zou in theorie maar ??n keer moeten gebeuren, maar het kan wel eens zijn dat het vaker gebeurd. In de OpenForm methode van het DoCmd object is een prarameter OpenArgs hiermee kan je eens string naar de te openen form doorsturen. De enige vereiste is dat het een string moet zijn. DoCmd.OpenForm "frm2", acNormal, OpenArgs:="Dit" Door dan in het te openen formulier een testje te doen: If Len(Me.OpenArgs) > 0 Then Me.txt1 = Me.OpenArgs Else Cancel = True End If OnTimer() Hier kan je instellen dat er om de x miliseconden iets moet gebeuren. Een mogelijke toepassing is om, om de zoveel minuten te kijken of er een instelling is in een tabel (settings door de applicatie beheerder) of men er uit moet voor onderhoudt. OnClick() Dit gebeurd als je op de muisknop drukt. De linker wel te verstaan. In windows heet dit de primairy click event. Omdat linkshandigen het ook om kunnen draaien. Je kan bijvoorbeeld een knop maken die een form opend met details gegevens. Eerst controleren of het niet gaat om een nieuw record anders heeft het geen zin om dit formulier te openen: Click event: If NOT Me.NewRecord then DoCmd.OpenForm ?FrmOrder?, WhereCondition:=?KlantenID? & TxtCustomerID End if In de where conditie wordt bepaald welk detail wordt weergegeven op het formulier. Sommige mensen noemen het een filter een ander een querie. OnCurrent() Deze gebeurtenis treedt op elke keer als er record wordt aangeroepen. Hier een procedure inzetten zal dus invloer hebben op de prestaties. Doe dit dus met mate. Er akn bijvoorbeeld wel code ingezet worden die na elke bewerking, en als de gebruiker naar een volgend record gaat om de gegevens weer read-only te maken zodat de gebruiker op de EDIT knop moet drukken om bewust een verandering aan te brengen in de gegevens. Eerst wordt er gekeken of de gebruiker in een nieuw record bezig is, en zo nee dan de knop op disabled zetten en de mogelijkheid tot editen uitzetten. Dim Fstatus As Boolean Fstatus = Me.NewRecord Me.AllowAddits = Fstatus Me.AllowDeletions = Fstatus cmdEdit.Enabled = Not Fstatus Dit zou dan gebeuren elke keer als een gebruiker naar een ander record zou gaan. (Current). Elke nieuwe record wordt toegevoegd aan NewRecord Property en kan bereikt worden door in acces in de menubalk op nieuw record te klikken, of door naar ??n verder dan de laatste record te gaan. De NewRecord geeft dus aan of de gebruiker op een nieuw record zit, als dat zo is dan moet deze aanpassingen en deletes kunnen doen. Als ze dat niet zijn, zijn ze bezig met een bestaand record en moeten de wijzigings mogelijkheden beperkt worden. Met AllowDeletion en AllowEddits zijn form Property die bepalen of een gebruiker wijzigingen danwel deletes kan doen. AllowAddittions is een Property die bepaald of er een nieuw record toegevoegd kan worden. DataEntry is een Property die de form in een status brengtw aarbij de gebruiker alleen nieuwe records kan toeveogen of de records kan aanpassen die hij net toegevoegd heeft. BeforeUpdate() De plek om data te controleren voor opslaan. Deze gebeurtenis gebeurd voor een verandering wordt dorgevoerd en opgeslagen, de uitstekende plek dus om de ingevoerde data te controleren. Onderstaande controleerd of er data is ingevuld. Len geeft de lengte van de waardes die ingevuld zijn, als ??n ervan nul waarde heeft dan word de actie gestopt. If Len(txtNaam) * Len(TxtStraat) > 0 Then Cancel = MsgBox("Iz Nie Goed, gaan we niet doen", vbInformation) End If Before_Update heeft een cancel eigenschap en die kan getriggerd worden. Alles wat meer is dan 0 is true. En de gebruiker kan alleen op OK drukken dus dan krijgt cancel altijd meer dan 0 en word de update actie gecanceld. AfterUpdate() Dit gebeurt als een form word geupdate. Dus eerst is er het beforeupdate event, dan wordt er gesaved en als dat gebeurd is krijg je het afterupdate event. Zo kan je reageren op de nieuwe toegevoegde rij, of waarde. Je kan bijvoorbeeld de inhoudt van een tweede combobox op de waarde die het krijgt na een keuze in een eerste combobx. OnChange() Een verhaal over peformance en dat dit erg kan schelen door op een mdb te splitsen. Een van de redenen dat een database project traag word kan het zijn van subforms die veel verschillende data op moeten halen. Een mogelijkheid is dan de subforms op tabbladen ongebound laten tot ze gebruikt worden. Een subform heeft drie Propertys nodig om data te kunnen laten zien: 1. SourceObject: de naam van de subform die in de subformcontrol geladen moet worden. 2. Link Child Field: de naam van een veld op de subform die pvereenkomt met een vel op de mainform. 3. Link Master Field: de naam van een veld of (velden) op de main form die overeenkomt met een veld op de subform. Wanneeer een main form geladen wordt dan zal het bij het laden kijken naar een subform en als die er is, en de sourceobject bekijken, dan zal het alle procedures in het subform moeten worden gedraaid, als dat klaar is zal het de overige laatste te laden zaken van het main form doen. Dit wordt nogal traag dus. Dan wordt er een voorbeeld uitgewerkt waarbij dit on-the-fly kan een subform late bound gevuld kan worden, pas op het moment dat de gebruiker het nodig heeft. Staat op blz 295. NotInLIst() Als je gegevens in een combobox typt die niet in de lijst staan. Of dit kan is in combinatie met de LimitToList Property die bepaald of er alleen bij de lijst gebleven wordt, of dat er ook toegevoegd kan worden. NotInLIst heeft twee waarden waar mee gewerkt kan worden : NewData: Dit is de door de gebruiker ingevoerde waarde, waar dan mee gewerkt kan worden. Je kan hier naartoe schrijven, maar dan zal de waarde vervangen worden door de nieuwe waarde. Response: Hiermee wordt bepaald wat er moet gebeuren als de procedure wordt beeindigd. Aan het eind zou je hem in het begin van de procedure gelijk kunnen zetten aan acDataErrDisplay, en als de rest van de procedure nu gewoon lukt dan zou kan je hem gelijk zetten aan acDataErrAdded. De ParamArray procedure parameter is een parameter welke een array is, van het variant type (zoals alle arrays) en die elke hoeveelheid waardes kan hebben. Het is vergelijkbaar met de OpenArgs parameter van de form. Je kan dus van alles doorgeven wat je maar wilt. InClose() Gegevens wegschrijven en ophalen uit de Registry SaveSetting Wegschrijven van een Registry instelling. GetSetting Ophalen van een waarde GetAllSettings Geeft een lijst van waardes uit de Registry terug, die gemaakt zijn met savesetting. DeleteSettings Gooit ze weg. De Registry lijkt veel op de directory indeling in windows. In de basis map, kan je een applicatie map maken, en daarin de key namen, in de key namen komen dan de uiteindelijke waardes te staan.
|