Delphi визуалды программалау ортасы



бет85/97
Дата06.01.2022
өлшемі2,03 Mb.
#12435
1   ...   81   82   83   84   85   86   87   88   ...   97
29-сурет


30-сурет



31-сурет



32-сурет

Жұмысты орындау бағдарламасы:

unit grafik01;

//GR процедурасын бетінде график сызылатын және өзі басқа //модульде орналасқан Form2 пішіні үшін onPaint оқиғасын өңдеу //процедурасы шақырады.

// Сондықтан функция хабарландыруын басқа модульден шақырып //алу үшін Interface тарауында орналастыру қажет.

procedure gr;

implementation

uses grafik02;

{$R *.dfm}

{ Пішінді құру кезінде StringGrid компонентінің қасиетін орнату:

FixedRows := 0;

RowCount := 2;

Options.goEditing := True;

Options.goTab := True;}

const


COLCOUNT = 15;

var


// функцияның аргументтері мен мәндері

x: array[1..COLCOUNT] of real;

y: array[1..COLCOUNT] of real;

// x,y жиымының мәндері бойынша график салу

procedure gr;

var


i: integer;

x1,x2:real; // функция аргументінің өзгеру шектері

y1,y2:real; // функция мәндерінің өзгеру шектері

l,b:integer; // график шығатын аймақтың сол жақ төменгі бұрышы

w,h:integer; // график шығатын аймақтың ені мен биіктігі

mx,my:real; // X және Y осьтері бойынша масштаб

x0,y0:integer; // координат осьтерінің қиылысу нүктесі

px,py: integer;// пішін бетіндегі графиктің нүкте координаталары

np: integer; // графиктегі нүктелер саны

begin


Form2.Canvas.Rectangle(0,0,Form2.ClientWidth,Form2.ClientHeight);

// график шығатын аймақ

i:=10; // X - сол жақ жоғарғы бұрыш координатасы

b:=Form2.ClientHeight-20; // Y – сол жақ төменгі бұрыш //координатасы

h:=Form2.ClientHeight-40; //биіктігі

w:=Form2.Width-40; // ені

// аргументтің өзгеру шектері мен нүктелер санын анықтау (X //жиымының элементтері өспелі тізбек құрауы тиіс)

x1:=x[1];

i:=1;

while (x[i+1] > x[i]) and (i < COLCOUNT) do i:= i+1;



x2:= x[i]; //x[COLCOUNT-1];

np:=i; // нүктелер саны

if np < 2 then begin

ShowMessage('График нүктелері екіден кем болмауы қажет');

exit;

end;


// функцияның ең үлкен және ең кіші мәндерін табу

y1:=0; y[1]; // минимум

y2:=0; y[1]; // максимум

for i:=1 to np do

begin

if y[i] < y1 then y1:=y[i];



if y[i] > y2 then y2:=y[i];

end;


// масштабты есептеу

my:=h/abs(y2-y1); // Y осі бойынша масштаб

mx:=w/abs(x2-x1); //X осі бойынша масштаб

// координат осьтерінің қиылысу нүктесі

x0:=l+Abs(Round(x1*mx));

y0:=b-Abs(Round(y1*my));

with form2.Canvas do

begin


MoveTo(x0,b);LineTo(x0,b-h); // ось Y

MoveTo(l,y0);LineTo(l+w,y0); // ось X

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+2,b+2,FloatToStrF(y1,ffGeneral,6,3));

// график салу

for i:=1 to np do

begin

px := x0+Round(x[i]*mx);



py := y0-Round(y[i]*my);

Form2.Canvas.Pen.Color := clRed;

Rectangle(px-2,py-2,px+2,py+2); // маркер

if Form1.CheckBox1.Checked then

// қосу сызығы

if i = 1


then MoveTo(px,py)

else LineTo(px,py);

Form2.Canvas.Pen.Color := clBlack;

// функция мәні және аргументі

TextOut(px-5,py-15,FloatToStr(y[i]));

TextOut(px-5,y0+2, FloatToStr(x[i]));

MoveTo(px,py); // Қаламұшты px,py нүктелеріне қайтару

// өйткені TextOut қаламұш орнын өзгертеді.

end;

end;


end;

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;



begin

StringGrid1.ColCount := COLCOUNT;

StringGrid1.Cells[0,0] := ' X';

StringGrid1.Cells[0,1] := ' Y';

// Өңдеу: кестені толтыру

for i:=1 to COLCOUNT do

begin

StringGrid1.Cells[i,0] := IntToStr(i-1);



StringGrid1.Cells[i,1] := IntToStr(i-1);

end;


end;

// Құру батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

var


i: integer;

begin


// Кестедегі мәндерді функция мәндері мен аргументтерінің //жиымы түрінде қайта жазу

for i:=1 to COLCOUNT-1 do

begin

x[i] := StrToFloat(Form1.StringGrid1.Cells[i,0]);



y[i] := StrToFloat(Form1.StringGrid1.Cells[i,1]);

end;


// Графикті шығару функциясын Form2 үшін OnPaint оқиғасын //өңдеу процедурасы шақырады

if not Form2.Showing

then Form2.Show // Form2 терезесін бейнелеу

else Form2.Repaint;

end;
19. Еске сақтау тесті
Жұмыстың мақсаты – өзіңіздің еске сақтау қабілетіңізді ұштайтын бағдарлама құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге 33-суретте көрсетілген компоненттерді орналастырыңыз.







Достарыңызбен бөлісу:
1   ...   81   82   83   84   85   86   87   88   ...   97




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет