User (Legacy) Posted October 27, 2002 Report Share Posted October 27, 2002 Hi, I'm using a bar chart type in the Chart FX 98 control and I'm trying to align the bars in the chart with other controls on the screen. My x-axis consists of years values. The number of years that can show on the graph range from 5 to 10 depending on what the user selects. I want to put a text box underneath each of the bars and have it line up exactly with the bar above it. Is there any way to do this? I think I need the left property for each bar and the width of each bar. Thanks! Link to comment Share on other sites More sharing options...
Software FX Posted October 28, 2002 Report Share Posted October 28, 2002 Yes, you can calculate this: The bar size is calculated as follows: BarWidth = ((((ChartWidth - LeftGap - RightGap)/NumberOfPoints)/NumberOfSeries)*Volume)/100 The bars are evenly spaced along all the area. You can use the ValueToPixel method to determine the position of a specific tickmark in the X or Y axis. -- FP Software FX, Inc. Link to comment Share on other sites More sharing options...
User (Legacy) Posted October 28, 2002 Author Report Share Posted October 28, 2002 I'm having trouble determining the position of the specific coordinate using the ValueToPixel method. Here's my scenario. I have a bar chart. It's name is chtMain. The values on the x-axis are years that range from 1998 to 2006. The values on the y-axis shouldn't matter because I don't care about the y-coordinate. Can someone give me an example of how I would obtain the x-coordinate for say "2000"? Here's how I would think you would do it: chtMain.ValueToPixel 2, 0, x_return, y_return, AXIS_X Thanks! "SoftwareFX Support" <support@softwarefx.com> wrote in message news:LGhb29ofCHA.3564@webserver1.softwarefx.com... > Yes, you can calculate this: > > The bar size is calculated as follows: > > BarWidth = ((((ChartWidth - LeftGap - > RightGap)/NumberOfPoints)/NumberOfSeries)*Volume)/100 > > The bars are evenly spaced along all the area. > > You can use the ValueToPixel method to determine the position of a specific > tickmark in the X or Y axis. > > -- > FP > Software FX, Inc. > > Link to comment Share on other sites More sharing options...
Software FX Posted October 28, 2002 Report Share Posted October 28, 2002 chtMain.ValueToPixel 2, 0, x_return, y_return, AXIS_X Will return in x_return the pixel position (x coordinate) of the tickmark corresponding to 2, this corresponds to the MIDDLE of the bar group for year 2000 (assuming consecutive years). What are you getting ? -- FP Software FX, Inc. Link to comment Share on other sites More sharing options...
User (Legacy) Posted October 29, 2002 Author Report Share Posted October 29, 2002 The value returned to me in x_return is way to small to be lined up with the 2nd value in the graph. Here's my code and a picture of what is happening. The text box directly below the chart is named text1 and should be lining up with the second bar but something's going wrong. Do I need to do anything with the "leftgap"? Thanks for your help! Dim x_return As Long Dim y_return As Long chtMain.ValueToPixel 2, 0, x_return, y_return, AXIS_X Text1.Left = x_return + chtmain.left ' chtmain.left is equal to 0 "SoftwareFX Support" <support@softwarefx.com> wrote in message news:zLf02BtfCHA.3208@webserver1.softwarefx.com... > chtMain.ValueToPixel 2, 0, x_return, y_return, AXIS_X > > Will return in x_return the pixel position (x coordinate) of the tickmark > corresponding to 2, this corresponds to the MIDDLE of the bar group for year > 2000 (assuming consecutive years). > > What are you getting ? > > > -- > FP > Software FX, Inc. > > Link to comment Share on other sites More sharing options...
Software FX Posted October 29, 2002 Report Share Posted October 29, 2002 Notice the x_return is in PIXELS, not in TWIPS. What is the value you are getting back ? also it is important the timing, you must make sure the call to ValueToPixel happens AFTER the chart has all the data and sizes. You need to use UpdateSizeNow to make sure all calculations are finished if you need to call ValueToPixel BEFORE the chart is ever drawn. -- FP Software FX, Inc. Link to comment Share on other sites More sharing options...
User (Legacy) Posted October 29, 2002 Author Report Share Posted October 29, 2002 Awesome!!! Thanks!!!!!!! I forgot to convert to twips. "SoftwareFX Support" <support@softwarefx.com> wrote in message news:3LhSvJ2fCHA.392@webserver1.softwarefx.com... > Notice the x_return is in PIXELS, not in TWIPS. What is the value you are > getting back ? also it is important the timing, you must make sure the call > to ValueToPixel happens AFTER the chart has all the data and sizes. You need > to use UpdateSizeNow to make sure all calculations are finished if you need > to call ValueToPixel BEFORE the chart is ever drawn. > > -- > FP > Software FX, Inc. > > Link to comment Share on other sites More sharing options...
User (Legacy) Posted October 30, 2002 Author Report Share Posted October 30, 2002 Hi, I'm having trouble getting the bar width to work properly. In the attached screenshot, I put a textbox (text1) in the chart area. I tried to get the width of this text box to match the width of the bars but haven't had any luck. Here's the code I've been using: Dim lBarWidth As Long lBarWidth = ((((chtMain.Width - chtMain.LeftGap - chtMain.RightGap) / 6) / 1) * chtMain.Volume) / 100 Text1.Width = lBarWidth Thanks!! Link to comment Share on other sites More sharing options...
User (Legacy) Posted November 6, 2002 Author Report Share Posted November 6, 2002 Has anyone been able to figure this out??? Thanks! "Jim Gaull" <jgaull@genisysinc.com> wrote in message news:pcuWwDCgCHA.2308@webserver1.softwarefx.com... > Hi, > > I'm having trouble getting the bar width to work properly. In the attached > screenshot, I put a textbox (text1) in the chart area. I tried to get the > width of this text box to match the width of the bars but haven't had any > luck. Here's the code I've been using: > > Dim lBarWidth As Long > > lBarWidth = ((((chtMain.Width - chtMain.LeftGap - chtMain.RightGap) / 6) > / 1) * chtMain.Volume) / 100 > > Text1.Width = lBarWidth > > > Thanks!! > > > Link to comment Share on other sites More sharing options...
Software FX Posted November 6, 2002 Report Share Posted November 6, 2002 This code works for me. I put this calculation in a button and I get a textbox that EXACTLY the same width as the bar. I don't know what you are doing different. Please try to reproduce it in an EMPTY project. -- FP Software FX, Inc. Link to comment Share on other sites More sharing options...
User (Legacy) Posted November 7, 2002 Author Report Share Posted November 7, 2002 I add 1 to the number of data series and now it works perfectly. lBarWidth = ((((chtMain.Width - chtMain.LeftGap - chtMain.RightGap) / (chtMain.NValues + 1)) / chtMain.NSeries) * chtMain.Volume) / 100 "SoftwareFX Support" <support@softwarefx.com> wrote in message news:9UmINBbhCHA.1748@webserver1.softwarefx.com... > This code works for me. I put this calculation in a button and I get a > textbox that EXACTLY the same width as the bar. I don't know what you are > doing different. Please try to reproduce it in an EMPTY project. > > -- > FP > Software FX, Inc. > > Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.