суббота, 30 августа 2014 г.

Изменение размера подписей графика Chart при зуме Delphi 7



Предыстория:

Пишу для личных целей некую бухгалтерскую программку, пишу долго с переменным успехом. И вот при просмотре графика сильно нагруженного показаниями у меня появилась мысль, а что если при выводе графика целиком делать размер подписей поменьше, а при выборе какого-то определенного участка - размер увеличивать. То же самое можно проделывать и с количеством символов после запятой.

Покурив инет появилась информация вроде имеется свойство zoom - но к сожалению в Delphi 7 я такого не обнаружил, поэтому я решил отталкиваться от BottomAxis.Maximum\Minimum




Итак-с начнем-с:

Для начала создадим Chart, и добавим серию типа FastLine и заполним любыми данными
Я использовал такой код:

var
  i, i_: Integer;
begin
  for i:= 1 to 100 do
    begin
      Chart1.Series[0].Add (i);
      i_:=i-1;
      Chart1.Series[0].Add (i_);
    end;
end;

Получился пилообразный график, очень наглядно, чего нам и надо

Затем добавляем на график подписи:


В событие Chart1 zoom поместим вот такой код:

var
  Zoom_ : Double;
begin
  With Chart1 do
    begin
        Zoom_:= BottomAxis.Maximum - BottomAxis.Minimum;
        if  Zoom_ > 100                                 then Series[0].Marks.Font.Size :=   8;
        if (Zoom_ < 100) and (Zoom_ > 50) then Series[0].Marks.Font.Size := 16;
        if (Zoom_ <  50) and (Zoom_ > 10)  then Series[0].Marks.Font.Size := 24;
        if (Zoom_ <  10) and (Zoom_ >  0)  then Series[0].Marks.Font.Size := 36;
      end;
end;

И для возврата к исходному в событие UndoZoom такой:

Chart1.Series[0].Marks.Font.Size:= 8;

Значение я подбирал в ручную - возможно вам потребуются другие значения, но как говорится главное идея.
Скачать исходник + видос - http://dfiles.ru/files/5tvy6pgum

1 комментарий: