VBA-code layout access formulier

Status
Niet open voor verdere reacties.

fjvanlochem

Verenigingslid
Lid geworden
23 nov 2009
Berichten
61
Dames en Heren,

In een database bevinden zich een aantal formulieren waarop o.a knoppen en tekstvakken.
In een module een public function "opmaak" met daarin :
Public Function opmaak()
DoCmd.MoveSize 5000, 3000, 14000, 9000
End Function
om de plaats en de grote van het formulier te bepalen. Vanuit elke routine aan te roepen.

Ik wil deze public function "opmaak" uitbreiden met meer opmaakinstructies als achtergrondkleur van het formulier,
voorgrondkleur van het formulier
layout van de knoppen enz. enz.

Waardoor alle formulieren dezelfde layout krijgen door het aanroepen, vanuit de code van het formulier, van de public function "opmaak".

Suggestie zijn van harte welkom.

Liefst verwijzingen naar websites, cursussen, boeken enz.Engels is geen probleem maar het liefst in het Nederlands.

Is iemand bekend met een website met alleen informatie over Access BBA?

Bij voorbaat dank voor jullie moeite,

Floris van Lochem
 
Suggestie zijn van harte welkom. Liefst verwijzingen naar websites, cursussen, boeken enz.Engels is geen probleem maar het liefst in het Nederlands.
Zolang het maar externe bronnen zijn dus... Jammer, want in de Access cursus in de Handleidingensectie had je wellicht ook nog wel wat gevonden :).
Je kunt ook eens hier kijken:
http://utteraccess.com/forum/
http://www.lebans.com/toc.htm
http://allenbrowne.com/tips.html
http://access.mvps.org/access/

Ik zou overigens zelf nooit overstappen op een systeem dat 'on the fly' formulieren en rapporten opmaakt; waarom niet gelijk goed bouwen? Dit maakt je systeem er niet sneller en betrouwbaarder op. Nog afgezien van het feit dat het nogal lastig is om de gebruikte knopstijlen uit te lezen en te hergebruiken. Maar een ander font gebruiken heeft bijvoorbeeld ook invloed op de grootte van de tekstvelden die je nodig hebt; het ene font heeft nu eenmaal meer ruimte nodig dan het andere. En hoe ga je dat berekenen/instellen?

Ik zou dus eerder werken vanuit een standaard formulier dat ik dan vastleg als sjabloon. Kwestie van beginnen met een formulier met de layout die je wilt, en die vervolgens als sjabloon vastzetten in de opties. Elk volgend formulier wordt dan opgemaakt vanuit die sjabloon. Ben je in één keer klaar.

Maar goed, je functie is met een kleine aanpassing simpel uniform te maken. De crux daarbij is dat je het formulier als parameter meegeeft aan de functie. Dan krijg je zoiets:
Code:
Public Function opmaak(frm As Form)
     DoCmd.MoveSize 5000, 3000, 14000, 9000
    With frm
        .Details.BackColor = RGB(100, 150, 150)
        .InsideWidth = 20000
        For Each ctl In .Controls
            With ctl
                Select Case .ControlType
                    Case acLabel
                        If IsNumeric(.Tag) Then
                           .Left = iLinks + iPosH * (bLab + aHor)
                           .Top = iTop + iPosV * (hLab + aVer)
                        End If
                    Case acTextBox
                    Case acCommandButton
                End Select
                'etc..
            End With
        Next
    End With
          .
End Function
 
Ik zou overigens zelf nooit overstappen op een systeem dat 'on the fly' formulieren en rapporten opmaakt; waarom niet gelijk goed bouwen? Dit maakt je systeem er niet sneller en betrouwbaarder op. Nog afgezien van het feit dat het nogal lastig is om de gebruikte knopstijlen uit te lezen en te hergebruiken. Maar een ander font gebruiken heeft bijvoorbeeld ook invloed op de grootte van de tekstvelden die je nodig hebt; het ene font heeft nu eenmaal meer ruimte nodig dan het andere. En hoe ga je dat berekenen/instellen?

Ik zou dus eerder werken vanuit een standaard formulier dat ik dan vastleg als sjabloon. Kwestie van beginnen met een formulier met de layout die je wilt, en die vervolgens als sjabloon vastzetten in de opties. Elk volgend formulier wordt dan opgemaakt vanuit die sjabloon. Ben je in één keer klaar.

OctaFish,

Allereerst bedankt voor je snelle reactie,

De strekking van je antwoord is mij niet geheel duidelijk wat geheel komt doordat mijn kennis van Access VBA gering is.

Wat bedoel je met 'on the fly' maken van formulieren en rapporten?

Verder hoe maak je een sjabloon en zet je deze vast?

Wordt dit in de cursus Acces van HelpMij beschreven?

Met vriendelijke groet

Floris
 
Met 'on the fly' bedoel ik: een formulier opmaken/opbouwen zodra het geopend wordt. Een beetje zoals bij een lopend buffet de maaltijd wordt klaargemaakt waar je bij staat. Daarbij moet het formulier dus eerst worden geopend in de Ontwerpfase, dan moeten de opmaak aspecten worden aangepast, dan opslaan en sluiten en dan weer opnieuw (met de nieuwe opmaak) openen. Dat kost allemaal extra tijd. En heeft m.i. alleen maar zin als het formulier er bij elk gebruik anders uit moet zien. Anders vind ik het maar een zinloze exercitie. En dan nog: ik zie zelf eerlijk gezegd het nut er niet van om een formulier continue anders op te maken. Tenzij je medewerkers hebt die snel verveeld zijn, en die je op die manier wakker probeert te schudden :D.

Als je een formulier als sjabloon wilt gebruiken, maak je eerst een leeg formulier aan. Vervolgens open je de eigenschappen, en klik je op een knop die je op wilt maken, bijvoorbeeld de knop Label. Doorgaans wil je, als je dat doet, een label op het formulier zetten, maar dat doe je nu niet: je gaat nu naar de eigenschappen van het labelobject en daar pas je alles aan wat je wilt veranderen. Dus bijvoorbeeld de plaats van het label, het lettertype, de grootte van een standaard labelvak etc. De hele mikmak dus. Vervolgens klik je op de volgende knop, (bijvoorbeeld tekstvak) en doe je hetzelfde: geen tekstvak op het formulier zetten, maar alleen de eigenschappen aanpassen. En zo loop je alles af wat je op het formulier gebruikt.
Heb je de knoppen gehad, dan kun je de formuliereigenschappen aanpassen, zoals de kleur van de koptekst, detailtekst etc. Ook weer tot je alles hebt gehad wat je aan wilt passen. Als het goed is, eindig je dan met een formuiler waar niks op staat aan objecten, maar waarvan wel de kenmerken zijn ingesteld. Dat formulier sla je nu op, bijvoorbeeld onder de naam fTemplate.
Nu ga je naar <Opties>, <Ontwerpfuncties voor objecten> en typ je in het tekstvak <Formuliersjabloon> de naam van je sjabloon, in dit geval dus fTemplate. En dat is het. De volgende keer dat je een nieuw formulier maakt, heeft dat de eigenschappen die je zojuist hebt ingesteld.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan