As to me to define TRect object TChartAxis taking into account a font of a thickness of lines. It is necessary for definition of total height. All axes settle down horizontally.
In TeeEngine there is a function:
Function TChartAxis. AxisRect:TRect;
But she is not accessible in the basic appendix.
Function TChartAxis.AxisRect:TRect;
-
- Newbie
- Posts: 20
- Joined: Thu Mar 26, 2009 12:00 am
- Location: Russia, Samara
Hi BoikovSoft,
We are not sure to understand what are you exactly trying to do here. It would be helpful if you could send us an image, or a project we can run as-is to reproduce the issue here.
You can either post your files at news://www.steema.net/steema.public.attachments newsgroup or at our upload page.
We are not sure to understand what are you exactly trying to do here. It would be helpful if you could send us an image, or a project we can run as-is to reproduce the issue here.
You can either post your files at news://www.steema.net/steema.public.attachments newsgroup or at our upload page.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 20
- Joined: Thu Mar 26, 2009 12:00 am
- Location: Russia, Samara
Hi
Here a code for an example:
Problem:
1) how automatically to place Axis taking into account all its properties (3D properties to consider it is not necessary)?
2) It is necessary to instal property MargineTop so that the working area of the schedule was not under axes.
3) At mouse passage over rectangular area of an axis it is necessary to paint her.
Here a code for an example:
Code: Select all
...
uses Math, TeeProcs, TeEngine, Chart, Series;
...
var
AChart: TChart;
...
procedure TForm1.FormCreate(Sender: TObject);
Procedure MyADD;
VAr
AX: TChartAxis;
Ser: TChartSeries;
Begin
Ser := AChart.AddSeries(THorizLineSeries);
AChart.CustomAxes.Add;
AX := AChart.CustomAxes[AChart.CustomAxes.Count - 1];
AX.Title.Caption := 'Title';
AX.OtherSide := true;
AX.Grid.Visible := false;
AX.Horizontal := true;
AX.PositionUnits := muPixels;
Ser.CustomHorizAxis := AX;
Ser.FillSampleValues();
end;
begin
AChart := TChart.Create(Self);
AChart.Parent := Self;
AChart.OnMouseMove := ChartMouseMove; // <- It is necessary for idea demonstration.
AChart.Align := alClient;
AChart.Legend.Visible := false;
AChart.View3D := false; // <- 3D properties to consider it is not necessary
MyADD;
MyAdd;
MyADD;
{ I have intentionally made different height Axis.}
AChart.CustomAxes[0].PositionPercent := -100;
AChart.CustomAxes[0].Title.Font.Size := 15;
AChart.CustomAxes[1].PositionPercent := -50;
AChart.CustomAxes[1].Title.Font.Size := 30;
AChart.CustomAxes[1].LabelsAngle:=90;
//AChart.CustomAxes[1].LabelsSize:=-45; // <- It needs to be considered too
AChart.CustomAxes[2].PositionPercent := 0;
AChart.CustomAxes[2].Title.Font.Size := 13;
Achart.MarginUnits := muPixels;
AChart.MarginTop := 150; // <- It is necessary to instal property MargineTop
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
AChart.Destroy;
end;
procedure TForm1.ChartMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
{ It is necessary for idea demonstration. }
TChart(Sender).Repaint;
if InRange(Y, 0, 50) then TChart(Sender).Canvas.Rectangle(0, 0, TChart(Sender).Width, 50);
if InRange(Y, 50, 100) then TChart(Sender).Canvas.Rectangle(0, 50, TChart(Sender).Width, 100);
if InRange(Y, 100, 150) then TChart(Sender).Canvas.Rectangle(0, 100,TChart(Sender).Width, 150);
end;
1) how automatically to place Axis taking into account all its properties (3D properties to consider it is not necessary)?
2) It is necessary to instal property MargineTop so that the working area of the schedule was not under axes.
3) At mouse passage over rectangular area of an axis it is necessary to paint her.
-
- Newbie
- Posts: 20
- Joined: Thu Mar 26, 2009 12:00 am
- Location: Russia, Samara
Has spent today all the day for the decision of this problem.
Here that I managed to make:
Can eat more successful decision?
Here that I managed to make:
Code: Select all
function TForm1.GetAxisRect(AX: TChartAxis; var AHeigth: Integer): TRect;
var
H : Integer;
R : TRect;
AData: Array [1..7] of Integer;
begin
With AX do
Begin
R := AX.Title.ShapeBounds;
if Horizontal then
Begin
H := Axis.Width div 2;
AData[1] := r.Top;
AData[2] := r.Bottom;
AData[3] := PosAxis + H;
AData[4] := PosAxis - H;
H := AX.MaxLabelsWidth;
AData[5] := PosLabels + H;
AData[6] := PosTitle;
AData[7] := PosLabels - H;
result.Top := MinIntValue(AData);
result.Bottom := MaxIntValue(AData);
result.Left := Min(IStartPos, IEndPos+1);
result.Right := Max(IStartPos, IEndPos+1);
AHeigth := result.Bottom - result.Top;
end
else
Begin
H := Axis.Width div 2;
AData[1] := r.Left;
AData[2] := r.Right;
AData[3] := PosAxis + H;
AData[4] := PosAxis - H;
H := AX.MaxLabelsWidth;
AData[5] := PosLabels + H;
AData[6] := PosTitle;
AData[7] := PosLabels - H;
result.Left := MinIntValue(AData);
result.Right := MaxIntValue(AData);
result.Top := Min(IStartPos, IEndPos+1);
result.Bottom := Max(IStartPos, IEndPos+1);
AHeigth := result.Right - result.Left;
end;
end;
end;
Hi BoikovSoft,
It seems a quite good function. I've added this to the wish list be implemented (and improved if possible) for further releases (TV52014141).
Thank you very much.
It seems a quite good function. I've added this to the wish list be implemented (and improved if possible) for further releases (TV52014141).
Thank you very much.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 20
- Joined: Thu Mar 26, 2009 12:00 am
- Location: Russia, Samara
Hi BoikovSoft,
This is the number that identifies the issue in our database. We use to inform in the forums thread about the issue number for future tracking but I'm afraid that this is, in general, for internal purposes only.
This is the number that identifies the issue in our database. We use to inform in the forums thread about the issue number for future tracking but I'm afraid that this is, in general, for internal purposes only.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |