![]() |
chart mit button-Funktion
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]) ; |
AW: chart mit button-Funktion
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. |
AW: chart mit button-Funktion
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 |
AW: chart mit button-Funktion
Zitat:
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. |
AW: chart mit button-Funktion
Hallo
Zitat:
Delphi-Quellcode:
Innerhalb dieses Events bekommst Du über den Parameter "ValueIndex" die laufende Nummer des Balkens frei Haus geliefert.
procedure TForm30.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShowMessage( IntToStr(ValueIndex) ); end; Wenn Dir das mit den Events noch ein wenig suspekt ist, dann empfehle ich einen Blick in den ![]() |
AW: chart mit button-Funktion
Es klappt noch nicht.
Ich rufe auf:
Delphi-Quellcode:
Farben, Felder und werte stiimen.
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; 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 |
AW: chart mit button-Funktion
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:
und dann musst Du diese nur noch Deiner Serie zuweisen:
procedure TForm30.Series1Click(Sender: TChartSeries; ValueIndex: Integer;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShowMessage( IntToStr(ValueIndex) ); end;
Delphi-Quellcode:
das OnClick-Event sollte schon in das Basis-Klasse vorhanden sein, so dass (vermutlich) auch
(Chart2.Series[0] as THorizBarSeries).OnClick:= Series1Click;
Delphi-Quellcode:
funktionieren wird.
Chart2.Series[0].OnClick:= Series1Click;
|
AW: chart mit button-Funktion
Danke - so klappt es
gruß aus darmstadt hartfrid |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz