Results 1 to 4 of 4

Thread: Teechart

  1. #1

    Question

    Hallo,

    Ik heb een programma geschreven waar, in een grafiek bepaalde snelheden worden weergegeven.

    Nu had ik graag een manier gevonden om de series ( een lijn in de grafiek ) 'magnetisch' te maken. Hiermee bedoel ik dat wanneer men met de muis in de buurt van één van de series komt, deze daar direct opspringt.

    Een ander probleem waar ik mee zit is: Hoe kan ik de twee assen (x=0 en Y=0) in een dikkere lijn weergeven dat de overige?

    Ik maak gebruik van delphi5 Pro.

    Dank bij voorbaat,

    Geert

  2. #2
    Ik heb zelf nog niet zo veel gedaan met TeeChart. Binnenkort ga ik er wel induiken omdat ik een Website-tracker aan het schrijven ben. Iemand anders enig idee??
    Marcel

  3. #3
    Hoi Geert.

    Ik denk dat je er met het volgende voorbeeld wel uit komt. Maak een nieuw project, zet daar een TChart en een TPanel op, voeg twee Series toe aan je TChart (lijngrafiek), zet de 3D optie van de TChart uit en zet de volgende sourcecode in je unit.

    Code:
    uses
      Math;
    
    procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      Part: TChartClickedPart;
    begin
      Chart1.CalcClickedPart(Point(X, Y), Part);
      if (Part.Part = cpSeries) and (Part.ASeries <> nil) then
        Panel1.Caption := Part.ASeries.Name
      else
        Panel1.Caption := '';
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      X, Y: Integer;
    begin
      for X := 0 to Round(Pi*12) do
      begin
        Series1.Add(Sin(X/10)*10);
        Series2.Add(Cos(X/10)*10);
      end;
    end;
    
    procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
    begin
      with Chart1 do
      begin
        Canvas.Pen.Color := BottomAxis.Axis.Color;
        Canvas.Pen.Width := BottomAxis.Axis.Width;
        Canvas.MoveTo(ChartRect.Left, LeftAxis.CalcPosValue(0.0));
        Canvas.LineTo(ChartRect.Right, LeftAxis.CalcPosValue(0.0));
      end;
    end;
    In de BeforeDrawSeries wordt een extra X-as getekend bij waarde nul, in de FormCreate worden de Series gevuld met een Sinus en Cosinus functie en in de MouseMove wordt aan de TChart gevraagd waar de muis zich boven bevindt en als dat boven een Series is wordt de naam daarvan in het panel getoond.

    In het bijgevoegde plaatje zie je het resultaat, waarbij de muis boven Series2 werd gehouden.

    Succes ermee.

    Marco Hemmes
    mhemmes@bergler.nl
    marco.nldelphi.net

  4. #4
    Bedankt,

    Ondertussen heb ik in de demo van Teechart een gelijkaardige fuctie gevonden die bovendien de co?Ârdinaten van de muis aangeeft wanneer deze over de chart beweegt. :


    procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);

    Var tmpX,tmpY:Double;
    begin

    { check if mouse is inside Chart rectangle }

    With Series1 do
    begin
    GetCursorValues(tmpX,tmpY); { <-- get values under mouse cursor }
    label1.Caption:=GetVertAxis.LabelValue(tmpY)+
    ' ; '+
    GetHorizAxis.LabelValue(tmpX);
    end;
    end;
    Last edited by Geert; 15-Apr-01 at 17:26.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Y-as Labels op Gantt TeeChart
    By Pogo in forum Algemeen
    Replies: 14
    Last Post: 28-Jun-04, 09:43
  2. TeeChart Pro (7) percentage bug.
    By labee in forum Algemeen
    Replies: 5
    Last Post: 26-May-04, 13:03
  3. Teechart 6 installatie probleem
    By Copilot in forum Algemeen
    Replies: 2
    Last Post: 31-Oct-03, 13:31
  4. Een moeilijke : QrChart (Teechart)
    By bartje in forum Algemeen
    Replies: 3
    Last Post: 03-Sep-03, 22:58
  5. Teechart 2
    By Geert in forum Algemeen
    Replies: 2
    Last Post: 19-Apr-01, 00:17

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •