Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  124

•  TDictionary Custom Sort  3 311

•  Fast Watermark Sources  3 060

•  3D Designer  4 816

•  Sik Screen Capture  3 313

•  Patch Maker  3 527

•  Айболит (remote control)  3 628

•  ListBox Drag & Drop  2 990

•  Доска для игры Реверси  81 530

•  Графические эффекты  3 920

•  Рисование по маске  3 226

•  Перетаскивание изображений  2 607

•  Canvas Drawing  2 731

•  Рисование Луны  2 555

•  Поворот изображения  2 162

•  Рисование стержней  2 160

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 223

•  Головоломка Paletto  1 764

•  Теорема Монжа об окружностях  2 209

•  Пазл Numbrix  1 682

•  Заборы и коммивояжеры  2 052

•  Игра HIP  1 278

•  Игра Go (Го)  1 224

•  Симулятор лифта  1 470

•  Программа укладки плитки  1 214

•  Генератор лабиринта  1 542

•  Проверка числового ввода  1 350

•  HEX View  1 488

•  Физический маятник  1 355

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Настройка оси



Автор: Lookin

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Настройка оси

Настройка сетки графика по оси ординат. Имеет смысл при передаче данных в
другие пакеты, использующие графическое представление данных (например, в Excel).

Зависимости: uses Chart, TeEngine, Math;
Автор:       lookin
Copyright:   lookin
Дата:        25 декабря 2002 г.
***************************************************** }

//для использования в Delphi

procedure CalcAxis(NChart: TChart);
var
  step, ymx, ymn, rmx, rmn, raz: double;
  i, n, m, d: integer;
begin
  with NChart do
  begin
    ymx := -10000000000;
    ymn := 10000000000;
    m := 0;
    n := 0;
    for i := 0 to SeriesCount - 1 do
      if Series[i].XValues.Count <> 0 then
      begin
        if Series[i].YValues.MaxValue > ymx then
          ymx := Series[i].YValues.MaxValue;
        if Series[i].YValues.MinValue < ymn then
          ymn := Series[i].YValues.MinValue;
      end;
    rmx := ymx;
    rmn := ymn;
    while ymn < 0 do
    begin
      ymn := ymn + 100;
      ymx := ymx + 100;
      Inc(m);
    end;
    raz := ymx - ymn;
    while raz < 100 do
    begin
      ymn := ymn * 10;
      ymx := ymx * 10;
      raz := ymx - ymn;
      Inc(n);
    end;
    ymx := Ceil(ymx);
    ymn := Floor(ymn);
    d := trunc(ymx) div 100;
    ymx := (d + 1) * 100;
    d := trunc(ymn) div 100;
    ymn := d * 100;
    raz := ymx - ymn;
    step := raz / 5;
    ymx := ymx / (Power(10, n)) - m * 100;
    ymn := ymn / (Power(10, n)) - m * 100;
    step := step / (Power(10, n));
    d := 0;
    for i := 1 to 5 do
      if (d = 0) and (ymn + step * i > rmx) then
        d := i;
    if d <> 0 then
      ymx := ymn + step * d;
    d := 0;
    for i := 1 to 5 do
      if (d = 0) and (ymn + step * i < rmn) then
        d := i;
    if d <> 0 then
      ymn := ymn + step * d;
    with LeftAxis do
    begin
      Automatic := false;
      Increment := step;
      Minimum := -100000000000;
      Maximum := ymx;
      Minimum := ymn;
    end;
  end;
end;
//для использования в Excel в качестве макроса (Visual Basic)
Function SetAxisRange(CChart As Chart, ByRef AMax As Double, 
ByRef AMin As Double, ByRef AStep As Double)

Dim Step, RMax, RMin, Max, Min, Raz As Double
Dim I, J, N, M, d As Integer
    
    Max = -1000000
    Min = 1000000
    For I = 1 To CChart.SeriesCollection.Count
    ReDim VArray(UBound(CChart.SeriesCollection(I).Values))
    VArray = CChart.SeriesCollection(I).Values
    For J = 1 To UBound(VArray)
    If VArray(J) > Max Then Max = VArray(J)
    If VArray(J) < Min Then Min = VArray(J)
    Next J
    Next I
    RMax = Max
    RMin = Min
    N = 0
    M = 0
    If Max <> Min Then
    While Min < 0
    Min = Min + 100
    Max = Max + 100
    M = M + 1
    Wend
    Raz = Max - Min
    While Raz < 100
    Min = Min * 10
    Max = Max * 10
    Raz = Max - Min
    N = N + 1
    Wend
    Max = Int(Max) + 1
    Min = Int(Min)
    d = Max \ 100
    Max = (d + 1) * 100
    d = Min \ 100
    Min = d * 100
    Raz = Max - Min
    Step = Raz / 5
    AStep = Step / (10 ^ N)
    AMin = Min / (10 ^ N) - M * 100
    AMax = Max / (10 ^ N) - M * 100
    d = 0
    For I = 1 To 5
    If d = 0 Then
    If (AMin + AStep * I) > RMax Then d = I
    End If
    Next I
    If d <> 0 Then AMax = AMin + AStep * d
    d = 0
    For I = 1 To 5
    If d = 0 Then
    If (AMin + AStep * I) < RMin Then d = I
    End If
    Next I
    If d <> 0 Then AMin = AMin + AStep * d
    End If
    
End Function

Пример использования:

CalcAxis(Form1.Chart1);




Похожие по теме исходники

Задача «Иосифа Флавия»




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте