ForeColor van het actuele record wijzigen

Status
Niet open voor verdere reacties.

Sytse1

Gebruiker
Lid geworden
9 aug 2007
Berichten
584
Office versie
miDer
In een subform worden de records in een Doorlopend formulier getoond.
Er worden maar vier velden getoond in 3 velden kan wat ingevuld worden.
Zodra het record de focus krijgt wil ik dat de letters en cijfers van het actuele record rood worden getoond.
Alleen het acturele record moet wijzigen.
Maar steeds wijzigt in alle records de opmaak.
b.v. met Me.Veld1.ForeColor = vbRed wordt van alle records de tekst rood.
Ik probeer het met de volgende vba code maar dan wordt toch in alle records de tekstkleur gewijzigd.
Wellicht is er een betere oplossing?

Code:
Dim curID As Integer
  curID = Nz(Me.Id, 0)
 If Me.Id = curID Then
        Me.Veld1.ForeColor = vbRed
    Else
        Me.Veld1.ForeColor = vbWhite
    End If
 
Dat kun je met een simpele formule wel oplossen en een kleine code bij de gebeurtenis <Bij aanwijzen>.
Stap 1: maak ergens een tekstvak dat je verbergt, in een koptekst of voettekst is prima. Noem die dan bijv. txtID.
Als je een Autonummerveld ID hebt, dan maak je vervolgens een Voorwaardelijke opmaak met deze formule:
Code:
[ID]=[txtID]
En op het formulier maak je deze code:
Code:
Private Sub Form_Current()
    Me.txtID = Me.ID
End Sub
En dat is alles. Eventueel dus de veldnamen aanpassen als jij andere sleutels gebruikt.
 
Beste Octafish,
Je oplossing heb ik volgens mij goed geïmplementeerd.
Alleen wordt toch de tekst in alle records rood.
Zoals je voorstelde in het subform een tekstvak gemaakt en voor dit tekstvak de voorwaardelijke criteria ingesteld.
Zie jpg
vwopmaak.jpg

En bij aanwijzen (deze code ook geprobeerd als het veld in het record de focus krijgt en dan weggehaald bij, bij aanwijzen van het subform)
De tekst in het veld wordt rood, maar ook in alle andere records.
De bedoeling is, dat zodra de cursor in een veld van het record staat het veld DatumEnDag van dit actuele record dan een rode tekstkleur krijg.
Zodra de cursor dit record verlaat wordt de tekstkleur weer zwart.
In eerste instantie probeerde ik dit Bij kiezen en Bij verlaten va het veld maar ook dan worden alle records direct gewijzigd.
Het was zo eenvoudig dacht ik:shocked:
Wellicht heb je nog een andere oplossing.

Code:
Private Sub Form_Current()
Dim txtID As Integer
Me.txtID = Me.Id
  txtID = Nz(Me.Id, 0)
 If Me.Id = txtID Then
        Me.DatumEnDag.ForeColor = vbRed
    Else
        Me.DatumEnDag.ForeColor = vbBlack
    End If
End Sub
 
Zoals je voorstelde in het subform een tekstvak gemaakt en voor dit tekstvak de voorwaardelijke criteria ingesteld.
Heb ik dat gezegd? Volgens mij heb ik gezegd dat je een tekstvak moest maken, meer niet :).
Jouw code is een stuk langer als mijn code, en dat is dus ook fout. Wat ik niet helemaal helder heb gezegd, is dat je alle velden in de detailsectie moest selecteren en dáár de voorwaardelijke opmaak op moet instellen. En dan werkt het prima, want er is altijd maar één record dat het ID nummer heeft, en dat is het actieve record. Dat nummer wordt dus in het tekstvak gezet, en op basis daarvan worden alle velden opgemaakt.
 
Octafisch, lezen is ook een kunst.
Ik heb het dan ook verkeerd geïnterpreteerd.
Nieuwe ronde nieuwe kansen.
Maar opnieuw bedankt.
Ik ga het aanpassen en zal dan de vraag op opgelost zetten.
Groet,
Sytse
 
Doe dat laatste als het werkt :). Anders krijg je alsnog een voorbeeldje.
 
Octafish, graag je voorbeeldje.
Wat ik ook doe. Steeds zijn toch alle records aangepast:mad:
 
In dit bestandje zit een formulier met de voorwaardelijke opmaak. Kijk maar hoe het werkt. In fProjecten zit dezelfde code, maar omdat daar per keer 2 identieke ID's zitten, worden in dat formulier 2 records gekleurd. Dus dat kan ook.
 

Bijlagen

  • Samenvoegen.zip
    56,7 KB · Weergaven: 30
Bedankt.
Ga het vandaag snel bekijken.
 
Beste Octafish,
Jeh, het werkt eindelijk. Gewoon mijn eigen stomme schuld.
Goed lezen is het halve werkt.
Miijn fout was dat ik txtID = ID ipv ID = TxtID in de criteria had gezet.
Verder dat in de voorwaardelijke opmaak ik wel de kleur en achtergrond had moeten instellen.
Bedankt voor al je moeite.
Sytse
 
A=B is gelijk aan B=A, dus dat zou niet uit mogen maken. Maar als het nu wel werkt, is dat natuurlijk precies goed :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan