OctaFish
Verenigingslid
- Lid geworden
- 6 feb 2009
- Berichten
- 42.038
Ik zal eens een poging wagen
Ad 1: je bent niet de eerste, en zult zeker niet de laatste zijn. Schrale troost vermoedelijk...
Ad 4: waarschijnlijk doe je iets verkeerd
Ad 5: die snap ik ook niet.... Misschien een gevolg van punt 4?
Ad 6: blond is geen kleur, maar een State Of Mind
Laten we het eens over puntje 3 hebben. En daar dan de code voor gebruiken die ik voor Criteriumvakje 1 heb gemaakt.
[/CODE]Private Sub txtCriteria1_Change()
1 strName = Screen.ActiveControl.Name
2 strTag = Screen.ActiveControl.Tag
3 strValue = Me.txtCriteria1.Text
4 CheckFilter strName, strValue
5 Me.txtCriteria1.SetFocus
6 Me.txtCriteria1 = strValue
7 Me.txtCriteria1.SelStart = Me.txtCriteria1.SelLength
End Sub[/CODE]
In regel 1, regel 2 en regel 3 worden respectievelijk de Naam van het tekstvak, de Info eigenschap van dat tekstveld en de ingetypte Tekst van dat tekstveld uitgelezen en in een variabele gezet.
Vervolgens wordt in regel 4 de procedure CheckFilter aangeroepen. Deze functie staat apart, en hij stelt de feitenlijke filtering samen. Die kan ik eventueel later nog wel uitleggen. Maar die is, zoals je al wel gezien zal hebben, een tikkeltje gecompliceerd...
Als de functie CheckFilter klaar is, gaat de procedure verder met regel 5: de focus terugzetten op het tekstvak. Want het maken van het filter heeft de focus verplaatst naar de andere tekstvakken.
Voor de zekerheid wordt het criterium veld gevuld met de tekst die al is ingetypt. Die was in regel 3 uitgelezen, en in een variabele gezet voor dit doel.
Als een tekstvak de focus heeft, is de tekst daarvan meestal geselecteerd. Dat schiet niet erg op als je wilt filteren op een aantal letters. Vandaar dat in regel 7 de cursor aan het eind van de tekstregel wordt gezet. En dat doe je dus met SelStart en Sellength: SelStart bepaalt de positie van de tekstcursor, en SelLength rekent uit hoeveel tekens er in het tekstvak staan. Typ je één letter, dan SelLength =1, en SelStart is dan ook 1. Heb je twee letters, dan verandert Sellength naar 2, en de startpositie dus ook. Met SelStart=SelLength zorg je er dus voor dat de cursor altijd achter de ingetypte tekst staat, zodat je kunt doortypen.
Laat je deze regel weg, dan moet je steeds op de juiste plek klikken voordat je verder kunt typen.
Hopelijk is het weer wat duidelijker?
Ad 1: je bent niet de eerste, en zult zeker niet de laatste zijn. Schrale troost vermoedelijk...
Ad 4: waarschijnlijk doe je iets verkeerd
Ad 5: die snap ik ook niet.... Misschien een gevolg van punt 4?
Ad 6: blond is geen kleur, maar een State Of Mind
Laten we het eens over puntje 3 hebben. En daar dan de code voor gebruiken die ik voor Criteriumvakje 1 heb gemaakt.
[/CODE]Private Sub txtCriteria1_Change()
1 strName = Screen.ActiveControl.Name
2 strTag = Screen.ActiveControl.Tag
3 strValue = Me.txtCriteria1.Text
4 CheckFilter strName, strValue
5 Me.txtCriteria1.SetFocus
6 Me.txtCriteria1 = strValue
7 Me.txtCriteria1.SelStart = Me.txtCriteria1.SelLength
End Sub[/CODE]
In regel 1, regel 2 en regel 3 worden respectievelijk de Naam van het tekstvak, de Info eigenschap van dat tekstveld en de ingetypte Tekst van dat tekstveld uitgelezen en in een variabele gezet.
Vervolgens wordt in regel 4 de procedure CheckFilter aangeroepen. Deze functie staat apart, en hij stelt de feitenlijke filtering samen. Die kan ik eventueel later nog wel uitleggen. Maar die is, zoals je al wel gezien zal hebben, een tikkeltje gecompliceerd...
Als de functie CheckFilter klaar is, gaat de procedure verder met regel 5: de focus terugzetten op het tekstvak. Want het maken van het filter heeft de focus verplaatst naar de andere tekstvakken.
Voor de zekerheid wordt het criterium veld gevuld met de tekst die al is ingetypt. Die was in regel 3 uitgelezen, en in een variabele gezet voor dit doel.
Als een tekstvak de focus heeft, is de tekst daarvan meestal geselecteerd. Dat schiet niet erg op als je wilt filteren op een aantal letters. Vandaar dat in regel 7 de cursor aan het eind van de tekstregel wordt gezet. En dat doe je dus met SelStart en Sellength: SelStart bepaalt de positie van de tekstcursor, en SelLength rekent uit hoeveel tekens er in het tekstvak staan. Typ je één letter, dan SelLength =1, en SelStart is dan ook 1. Heb je twee letters, dan verandert Sellength naar 2, en de startpositie dus ook. Met SelStart=SelLength zorg je er dus voor dat de cursor altijd achter de ingetypte tekst staat, zodat je kunt doortypen.
Laat je deze regel weg, dan moet je steeds op de juiste plek klikken voordat je verder kunt typen.
Hopelijk is het weer wat duidelijker?