1

Тема: Як зробити обʼємний графік функції в Lazarus?

Програма чомусь не баче властивість View3D.

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: Chart1.View3D := false;
    1: Chart1.View3D := true;
end; 
end;  

я ще так спробувала

if RadioGroup1.ItemIndex = 0  then
    Chart1.View3D := false;
    if RadioGroup1.ItemIndex = 1 then
    Chart1.View3D := true;

але однаково виходить помилка:

Compile Project, Target: project1: Exit code 1, Errors: 2
unit1.pas(57,12) Error: identifier idents no member "View3D"
unit1.pas(59,12) Error: identifier idents no member "View3D"

В інтернеті шукала як зробити обʼємний графік функції в Lazarus  , але не знайшла (((( Остання надія тут. До речі, в методичці було написано : "У вікні Інспектора Об'єктів для компонента Chart1 виберемо властивість View3D і установимо його значення рівним false." ЗНОВ але цього немає там.

2

Re: Як зробити обʼємний графік функції в Lazarus?

А який саме компонент називається Chart1? Який його тип?

Подякували: polinakos1

3

Re: Як зробити обʼємний графік функції в Lazarus?

Схоже, методичку писали з Delphi. За документацією, в Lazarusівському TAChart треба не View3d вмикати, а depth задавати.

Подякували: polinakos, leofun01, Torbins3

4

Re: Як зробити обʼємний графік функції в Lazarus?

Якщо це важливо... То ось весь код:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, CheckLst, StdCtrls,
  ExtCtrls, TAGraph, TASeries;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Chart1: TChart;
    Chart1LineSeries1: TLineSeries;
    CheckListBox1: TCheckListBox;
    EditA: TEdit;
    EditB: TEdit;
    EditM: TEdit;
    LabelA: TLabel;
    LabelB: TLabel;
    LabelM: TLabel;
    RadioGroup1: TRadioGroup;
    procedure Button1Click(Sender: TObject);
    procedure CheckListBox1Click(Sender: TObject);

  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}
function f1 (a: real):real;
begin
  result := ln(a);
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
   x, a, b, h: real;
   i, M :integer;
begin
    CheckListBox1.Checked[0] := true;
    Chart1LineSeries1.Clear;
    if RadioGroup1.ItemIndex = 0  then
    Chart1.View3D := false;
    if RadioGroup1.ItemIndex = 1 then
    Chart1.View3D := true;
    a := StrToFloat(EditA.Text);
    b := StrToFloat(EditB.Text);
    M := StrToInt(EditM.Text);
    h := (b-a) / M;
    for i:= 0 to M do
      begin
        x:= a + h*i;
        Chart1LineSeries1.AddXY(x,f1(x), ' ', clRed);
        end;

end;
  
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
  if CheckListBox1.Checked[0] then
    Chart1LineSeries1.Active := true
  else
    Chart1LineSeries1.Active := false;
end;

end.

5

Re: Як зробити обʼємний графік функції в Lazarus?

koala написав:

Схоже, методичку писали з Delphi. За документацією, в Lazarusівському TAChart треба не View3d вмикати, а depth задавати.

Дякую за відповідь!
Зараз прочитаю це і спробую переробити. Тільки питання що саме треба задавати в depth? Бо мені треба побудувати графік  з можливістю вибору між плоским зображенням та обʼємним за допомогою компонента  RadioGroup.

6

Re: Як зробити обʼємний графік функції в Lazarus?

polinakos написав:

Тільки питання що саме треба задавати в depth?

Число, "глибину" графіка. В документації (почніть уже її читати!) рекомендують ставити 10 або 20.

7

Re: Як зробити обʼємний графік функції в Lazarus?

koala написав:
polinakos написав:

Тільки питання що саме треба задавати в depth?

Число, "глибину" графіка. В документації (почніть уже її читати!) рекомендують ставити 10 або 20.

Ахаха, добре, добре! Все більше Вас не турбую. Ще раз дякую:)

8

Re: Як зробити обʼємний графік функції в Lazarus?

Та турбуйте звісно, тільки трохи розумніше. Якщо відповіді ґуґляться - то можна тут не питати.