Syntax pagina "disablen"van Tabbesturingselement

  • Onderwerp starter Onderwerp starter IsR
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

IsR

Gebruiker
Lid geworden
2 jul 2015
Berichten
94
Goedendag,

Ik heb een formulier met daarop een tabbesturingselement met 9 tabs/pagina's.
Nou wil ik op basis van de inlognaam van een gebruiker (die wordt opgeslagen in een tekstveld op een ander formulier) een bepaalde pagina disablen".
In dit voorbeeld heet deze pagina met pagina-index = 6, "documenten") . De tab moet dus wel zichtbaar blijven, maar zgn. "greyed-out"/niet-aanklikbaar worden.
Mijn tabbesturingselement zelf heet: TabContactpers


De syntax die ik nu heb, zorgt er voor dat mijn hele tabbesturingselement verborgen wordt, dat is nou ook weer niet de bedoeling.

Code:
Private Sub Form_Open(Cancel As Integer)
If Forms.fLoginscherm.txtUserLoggedIn.Value = "gebruiker1" Then
   Forms.fContactpersonen_v2.documenten.Enabled = False
Else
   Forms.fContactpersonen_v2.documenten.Enabled = True
End If
End Sub

Wie kan me uit de brand helpen?
Alvast bedankt.
 
Goed nieuws of slecht nieuws, dat mag je zelf beoordelen :). Een pagina van een tabblad kun je niet uitschakelen. Het is ook eigenlijk niks; gewoon een kadertje om wat objecten. Je hoeft een veld dat op een tabblad staat ook niet anders aan te roepen; het blijft gewoon op het formulier staan. De enige oplossing is dus: alle inhoud op het tabblad uitschakelen/inschakelen. Gaat het om een subformulier dan is dat nog wel te doen, gaat het om losse objecten, dan heb je wat meer code nodig.
Overigens vind ik het wel zo netjes om een tabblad te verbergen als een gebruiker er niks op mag. Tenzij het om gegevens gaat die wel gezien moeten kunnen worden. Dan zit er weinig anders op dan de objecten uit te schakelen. Met slimme naamgeving is dat overigens ook met weinig code prima te doen.
 
Beste Octafish,

Op het tabblad staat een subformulier waar de objecten op staan.
Dus dat subformulier zou ik kunnen verbergen.
De code krijg ik alleen niet goed:

Code:
Private Sub Form_Open(Cancel As Integer)
If Forms.fLoginscherm.txtUserLoggedIn.Value = "Gebruiker1" Then
   Me.fSubformulier_tDocumenten.Visible = False
Else
   Me.fSubformulier_tDocumenten.Visible = True
End If
End Sub
 
Misschien moet je even uitleggen wat je code precies doet. Zo zie ik een regel
Code:
If Forms.fLoginscherm.txtUserLoggedIn.Value = "Gebruiker1" Then
waarvan ik me afvraag of je daar het formulier mee bedoelt waar het subformulier op staat, of is dat een eerder formulier waarmee je alleen maar inlogt? In het laatste geval is dan de vraag: staat dat formulier nog wel open?
 
Octafish, een nadere uitleg:

formulier "fLoginscherm" is een formulier waarmee je alleen inlogt. De gebruikersnaam waarmee wordt ingelogd, wordt vastgelegd in het (verborgen) veld txtUserLoggedin
Het formulier blijft na inloggen open, maar verborgen (visible = false).
Na inloggen verschijnt een menuformulier; fHoofdmenu, met daarop een aantal knoppen.
Als je op dit menuformulier op de knop contactpersonen (knpContactpersonen) klikt, opent het formulier Contactpersonen (waarop het tabbesturingselement dus is geplaatst met op de tab "Documenten" het subformulier "fSubformulier.Documenten".
Ook het formulier fHoofdmenu blijft open, maar verborgen.

Als het formulier Contactpersonen opent heb ik in het form_open-event van dit formulier, de eerdere code gezet.
Er wordt dus gekeken naar de waarde van het veld txtUserLogged in van het nog openstaande, maar verborgen login-formulier, en afhankelijk van die waarde moet het subformulier op de tab documenten wel of niet verborgen/geblokeerd worden.

Verduidelijkt dit iets?

Even een aanvulling:
Ik geloof dat ik inmiddels een alternatieve oplossing heb gevonden door het verbergen van de tab "documenten". Dat werkt nu wel.
Als gebruiker1 uit dit voorbeeld inlogt, wordt de tab "documenten" simpelweg niet getoond.
Als bijv. gebruiker2 inlogt is tab "documenten" wel gewoon zichtbaar.

Zal het item daarom op opgelost zetten, aangezien ik ook antwoord heb gekregen op mijn initiële vraag of een tab wel of niet is te "enablen".
Bedankt weer voor het meedenken.
 
Laatst bewerkt:
Dat was ook mijn eerste antwoord: het tabblad verbergen :). Op je inlogprocedure kun je volgens mij nog wel een verbeterslag maken:
formulier "fLoginscherm" is een formulier waarmee je alleen inlogt. De gebruikersnaam waarmee wordt ingelogd, wordt vastgelegd in het (verborgen) veld txtUserLoggedin
Het formulier blijft na inloggen open, maar verborgen (visible = false).
Als je bij het inloggen de gebruikersID vastlegt in een TempVar, kun je die vervolgens overal gewoon aanroepen. Het formulier kun je dan dus gewoon sluiten.
Code:
    TempVars.Add "sUser", Environ("UserName")
    MsgBox TempVars!sUser
Het leuke daarvan is: die Tempvars kun je ook gewoon in queries gebruiken, dus ze zijn erg handig.
 
Laatst bewerkt:
Over het tabblad ja, dat is ook zo. Had ik in eerste instantie dus verkeerd geïnterpreteerd, sorry :o.

Waar plaats je die "TempVar" code, in het inlogformulier?
En hoe roep je die vervolgens op een ander moment weer aan? (bijv. bij het uitloggen?).
 
De declaratie van de Tempvars kun je overal doen, dus op elk willekeurig formulier, of wanneer je ze nodig hebt. Een tempvar blijft gedurende de hele Access sessie actief en beschikbaar; dat betekent dat je hem kun vullen met andere waarden als dat nodig is, of leegmaken. Je mag een Tempvar maar één keer declareren onder dezelfde naam; wil je hem kwijt, dan moet je hem dus eerst verwijderen. Daarna kun je hem weer opnieuw aanmaken. Dat laatste is niet de handigste manier als je de inhoud wilt vervangen, want dat kun je gewoon doen bij een bestaande TempVar. Voordat je dat doet, zou ik dan wél eerst controleren of de tempvar bestaat: zo niet, dan moet hij uiteraard worden aangemaakt.

In jouw geval zou ik de User dus afvangen op het inlogformulier, en gelijk vullen.
 
Oké Octafish,

Ik houd 'em in gedachten als ik verder ga met het ontwikkelen van de "user"-structuur zeg maar.
Voor nu maak ik eerst het onderdeel "tabblad"besturingselement af.
Ik sluit dit topic en als ik er bij de gebruikers straks, ondanks je tip, niet uitkom, zal ik een nieuw topic starten (als ik geen waardevolle info elders op helpmij.nl vind :thumb:).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan