Page 1 of 1

Segment Arrays Part 3 Using multiple numbers Rate Topic: -----

#1 sam_benne  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 16
  • View blog
  • Posts: 732
  • Joined: 16-January 08

Posted 05 February 2008 - 01:23 PM

Well come to part 3 "Using multiple numbers".

In this tutorial I will show you how to create a multiple number LCD, like the ones you see on cash register. For this you will need to have done part 2. If you have then you can move straight on otherwise you will need to look at part 2.

In a new form but the same project. The first thing you will need to do is copy the frame containing your shapes then paste it put when you do a message box will come up. Click no to that as we don't want to create a control array. and you will have to paste three times so that you will have four numbers. Once you have these you will need to name them. You will need to name them "shpL(x)", "shpC(x)", "shpM(x)" and "shpL(x)" ("x" being a number) the capitalized letters mean Left, Center, Middle and right they also need to be in this order. You will see why later when we add the code. To save time you can copy your button and text box from before.

Also you will need to make the text box max length as 5.

The code for the button is like the code from part 2 however we will be adding a check string and a mid string. Firstly we will create a clear function for the numbers so all you need to do for this is add these codes.

Private Sub clearrightmodule()

'Procedure for the right module

Me.shpL1.FillColor = &H8000000B

Me.shpL1.BackColor = &H8000000B

Me.shpL2.FillColor = &H8000000B

Me.shpL2.BackColor = &H8000000B

Me.shpL3.FillColor = &H8000000B

Me.shpL3.BackColor = &H8000000B

Me.shpL4.FillColor = &H8000000B

Me.shpL4.BackColor = &H8000000B

Me.shpL5.FillColor = &H8000000B

Me.shpL5.BackColor = &H8000000B

Me.shpL6.FillColor = &H8000000B

Me.shpL6.BackColor = &H8000000B

Me.shpL7.FillColor = &H8000000B

Me.shpL7.BackColor = &H8000000B

End Sub

Private Sub clearleftmodule()

'Procedure for the left module

Me.shpL1.FillColor = &H8000000B

Me.shpL1.BackColor = &H8000000B

Me.shpL2.FillColor = &H8000000B

Me.shpL2.BackColor = &H8000000B

Me.shpL3.FillColor = &H8000000B

Me.shpL3.BackColor = &H8000000B

Me.shpL4.FillColor = &H8000000B

Me.shpL4.BackColor = &H8000000B

Me.shpL5.FillColor = &H8000000B

Me.shpL5.BackColor = &H8000000B

Me.shpL6.FillColor = &H8000000B

Me.shpL6.BackColor = &H8000000B

Me.shpL7.FillColor = &H8000000B

Me.shpL7.BackColor = &H8000000B

End Sub

Private Sub clearcentremodule()

'Procedure for the centre module

Me.shpC1.FillColor = &H8000000B

Me.shpC1.BackColor = &H8000000B

Me.shpC2.FillColor = &H8000000B

Me.shpC2.BackColor = &H8000000B

Me.shpC3.FillColor = &H8000000B

Me.shpC3.BackColor = &H8000000B

Me.shpC4.FillColor = &H8000000B

Me.shpC4.BackColor = &H8000000B

Me.shpC5.FillColor = &H8000000B

Me.shpC5.BackColor = &H8000000B

Me.shpC6.FillColor = &H8000000B

Me.shpC6.BackColor = &H8000000B

Me.shpC7.FillColor = &H8000000B

Me.shpC7.BackColor = &H8000000B

End Sub

Private Sub clearmiddlemodule()

'Procedure for the middle module

Me.shpM1.FillColor = &H8000000B

Me.shpM1.BackColor = &H8000000B

Me.shpM2.FillColor = &H8000000B

Me.shpM2.BackColor = &H8000000B

Me.shpM3.FillColor = &H8000000B

Me.shpM3.BackColor = &H8000000B

Me.shpM4.FillColor = &H8000000B

Me.shpM4.BackColor = &H8000000B

Me.shpM5.FillColor = &H8000000B

Me.shpM5.BackColor = &H8000000B

Me.shpM6.FillColor = &H8000000B

Me.shpM6.BackColor = &H8000000B

Me.shpM7.FillColor = &H8000000B

Me.shpM7.BackColor = &H8000000B

End Sub



What these do is clear the numbers of the display. Also if you put this code in form_LOAD then it will do this automatically.

Secondly we will add the check string. We use this to make sure that the number entered in the text box is the correct format which can be changed. Through out the codes I not to sure on how to change the format as I am also learning to do this particular string and when i have worked it out I will edit this and create a snippet.

cs = InStr(1, txtFuel, ".", vbBinaryCompare)

			If cs = 0 Or cs > 3 Then

			MsgBox "Enter value correctly such as 0.09 or 99.00", , "Decimal point incorrect"

			Exit Sub

		End If

   X = Len(txtFuel)

		If X < 5 Then

MsgBox "This may cause an error, all numbers should be 4 digits with a decimal point in such as 00.75"

		Call clearrightmodule

		Call clearleftmodule

		Call clearcentremodule

		Call clearmiddlemodule

		Exit Sub

	End If



As you can see from the first message box it formats the number to #.## or ##.## however if you want different format to those then don't add this piece of code in or comment it.
The next part is to add the mid-string. This will look for a number in the text box and look for the code which will correspond to that number.

FirstNumber = Mid(txtCheckString, 1, 1)

SecondNumber = Mid(txtCheckString, 2, 1)

Dot = Mid(txtCheckString, 3, 1)

ThirdNumber = Mid(txtCheckString, 4, 1)

FourthNumber = Mid(txtCheckString, 5, 1)



As you can see if you have done part 2 you would be able to remeber that we used "FirstNumber = Mid(txtCheckString, 1, 1)", now we have added more to it. this is a very simple string to do but can easily be hard. simply because most people includng my self have accidently done something wrong and get an error but think it was something else.

Explain...
The first part of it is the name i.e. "FirstNumber" you don't have to call it this. You could call it apples or something but "FirstNumber" is very good for this as it will be the first number. The next bit is just saying what it is "Mid()". Inside the brackets we have three attributes the name of the subject usually a text box, then it is the character then how many from that character.

Example...
FristNUmber = Mid(txtCheckString, 1, 1) and say in the text box it has "Hello World" then the code would return "H" however, if the last number changed to say five FirstNumber = Mid(txtCheckString, 1, 5) then it would return "Hello". If you change the first number to three and kept it at five FirstNumber = Mid(txtCheckString, 3, 5) it would return with
"llo W".

Now that you know how the strings work we can put in the code for the numbers. It is the same as part 2.


If firstnumber = 1 Then
shpL1.FillColor = &H80000000
shpL1.BackColor = &H80000000
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = &H80000000
shpL4.BackColor = &H80000000
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = &H80000000
shpL6.BackColor = &H80000000
shpL7.FillColor = &H80000000
shpL7.FillColor = &H80000000

ElseIf firstnumber = 2 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = &H80000000
shpL3.FillColor = &H80000000
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL5.FillColor = vbBlue
shpL5.BackColor = vbBlue
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = &H80000000
shpL7.BackColor = &H80000000

ElseIf firstnumber = 3 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = &H80000000
shpL7.BackColor = &H80000000

ElseIf firstnumber = 4 Then
shpL1.FillColor = &H80000000
shpL1.BackColor = &H80000000
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = &H80000000
shpL4.BackColor = &H80000000
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue

ElseIf firstnumber = 5 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = &H80000000
shpL2.BackColor = &H80000000
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue

ElseIf firstnumber = 6 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = &H80000000
shpL2.BackColor = &H80000000
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL5.FillColor = vbBlue
shpL5.BackColor = vbBlue
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue

ElseIf firstnumber = 7 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = &H80000000
shpL4.BackColor = &H80000000
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = &H80000000
shpL6.BackColor = &H80000000
shpL7.FillColor = &H80000000
shpL7.BackColor = &H80000000

ElseIf firstnumber = 8 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL5.FillColor = vbBlue
shpL5.BackColor = vbBlue
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue

ElseIf firstnumber = 9 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = &H80000000
shpL4.BackColor = &H80000000
shpL5.FillColor = &H80000000
shpL5.BackColor = &H80000000
shpL6.FillColor = vbBlue
shpL6.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue

ElseIf firstnumber = 0 Then
shpL1.FillColor = vbBlue
shpL1.BackColor = vbBlue
shpL2.FillColor = vbBlue
shpL2.BackColor = vbBlue
shpL3.FillColor = vbBlue
shpL3.BackColor = vbBlue
shpL4.FillColor = vbBlue
shpL4.BackColor = vbBlue
shpL6.FillColor = &H80000000
shpL6.BackColor = &H80000000
shpL5.FillColor = vbBlue
shpL5.BackColor = vbBlue
shpL7.FillColor = vbBlue
shpL7.BackColor = vbBlue
End If



However, this will only work for the one number as know that we have three other numbers and a decimal point we need to create the same code as the one above but changed to fit the other numbers. I will show you how to start it but if you want to open the text file with the full code then open the attachment (Code for Numbers) at the bottom.

Instead of:
If FirstNumber = 1 Then


You would need to add
If SecondNumber = 1 Then
If ThirdNumber = 1 Then
If FourthNumber = 1 Then


Also to rember to change the name of the shapes "shpC", "shpM" and "shpR".
You also need to add
If Dot = "." Then

End If


What this will do if the dot is a Decimal Point then it will do nothing.
Just before you test it in the form_LOAD you need to declare some variables
Dim iFirstNumber As Integer
Dim iSecondNumber As Integer
Dim iThirdNumber As Integer
Dim iFourthNumber As Integer



Now time to test it so hit F5.

If you have any problems with this then don't hesitate to comment or contact me as I am here to help. Also any comments would be good as then I know how I am doing. However, at the moment I am not putting the full code on here but I will do soon.

Keep an eye out for part four when we add a Timer to it and the numbers automatically change.

Attached image(s)

  • Attached Image

Attached File(s)



Is This A Good Question/Topic? 0
  • +

Replies To: Segment Arrays Part 3

#2 akhileshbc  Icon User is offline

  • D.I.C Head
  • member icon

Reputation: 9
  • View blog
  • Posts: 179
  • Joined: 27-September 08

Posted 27 September 2008 - 10:29 PM

Can you post your project????:)
Was This Post Helpful? 0
  • +
  • -

#3 sam_benne  Icon User is offline

  • D.I.C Addict
  • member icon

Reputation: 16
  • View blog
  • Posts: 732
  • Joined: 16-January 08

Posted 28 September 2008 - 01:35 AM

It soon will be on my site where you can download it.
Was This Post Helpful? 0
  • +
  • -

#4 stickey  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 1
  • Joined: 27-April 09

Posted 27 April 2009 - 10:28 AM

hiya...thanx for this code it really helped me but can you please tell me how to have seven segment display with the timer... i jus need a line which does tht you dont have 2 give all the program details just how to convert the timer into the sengment please
Was This Post Helpful? 0
  • +
  • -

#5 sehrguey  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 1
  • Joined: 29-July 09

Posted 01 August 2009 - 04:33 AM

dear sam benne,

you did a nice job, thank you for this illuminating tutorial of yours.

sehrguey
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1