AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

chart mit button-Funktion

Ein Thema von Hartfrid Krause · begonnen am 20. Mär 2015 · letzter Beitrag vom 23. Mär 2015
Antwort Antwort
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#1

chart mit button-Funktion

  Alt 20. Mär 2015, 06:53
Ich möchte diese chart quasi als button benutzen: wenn ich auf eine Zeile mit der Maus tippe, soll eine entsprechende Anweisung möglich sein.
Wie kann ich das machen?

for i:=1 to 11 do chart2.series[0].AddXY(4,i,partei[12-i],farbe[12-i]) ;
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: chart mit button-Funktion

  Alt 20. Mär 2015, 06:57
Moin,

wenn Du mit "Zeile" den Balken der Serie meinst, dann schaue Dir das OnClick-Ereignis der Serie an. Alternativ hat das Chart selbst auch noch ein OnClick-Ereignis, damit könntest Du Klicks auf den Hintergrund abfangen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#3

AW: chart mit button-Funktion

  Alt 20. Mär 2015, 10:47
Ich krieg das noch nicht gebacken:
ich habe 11 Horizontalbalken (mit 11 unterschiedlichen Farben).
Wenn ich einen Balken anklicke, dann soll etwas passieren (z.B. Anzeige der wievielte Balken.
mit dem onclick komme ich nicht zurecht

if chart2.SeriesList[0].OnClick(sender,i,button1,shift,x,y)=true then showmessage('i');

gibt stets eine Falschmeldung.
Ein weiterer Hinweis wäre hilfreich.
Grüße aus Darmstadt an Hamburg
hartfrid krause
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#4

AW: chart mit button-Funktion

  Alt 20. Mär 2015, 10:59
Zitat:
gibt stets eine Falschmeldung
Was soll das sein?

Außerdem: Du solltest ein OnClick-Event implementieren und es nicht selber aufrufen.
Ich bin mir auch sicher, daß OnClick kein Boolean als Result zurück gibt.
Und man sollte niemals mit =true vergleichen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: chart mit button-Funktion

  Alt 20. Mär 2015, 11:05
Hallo

if chart2.SeriesList[0].OnClick(sender,i,button1,shift,x,y)=true then showmessage('i');
Du zäumst das Pferd von der falschen Seite auf. In Deinem Beispiel versuchst Du, OnClick selbst aufzurufen - tatsächlich möchtest Du aber warten, bis der Anwender dies tut. Schaue Dir mal im Objekt-Inspektor Deine Balken-Serie an. Dort findest Du das Ereignis "OnClick", welches quasi "von selbst" (nicht ganz, aber für den Moment mag das passen) ausgelöst wird, wenn der Anwender auf einen beliebigen Balken dieser Serie klickt.

Delphi-Quellcode:
procedure TForm30.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage( IntToStr(ValueIndex) );
end;
Innerhalb dieses Events bekommst Du über den Parameter "ValueIndex" die laufende Nummer des Balkens frei Haus geliefert.

Wenn Dir das mit den Events noch ein wenig suspekt ist, dann empfehle ich einen Blick in den Delphi-Crashkurs.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#6

AW: chart mit button-Funktion

  Alt 22. Mär 2015, 14:03
Es klappt noch nicht.
Ich rufe auf:

Delphi-Quellcode:
USES
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Grids, Vcl.StdCtrls,
  VclTee.TeeGDIPlus, VCLTee.TeEngine, VCLTee.Series, VCLTee.TeeProcs,
  VCLTee.Chart,w02_definitionen, Vcl.Buttons, VCLTee.TeeTools;


type:chart2:tchart;
und als procedure

procedure tform31.Parteinamenchartfuellen(sender:TObject);
var i:integer;
begin
   Chart2.AddSeries(THorizBarSeries.Create(Self));
   Chart2.Legend.Visible := false;
   Chart2.View3D := false;
   Chart2.Title.Visible := false;
   (Chart2.Series[0] as THorizBarSeries).MarksOnBar:=True;
   (Chart2.Series[0] as THorizBarSeries).ColorEachPoint:=True;
   (Chart2.Series[0] as THorizBarSeries).BarWidthPercent := 60;
   (Chart2.Series[0] as THorizBarSeries).Marks.Transparent:=false;
   (Chart2.Series[0] as THorizBarSeries).SideMargins := false;
   (Chart2.Series[0] as THorizBarSeries).MarksLocation:= mlCenter;
   for i:=1 to 11 do chart2.series[0].AddXY(4,i,partei[12-i],farbe[12-i]);
end;
Farben, Felder und werte stiimen.

Ich stehe ein wenig weiter auf dem Schlauich, da ic h ja keine serie1 aufrufe. Wenn ich chart2 lösche und eine neue mit horizbatseries definiere, klappt es auch nicht???
grüße an Hamburg
hartfrid

Geändert von mkinzler (22. Mär 2015 um 14:16 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: chart mit button-Funktion

  Alt 23. Mär 2015, 07:51
Hallo Hartfrid,

Du bist ganz kurz vor dem Ziel.

Lege die eine Prozedur an, die aufgerufen werden soll, wenn der Anwender auf Deine Serie klickt. Ich nehme mein Mini-Beispiel:
Delphi-Quellcode:
procedure TForm30.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ShowMessage( IntToStr(ValueIndex) );
end;
und dann musst Du diese nur noch Deiner Serie zuweisen:

(Chart2.Series[0] as THorizBarSeries).OnClick:= Series1Click; das OnClick-Event sollte schon in das Basis-Klasse vorhanden sein, so dass (vermutlich) auch

Chart2.Series[0].OnClick:= Series1Click; funktionieren wird.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#8

AW: chart mit button-Funktion

  Alt 23. Mär 2015, 08:36
Danke - so klappt es
gruß aus darmstadt
hartfrid
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz