Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Steer me in the right direction

Posted on 2000-02-14
Medium Priority
196 Views
I am writing two applications.
One is going to display information in a Gauge like format as on the dashboard of a car but I dont know how to do this.
The art I dont think I need help with but if I use needle gauges I need to make a line rotate a certain number of degrees based on some number input.  I hope this is making sense.

The second thing is that I am writing software to make a timeline simply by me adding events and a Date into a database I want to the app to create a visual time line of the events.

Any help will be appreciated.
0
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• Learn & ask questions

LVL 70

Expert Comment

ID: 2519807
For your first question, use the CCROP Progress bar control (http://www.mvps.org/ccrp/controls/ccrpprogbar6.htm).

For the timeline, see this one: http://support.microsoft.com/support/kb/articles/Q112/6/50.asp?LNG=ENG&SA=ALLKB&FR=0
0

LVL 4

Expert Comment

ID: 2521924
while you're at it, check out the rest of www.mvps.org :)
0

LVL 3

Expert Comment

ID: 2527495
I wouldnt recommend adding a new custom control to your project just to rotate a line. The calculation is pretty straightforward geometry.
0

LVL 70

Expert Comment

ID: 2527540
Why reinvent the wheel when the wheel exists and good?
0

Accepted Solution

olly_george earned 440 total points
ID: 2530409
To rotate a point about the origin (x=0, y=0) you can use use...

Public Type tPOINT
fX As Single
fY As Single
End Type

Public Sub RotatePoint(fAngle As Single, Point As tPOINT)
' Rotates the point about the origine
Dim TempPoint As tPOINT
TempPoint = Point

Point.fX = (TempPoint.fX * Cos(fAngle)) + (TempPoint.fY * Sin(fAngle))
Point.fY = (TempPoint.fY * Cos(fAngle)) - (TempPoint.fX * Sin(fAngle))

End Sub

so if you're rotating X1 and Y1 about X2 and Y2, use this

Private Sub Timer1_Timer()
Dim Point As tPOINT
With Line1
Point.fX = .X1 - .X2
Point.fY = .Y2 - .Y1
RotatePoint 0.1, Point
.X1 = Point.fX + .X2
.Y1 = .Y2 - Point.fY
End With
End Sub

remember angle is in radians

for the timeline, a vb date is stored as an 8 byte number, with the number before the decimal specifying the date and after - the time. If your time line has a start date and an end date, you can cast your event dates to be doubles and work out the fraction along the line

slap a picture box on a form and paste in this code

Private Type tEVENT
sName As String
dteWhen As Date
End Type

Private ga_Events() As tEVENT
Private g_dteStart As Date
Private g_dteEnd As Date

g_dteStart = "1/1990"
g_dteEnd = "1/1/2000"
ReDim ga_Events(0 To 9)
' 10 events
ga_Events(0).sName = "Event 1"
ga_Events(0).dteWhen = "1/1/1990"
ga_Events(1).sName = "Event 2"
ga_Events(1).dteWhen = "1/10/1990"
ga_Events(2).sName = "Event 3"
ga_Events(2).dteWhen = "1/1/1991"
ga_Events(3).sName = "Event 4"
ga_Events(3).dteWhen = "1/1/1992"
ga_Events(4).sName = "Event 5"
ga_Events(4).dteWhen = "1/10/1997"
ga_Events(5).sName = "Event 6"
ga_Events(5).dteWhen = "1/11/1997"
ga_Events(6).sName = "Event 7"
ga_Events(6).dteWhen = "1/10/1998"
ga_Events(7).sName = "Event 8"
ga_Events(7).dteWhen = "1/11/1998"
ga_Events(8).sName = "Event 9"
ga_Events(8).dteWhen = "1/10/1999"
ga_Events(9).sName = "Event 10"
ga_Events(9).dteWhen = "1/12/1999"

Dim n  As Integer
Dim fSpan As Single
Dim dTimeSpan As Double

fSpan = Picture1.Width
dTimeSpan = CDbl(g_dteEnd) - CDbl(g_dteStart)
Dim fPosition As Single

For n = 0 To 9
fPosition = CSng(fSpan * ((CDbl(ga_Events(n).dteWhen) - CDbl(g_dteStart)) / dTimeSpan))
Picture1.Line (fPosition, 0)-(fPosition, Picture1.Height)
Next n

End Sub

0

Expert Comment

ID: 2530448
oh yeah, I forgot to say, set the autoredraw property on the picturebox to be true
0

Author Comment

ID: 2534117
I want to give Points to both Olly-George and emoreau...both answers were excellent.
How do I do it?
0

LVL 70

Expert Comment

ID: 2534801
You have to create new questions that looks like "for expert_Id only"
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
###### Suggested Courses
Course of the Month7 days, 21 hours left to enroll

#### 715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.