Focus wegnemen of verplaatsen

Status
Niet open voor verdere reacties.

fmeca

Gebruiker
Lid geworden
7 sep 2009
Berichten
95
Hoi,

De volgende hersenbreker dient zich aan.

Ik heb in een formulier met diverse sub en sub-sub formulieren een voorwaarde, waarbij sub en sub-sub formulieren afhankelijk van deze voorwaarde wel of niet getoond worden tijdens bladeren.

Dit werkt goed, hetzij dat ik na bewerken van het volledige formulier en daarna bladeren naar de volgende record, de foutmelding krijg "U kunt een besturingselement dat de focus heeft niet verbergen". Ik snap het probleem. De focus ligt nog op een veld in één van de sub-sub formulieren.

Vraag hoe kan ik de focus vóór het verbergen van het formulier wegnemen of verplaatsen naar het 1e veld in het hoofdformulier, onafhankelijk van waar de focus op dat moment ligt?

Ik heb al diverse Setfocus commando's geprobeerd maar ik kom er niet uit..

Onderstaand de code waarbij de foutopsporing in het hoofdformulier blijft hangen;

If Forms!Form_Onderhoudsconcept.Form.ent_TypicalSel <> 0 _
Then
'Verberg subform
Me!Subform_Typicals.Form.Subform_FuncStor.Visible = False
Else
'Toon subform
Me!Subform_Typicals.Form.Subform_FuncStor.Visible = True
End If
 
Volgens mij moet dat de volgende code zijn:

Code:
Forms!Hoofdform.Form.txtHoofdvak.SetFocus

Hoofdform = naam hoofdformulier
txtHoofdvak = naam tekstvak

Aanvulling:
Als de focus op het hoofdformulier zou zitten, is het volgende voldoende:
Code:
Me.txtHoofdvak.SetFocus

Meer info:
MVPS setfocus
 
Laatst bewerkt:
Volgens mij moet dat de volgende code zijn:

Code:
Forms!Hoofdform.Form.txtHoofdvak.SetFocus

Hoofdform = naam hoofdformulier
txtHoofdvak = naam tekstvak

Aanvulling:
Als de focus op het hoofdformulier zou zitten, is het volgende voldoende:
Code:
Me.txtHoofdvak.SetFocus

Meer info:
MVPS setfocus

Hoi Greenery,

Bedankt voor je reactie.
Ik heb jouw oplossing ook al geprobeerd maar krijg hierbij telkens de foutmelding,(fout 438, tijdens uitvoering)" Deze eigenschap of methode wordt niet door het object ondersteund"
ZIe onderstaande code.

In de code wil ik dus de Focus verplaatsen naar het eerste veld op het hoofdformulier, het maakt niert uit waar de focus op dat moment ligt.

If Forms!Form_Onderhoudsconcept.Form.ent_TypicalSel <> 0 _
Then
'Verberg subform
Forms!Form_Onderhoudsconcept.Form.ent_Systeem.SetFocus 'verplaats Focus naar 1e veld op hoofdformulier
Me!Subform_Typicals.Form.Subform_FuncStor.Visible = False
Else
'Toon subform
Me!Subform_Typicals.Form.Subform_FuncStor.Visible = True
End If


De code waar ik deze fout niet bij krijg is:

Forms!Form_Onderhoudsconcept.Form.SetFocus

Echter dit werkt blijkbaar niet. want ik krijg hierbij nog steeds de oorspronkelijke fout.
"U kunt een besturingselement dat de focus heeft niet verbergen" (fout 2165)

PS Als ik het document lees, van jouw link, krijg ik de indruk dat ik een soort "Case" moet maken op te bepalen waar de focus ligt. en dan per (sub)(sub)formulier de focus verplaatsen.
 
Kun je deze variant eens proberen?

Code:
If Form_Onderhoudsconcept.Form!ent_TypicalSel <> 0 Then
	'Verberg subform
	Form_Onderhoudsconcept.Form!ent_Systeem.SetFocus 'verplaats Focus naar 1e veld op hoofdformulier
	Subform_Typicals.Form!Subform_FuncStor.Visible = False
Else
	'Toon subform
	Subform_Typicals.Form!Subform_FuncStor.Visible = True
End If
 
Kun je deze variant eens proberen?

Code:
If Form_Onderhoudsconcept.Form!ent_TypicalSel <> 0 Then
	'Verberg subform
	Form_Onderhoudsconcept.Form!ent_Systeem.SetFocus 'verplaats Focus naar 1e veld op hoofdformulier
	Subform_Typicals.Form!Subform_FuncStor.Visible = False
Else
	'Toon subform
	Subform_Typicals.Form!Subform_FuncStor.Visible = True
End If

THX
Dit werkt helaas ook niet, "Form_Onderhoudsconcept" is het hoofdformulier, ent_Systeem het 1e veld. In jouw code wordt Form_Onderhoudsconcept als een variabele gezien die niet is gedeclareerd.
Vervolgens heb ik hier een 'Form.', 'Form!' en 'Me.', 'Me!' geprobeerd. Dit helpt allemaal niet.

Handmatig heb ik toen eens bewust de focus naar het 1e veld op het hoofdformulier geplaatst. Dan werkt het blijkbaar ook niet.
Samengevat: Als ik het hoofdformulier verlaten heb, naar een subform., kan ik niet meer naar de volgende record gaan.

PS ik heb de code ook nog eens geplaatst bij een van de velden in een sub-subformulier, bij verliezen van de focus. Echter zonder resultaat.

Misschien begrijp ik het begrip focus niet goed. Maar ik zie het zo; als de cursor een een bepaald veld staat ligt de focus op dit formulier en veld.

We worstelen verder!!!
 
Op welke plaats wordt de If uitgevoerd?
Als de focus op het moment van uitvoer op het tweede subform ligt, kun je dit ook nog proberen:

If Me.Parent.Parent!ent_TypicalSel <> 0 Then

etc.
 
Op welke plaats wordt de If uitgevoerd?
Als de focus op het moment van uitvoer op het tweede subform ligt, kun je dit ook nog proberen:

If Me.Parent.Parent!ent_TypicalSel <> 0 Then

etc.

De if staat in 'current form' van het hoofdformulier. Deze werkt goed.
Het hoofdformulier heeft sub formulier tot op 5 niveaus, dus sub,sub,sub,sub,subformulier.
De bedoeling is dat where-ever de focus de ligt, op het moment van bladeren met een button 'next reccord' in het hoofdformulier de if wordt uitgevoerd en a.h.v. deze voorwaarde vanaf het 2e subformulier alle subs al dan niet worden getoond.

PS zolang ik in het hoofdformulier blijf, werkt alles goed. Echter zo gauw de focus op een sub-formulier komt of is geweest begint het probleem. Zelfs als ik daarna weer terug kom in het hoofdformulier.
Is er een code die de focus wegneemt (clearfocus)? Zodat ik dezelfde situatie krijg als bij het openen van het hoofdformulier?
 
Laatst bewerkt:
Opgelost

Door het 'If'-statement in het eerste sub-formulier (Current-form) op te nemen is het probleem opgelost.
Het 2e subformulier moest afhankelijk van de 'If' wel of niet zichtbaar zijn.

Bedankt voor jullie reacties!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan