Autor Beitrag
naujo
Hält's aus hier
Beiträge: 9


D6 Ent
BeitragVerfasst: Di 15.02.05 14:29 
Moin,

ich arbeite mit auf meinem Formular mit einem TChart. Mit den Pfeil-Tasten navigiere ich durch die Daten. Mit Bild -auf bzw. Bild-ab möchte die Pages wechseln.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure TMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  XDelta, YDelta, XRange, YRange:Double;
begin
    XDelta := 0;
    YDelta := 0;

    XRange := Chart1.Series[0].GetHorizAxis.Maximum - Chart1.Series[0].GetHorizAxis.Minimum;
    YRange := Chart1.Series[0].GetVertAxis.Maximum - Chart1.Series[0].GetVertAxis.Minimum;

    case key of
      // Scrollen in der Horizontalen Achse
      VK_LEFT  : XDelta:=-XRange/100;
      VK_RIGHT : XDelta:= XRange/100;

      // Scrollen in der Vertikalen Achse
      VK_UP    : YDelta:= YRange/100;
      VK_DOWN  : YDelta:=-YRange/100;

      // Auswaehlen der Voherigen bzw. naechsten Seite
      VK_PRIOR: Chart1.PreviousPage;
      VK_NEXT:  Chart1.NextPage;

      // springen zur ersten bzw. letzten Seite
      VK_HOME:  Chart1.Page := 1;
      VK_END:   Chart1.Page := Chart1.NumPages;

      // Zuruecksetzen des Zooms
      VK_SPACE: Chart1.UndoZoom;
    end;

    Chart1.LeftAxis.Scroll(YDelta, False);
    Chart1.RightAxis.Scroll(YDelta, False);
    Chart1.BottomAxis.Scroll(XDelta, False);
    Chart1.TopAxis.Scroll(XDelta, False);
end;


Nun ist das folgende Problem, wenn ich mich mit den Pfeiltasten durch das Diagramm bewegt habe, kann ich mir nicht mehr eine andere Page anzeigen lassen. Wenn ich aber nicht die Pfeiltasten benutze kann ich in den Pages hin und her springen.

Die Option habe ich MaxPointsPerPage habe ich im Objektinspektor gesetzt. Und in dem Chart sind auch genung Daten vorhanden. Bei dem Ereignis OnPageChange wird der Wert aber verändert. Ich hatte mir das per ShowMessage ausgeben lassen.

Nun weiß ich nicht woran, dass jetzt liegt. :?:
Ich hatte auch schon mal probiert mir Chart1.Repaint und/oder Chart1.Series[0].Repaint das neu zeichnen zu lassen. Leider hat beides nicht den gewünschten Erfolg gebracht.

Vielen Dank schon mal

Naujo

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.