Click to See Complete Forum and Search --> : Updown Control


raj patel
January 18th, 2000, 08:44 AM
Hi

I am using a "UpDown" Control to increase/decrease the value of a text field, all seems to work correctly except a slight snag.

I have declared a private variable for the form to hold the direction I wish to go (ie either "UP" or "DOWN").
When the user presses the up arrow of the "UpDown" Control the UpClick() event sets the direction to "UP" and when he/she pressses the down arrow of the "UpDown" Control the DownClick() event sets the direction to "Down". I have written some code in the Change event of the "UpDown" Control that will either incerment or decrement the textbox value depending on my direction of travel but when I change directions I need to press the control twice before it goes in the right direction.

In the help it says the change event is triggered before the UpClick() or DownClick() events - does anybody have ideas on how I can resolve this.

Many thanks in advance.

Raj

JimmyT
January 20th, 2000, 08:37 AM
There is an easier way to do this (without worrying about which direction the user is pressing)

Assuming that you have a control UpDown1, and a text box Text1 on your form, this should work for you



private Sub UpDown1_Change()
Text1.Text = CStr(UpDown1.Value)
End Sub





Good Luck...

raj patel
January 20th, 2000, 10:11 AM
Hi
Yes this works for incrementing normal integer values but my text box holds values in hh:mm:ss format and I have written some code that 1st increments the ss then the hh and then the mm. This is why I need to know the direction.

Raj

Aaron Young
January 20th, 2000, 12:02 PM
Put the code you have in the Change Event into your Own Sub, ie. Private Sub ChangeValue(ByVal bUp As Boolean) Then Call it from within the UPClick and DownClick Events, ie.

private Sub UpDown1_UpClick()
ChangeValue true
End Sub

private Sub UpDown1_DownClick()
ChangeValue false
End Sub

private Sub ChangeValue(byval bUp as Boolen)
If bUp then
'Do Increment Code Here..
else
'Do Decrement Code Here..
End If
End Sub





Aaron Young
Analyst Programmer
ajyoung@pressenter.com
aarony@redwingsoftware.com

raj patel
January 21st, 2000, 03:10 AM
Hi
Aaron - thanks for your code snippet this works ok but just for individual clicks only.
I also need it to work when the user keeps any of the buttons pressed i.e. if the up button is pressed and held down the increment code is called until the user releases it and a similar case exists for the down button but here the decrement function is called until the user releases the down button.

Raj

Aaron Young
January 21st, 2000, 03:23 PM
Try this:

private Sub UpDown1_Change()
static lLast as Long
static bUp as Boolean

'Determine the Direction of the Change By Comparing the Current Value to the
'Previous Value, If there's no Difference Must be Scrolling in the Same Direction as Before..
If lLast < UpDown1 then
bUp = true
ElseIf lLast > UpDown1 then
bUp = false
End If
lLast = UpDown1
If bUp then
'Do Incremental Code Here
else
'Do Decremental Code Here
End If
End Sub




Aaron Young
Analyst Programmer
ajyoung@pressenter.com
aarony@redwingsoftware.com