Page 1 of 1
OnGetMarkText - customize text of Mark Tips only, not Marks
Posted: Fri Jul 31, 2009 8:36 am
by 10049140
Hi.
I wonder if there is a way to customize the text shown in the "Mark Tips", without customizing the text shown in the actual marks of the series.
Note: I want to customize the mark tips shown when the mouse stays over one of my pie chart slice, without customizing the always shown marks of each slice.
I know that I can use the OnGetMarkText Event to customize mark texts, but this will customize both, the always shown marks and the mark tips of my pie chart.
Any idea how to resolve this?
Thanks!
Re: OnGetMarkText - customize text of Mark Tips only, not Marks
Posted: Fri Jul 31, 2009 10:44 am
by yeray
Hi marder,
Note that there is a OnGetMarkText event for the mark tips tool too:
Code: Select all
procedure TForm1.FormCreate(Sender: TObject);
begin
Series1.Clear;
Series1.Add(random*100, 'first');
Series1.Add(random*100, 'second');
Series1.Add(random*100, 'third');
Series1.Add(random*100, 'fourth');
Series1.Add(random*100, 'fifth');
Series1.Add(random*100, 'sixth');
Series1.Marks.Style := smsLabel;
ChartTool1.Style := smsValue;
end;
procedure TForm1.ChartTool1GetText(Sender: TMarksTipTool;
var Text: String);
var i:Integer;
begin
for i:=0 to Series1.Count-1 do
begin
if ChartTool1.Style = smsValue then
begin
if (FormatFloat('#.###', Series1.YValue[i]) = Text) then
begin
Text := 'label number ' + inttostr(i+1);
Exit;
end;
end
else
if ChartTool1.Style = smsLabel then
begin
if (Series1.Labels[i] = Text) then
begin
Text := 'label number ' + inttostr(i+1);
Exit;
end;
end
end;
end;
Re: OnGetMarkText - customize text of Mark Tips only, not Marks
Posted: Fri Jul 31, 2009 2:57 pm
by 10049140
Hi Yeray.
Thanks for this information!
My problem is, that I have to customize both mark texts in different ways.
When I use the OnGetMarkText event to customize the "always shown marks" only, it seams that the default text of the "mark tips" is also customized.
This is a problem in my case, because I in some cases I want to cut the labels form the "always shown marks" and do show them only in the "mark tips". The problem is, that in the OnGetText Event of the Mark Tip I have no access to the current index so I cannot bring my label up again.
I hope you understand what I mean (It's some kind of tricky)
The perfect solution for me would be if:
1. The OnGetMarkText would not influence the text of the "mark tips", but only of the "always shown marks"
or
2. There was some kind of flag in the OnGetMarkText Event, so I could identify if this is the text for a mark tip or not.
Thanks for your help!
Re: OnGetMarkText - customize text of Mark Tips only, not Marks
Posted: Mon Aug 03, 2009 8:33 am
by yeray
Hi marder,
I'll add your suggestions to the wish list to be considered for inclusion in future releases.
In the meanwhile you still could loop your series marks at the mark tips tool OnGetMarkText event and use the given text to retrieve the value index for that mark. Here is an example:
Code: Select all
function TForm1.GetMark(ValueIndex:Integer):String;
begin
result := 'label number ' + inttostr(ValueIndex+1)
end;
procedure TForm1.Series1GetMarkText(Sender: TChartSeries;
ValueIndex: Integer; var MarkText: String);
begin
MarkText := GetMark(ValueIndex);
end;
procedure TForm1.ChartTool1GetText(Sender: TMarksTipTool;
var Text: String);
var i:Integer;
begin
for i:=0 to Series1.Count-1 do
begin
if ( Text = GetMark(i) ) then
begin
Text := 'label #' + inttostr(i+1);
Exit;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Series1.Clear;
for i:=0 to 6 do
Series1.Add(random*100, 'number ' + inttostr(i));
end;
Re: OnGetMarkText - customize text of Mark Tips only, not Marks
Posted: Tue Aug 04, 2009 12:41 pm
by 10049140
Thanks for your help and for adding this to the wish list!