Actief maken na ja/nee veld

Status
Niet open voor verdere reacties.

Systeempje

Gebruiker
Lid geworden
8 sep 2009
Berichten
149
Hoi allemaal,

Ik keek op een oude topic en daar kwam ik dit tegen, dit is precies wat ik wil. Aangezien dit een oude topic is, open ik een nieuwe, oude topics halen we niet graag naar boven.

Ik wil dus een veld zichtbaar/onzichtbaar maken nadat ik een vinkje heb geplaatst.

Ik heb deze code:
Code:
Private Sub janee3_Click()
If Me![janee3] = True Then
Me![vakje3].Visible = True
Else
Me![vakje3].Visible = False
End If
End Sub

Dit werkt, de gegevens van het ja/nee veld staan ook netjes in het tabel.
Maar zodra ik het formulier opnieuw open is het tekstvak altijd zichtbaar, ongeacht een vinkje of geen vinkje.

Ik de bijlage een voorbeeld..
(bijlage inmiddels verwijderd).
 
Laatst bewerkt:
Ik heb je db niet nodig voor dit antwoord:
Je moet de code ook nog gebruiken bij de gebeurtenis <Bij Aanwijzen> van het formulier.

Code:
Private Sub Form_Current()
   janee3_Click
End Sub
 
Bedankt werkt!
(hiermee worden de gegevens (nogmaals) netjes opgehaald uit de tabel.

Meerdere opties die je kunt gebruiken zijn natuurlijk Enabled (ingeschakeld) of Loked (vergrendelen). Hier staan meerdere waarde.

Nu kun je met Visible wel de zichtbaarheid instellen maar als een onderdeel niet zichtbaar is krijg je een lege plek op je formulier. Als iets zichtbaar is (of juist niet) kun je dan instellen dat het formulier zich aanpast aan de grote als er een lege plek ontstaat of een veld bijkomt?
 
Laatst bewerkt:
Dat kan, daarvoor moet je wel met VBA aan de slag.
Persoonlijk zou ik dit afraden, naar een gebruiker toe kan dit namelijk onrustig/verwarrend overkomen.

Grtz,

Tardis
 
Helaas, die optie is er niet. De enige optie die ik zo uit mijn hoofd zie, is de verticale positie van de onderliggende elementen aan te passen. Iets als dit:

Code:
If me.chkVeld = -1 Then
	Me.cmdAlles1.Top = 700
	Me.fraWordmerges.Height = 1200
	Me.chkEersteKeer.Top = 1700
	Me.lblEersteKeer.Top = 1700
Else
	Me.cmdAlles1.Top = 300
	Me.fraWordmerges.Height = 900
	Me.chkEersteKeer.Top = 1400
	Me.lblEersteKeer.Top = 1400
End If
En dat voor alle elementen die je wilt laten opschuiven.
 
Wellicht is het in deze situatie beter om te kiezen voor het enablen true or false van een veld.

Mocht er een situatie zijn waarbij een deel van het formulier zichtbaar dan wel onzichtbaar moet zijn, dan zou je kunnen kiezen om dat deel in de voettekst te plaatsen. Vervolgens kun je dan werken met het zichtbaar en onzichtbaar maken van de voettekst.

mvg
Charles
 
Juist, ik heb besloten het formulier gewoon een vast formaat te geven (niet aanpassen dus).

De eerste optie werkt wel, ik heb bijvoorbeeld een vakje "klaar voor facturatie". het veld "Facturingsdatum" wordt dan actief.

Maar ik heb nu ook een veld vervallen, met dit vakje wil ik alle velden uitschakelen als hij aangevinkt is.

Maar dit werkt niet, logisch want ik heb nu voor bepaalde velden 2x Enable gebruikt...
Als het ene selectievakje een tekstvak wil inschakelen wil de andere hem uitschakelen en andersom.

Kun je prioriteit instellen?
 
Laatst bewerkt:
Je prioriteit bepaal je a.d.h.v. de volgorde waarin je opties aan- of uitzet. Als je met de ene optie een (tekst of check) vak aanzet, en met de andere weer uit, dan blijf je natuurlijk bezig.
Als er verschillende keuzes zijn, die verschillende keuzemogelijkheden mogelijk moeten maken, dan kun je bijvoorbeeld de selectievakjes in een groepsvak zetten. Als je de vakjes een waarde geeft die steeds een veelvoud is van de vorige, kun je de totaalwaarde van het groepsvak gebruiken om bepaalde keuzes te activeren.
Voorbeeldje:
Stel dat je 5 verschillende opties wilt afvangen. Je maakt dan een groepsvak met 5 selectievakjes. Het eerste vakje geef je de waarde 1, het tweede 2, het derde 4, het vierde 8 en het vijfde 16.
Door de waarden van de selectievakjes op te tellen, komt er altijd een uniek getal uit. Als je bijvoorbeeld het tweede en het vierde vakje aanzet, levert dat de waarde 10 op. Dit getal is met geen andere combinatie te maken. Je weet dan precies welke velden je aan- en uit moet zetten.

Je de waarde van het frame af met een <Na Bijwerken>.

Code:
iCheck=Me.fraSelectie.Value
Select Case iCheck
      Case 1
            Me.txtVak1.Enabled=True
      Case 2
      Case 3
      Case 4
      Case 5
..... etc.
End Select

Het is wel enig puzzelen, met name als je veel combinaties af wilt vangen, maar het houdt het wel overzichtelijk. Met If- constructies heb je veel meer problemen, ook al omdat je dan prioriteitsproblemen gaat krijgen, zoals je al aangaf.
 
Klopt, bedankt voor de tip!

Echter als je een groepsvak maakt kun je maar 1 optie aanvinken en niet meerdere.
Je moet het in dan anders maken:

1. Factuur opgestuurd
2. Betaald
3. Factuur opgestuurd & Betaald

je gebruik dan 1, 2 of 3
(echter je kun ze altijd nog allemaal aanvinken, dit is heel goed oppassen, anders zitten ze elkaar in de weg)
 
Laatst bewerkt:
Nee, toch bedankt

Maar dan krijg je juist het zelfde probleem als 2 losse Ja/nee velden.
Dit had ik inderdaad al geprobeerd.
 
Laatst bewerkt:
Mijn eerdere antwoord is blijkbaar niet goed opgeslagen.... nieuwe poging dus!
De oplossing via een groepsvak had ik inderdaad niet moeten doen, want dat werkt hier niet. Ik greep iets te ver terug in mijn trucendoos, want ik gebruik de optie met de checkboxen zoals uitgelegd wel, maar niet in een optie-frame. Ik zette eerst de checkboxen neer met de waarden, en vervolgens de frame er omheen.... Is toch net iets anders!
Als je losse checkvelden gebruikt, met de waarden zoals aangegeven, dan kun je de check overigens wel doen, maar dan via een knop. Je telt dan eerst alle waarden van de checkboxen op:
iCheck=Me.chk1+Me.chk2+Me.chk3 etc.
De Select Case werkt dan verder zoals aangegeven.
 
Oke,

Ik ga hiermee aan de slag, echter heb ik al wel de keuzevakjes maar deze kan je dan geen waarde geven, zoals op de manier van de wizard groepsvak. Ook een frame eromheen lukt niet, het blijven dan losse knoppen.
 
Je kunt selectievakjes en radiorondjes altijd een waarde geven; kijk maar op het tabblad <Gegevens> van <Eigenschappen>. Het blijven inderdaad losse knoppen/objecten, maar dat maakt verder niet zoveel uit. Je kunt eventueel een actie hangen aan het MouseMove event van het frame, als je het op het frame wilt laten reageren, maar daar moet je wel mee uitkijken, want voor je het weet wordt je routine om de haverklap gedraaid...
 
Bedankt voor je antwoord,

Ik heb het nogmaals geprobeerd:

2 selectievakjes en vervolgens een frame eromheen met de optie groepsvak, zonder behulp van de wizard.

Bij eigenschappen --> gegevens van de selectievakjes kun je alleen maar kiezen voor:
  • Besturingselementbron
  • Standaardwaarde (dit is ja/nee ?)
  • Validatieregel
  • Validatietekst
  • Ingeschakeld
  • vergrendeld
  • Drie standen
Geen van deze opties werkt in dit geval.

Mag ik zo brutaal zijn of u een werkend voorbeeld heeft :o?
 
Laatst bewerkt:
Ik zal er vanavond naar kijken; heb vandaag weinig tijd overdag...
 
OctaFish,

Heeft u hier inmiddels al naar kunnen kijken?


Daarnaast heb ik nog een andere vraag:
Ik heb een los vinkvakje gebruikt om een afbeelding weer te geven.

Echter werkt deze code niet in het rapport, wel in het formulier.

Gebeurtenis bij het raport, bij aanwijzen is:
Code:
Private Sub Report_Current()
plaatje_vink_Click
End Sub
Gebeurtenis bij bij klikken in een raport, ook al kun je niet klikken
Code:
Private Sub plaatje_vink_Click()
If Me![plaatje_vink] = True Then
        Me![Afbeelding].Visible = True
        Else
        Me![Afbeelding].Visible = False
        End If
End Sub

Zelfde code werkt wel in het formulier, vreemd?
 
Laatst bewerkt:
Het regent, dus ik maak er wel even tijd voor ;)
 
Wat wil je in de bijgeleverde db zien? Er zit geen rapport in, en je checkboxen heten ook anders...
 
O,

Inmiddels is de database echt goed veranderd.
Ik heb een tabel met bestellingen (inc. factuurbedragen).

Wat ik wil laten zien is bijvoorbeeld een afbeelding zodra het vakje bij gereed zet.
Dit werkt in het formulier prima alleen niet bij het raport zoals ik al zei.

(Daarnaast blijft de vraag nog staan dat ik met verschillende vink vakjes iets uitzetten alleen somige overschrijven elkaar hiervoor moest ik zo groepsvak maken wat niet lukte, deze vraag wil ik niet laten vergeten).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan