|
Биттік бейнелерді жылжытуDate: 2014-02-27; view: 1622. Begin Begin Except Try Begin Begin ShowMessage(‘Нөлге бөлу мүмкін емес’); Close; end; end;
Программаны іске қосылған кезде, алдымен 2.22-суретте көрсетілген терезе шығады. Ал қайта қосылса, типті түрленді қате сөйлемді жазылған шығару терезесі көрініп, программа жұмысы тоқтатылады.
2-мысал. ‘Ermek1’ файлы дискіде жазулы болсын. Оны ашу операторын try блогын енгізіп жазу керек. Программа үзіндісі:
var F: TextFile; AssignFile(F,’Ermek1’); Reset (F); //файл табылған жоқ . ShowMessage (‘Файлды ашу мүмкін емес’); end; end;
Мұнда Reset операторы бойынша файл ашылады, егер ол жоқ болса, try блогының екінші бөлімі орындалады (файлдар жөнінде төртінші тарауды қараңыз).
2.19. Принтерде басып шығару
А1. Форманы ішіндегілерімен қоса принтерде басып шығу үшін ТForm1 объектісінің Print атаулы әдәсін шақыру жеткілікті (не File – Print командасын беруге болады). А2. Программа мәтінін басып шығару үшін алдымен форма Button1 компонентін орнатып, OnClick оқиғасын өңдеуіш процедурасын мынадай түрде толтыру керек:
Procedure TForm1.ButtonClick (Sender:TObject); var f: TextFile; AssignPrn(f); Rewrite(f); Writeln(f<атау>); CloseFile(f); end;
мұндағы AssignPrn(f) – мәтіндік айнымалыны принтермен байланыстыру, Rewrite(f) – мәтінді оқу, Writeln(f,<атау>) – программа мәтінін басып шығару (<атау – модуль атауы>) CloseFile(f) мәтіндік файлды жабу операторлары (Rewrite, Writeln, CloseFile операторлары жөнінде түсініктер IV - тарауға енгізілген). Бақылау сұрақтары 1. Берілген дегеніміз не? Мысалдар келтіріңіз. 2. Delphi-де жиі пайдаланылатын берілгендер типтері. Бүтін типтер түрлері. Integer, byte, word типті шамаларды пайдалануға болатын аралықтар және олардың жадта алатын орындары. 3. Delphi-де real, single типті нақты сандардың дәлдігі және жадта бөлінетіни байттар саны. 4. Символдық, жолдық типті айнымалылардың программада сипатталу және жазылу түрлері. 5. Меншіктеу командасы дегеніміз не? Символдық мәндердің меншіктеу командасында жазылу синтаксисі. 6 7. mod, div кілттік сөздерінің және екі мәтін ортасына енгізілетін плюс (+) символының қызметтері. Мысал келтіріңіз. 8. Программа құралымы. 9. Тусініктеме дегеніміз не? Оның программада жазылу турлеріне мысал келтіріңіз. 10. х=5,2 үшін у=3х+ 11. Бір ауыз өлеңді форманың Label өрістеріне шығарыңыз. 12. Бір ауыз өлеңді Memo терезесіне жазып, оны форма бетіне шығарыңыз. 13. Қасиет және программа арқылы форманы, кескіндерді бояу тәсілдері. Түрлі түстер атаулары. 14. Тармақтану командасы дегеніміз не? Команданың түрлі түрде жазылу түрлеріне мысалдар келтіріңіз. 15. 3х 16. 5х 17. Осы программа бойынша 3х 18. Формада 2.3-суреттегі сияұқты калкулятор моделін, сәйкес компоненттердің қасиеттерін орнату. Калкуляторға арналған программа мазмұны. 19. Жеңіл мәшине жүріп келеді. Оның жылдамдығы 230 км/сағ- тан асса, ”Жылдамдық шектен тыс, жылдамдықты азайтыңыз“ ескертуін шығару терезесінде көрсететін көлденең белдеушенің Change оқиғасын өңдеуіш процедурасын құрыңыз. 20. q1 және q2 нүктелік зарядтардың 2<=r<=20 см аралығында әрбір 4см сайын өзара әсер ету күшін табу керек. 21. Көлемі V ыдыстағы массасы m1, температурасы t1ºC азот t2ºC температураға дейін қыздырылған. Қыздыру 4ºC-ға көтерілген сайын азоттың ыдыс бетіне түсіретін қысымын (Р) табу керек. (m=6г, V=4л, t1=25 ºC, t2=49 ºC). Есептеу формуласы: PV=mRt/M (R=8.31 дж/моль*К); 22. N элементтен тұратын А сандық массивінің оң мәнді элементтерінің қосындысын табыңыз (3, 4, -5, 6.2, 8.9, -2). 23. Оқу жылының қорытындысына үш студенттің тоғыз пәннен алған бағалары: 5, 5, 4, 3, 5, 3, 4, 4, 3; 4, 5, 3, 5, 3, 4, 5, 3, 4; 4, 3, 4, 4, 5, 4, 4, 4, 5; Олардың орта үлгірімдерін және нешінші студенттің оқу үлгілері артық екенін анықтау керек. 24. Қазақ әріптері бойынша жазылған адамдардың аты-жөндерін реттеу керек: Нұрғалиқызы Малика Ысқақұлы Оралхан Нұрғалиқызы Мәдина Камардинов Ержан 25. Қосалқы программалар – процедура мен функцияны пайдаланып, х1=2,4, х2=3,5, х3=30,2 үшін у=3х 26. TОleContainer компоненті қандай компонент? Оны пайдалану тәсілі. ОLE автоматтындыруын пайдаланып, Excel электрондық кестесін Delphi ортасына шақырыңыз. Онда мынадай тапсырма орындалсын:[-2;2] кесіндісінде у=х 27. Консольдық терезені ашып, онда келесі мысалды шешу программасын құрыңыз және орындаңыз: Мысал. DO циклін пацдаланып, n=6 үшін n! мәнін есертеу керек (n! =1*2*3..* n). 28. Программаны дұрыстау дегеніміз не? Синтаксистік және семантикалық қателерді жөндеу тәсілдері. 29. Сематикалық емес қателері Delphi-дің көрсету тәсілі. 30. Компиляторды күйге келтіру үшін орындалатын іс-әрекеттер. 31. Ерекше жағдайлар дегеніміз не? Оны Delphi-дің хабарлау түрі. 32. Блокты қорғау механизмі дегеніміз не? Оның программада жазылу түрі. N! мәнін есептеу программасын блокты қорғау механизмін пайдаланып жазыңыз. 33. Форманы және программаны принтерде басып шығу тәсілдері.
III ТАРАУ. ГРАФИКА. АНИМАЦИЯ 3.1. Tcanvas, TPen, TFont, TBrush кластары Delphi- дің графикалық режимінде координаттар жүйесінің формада орналасуы дағдылы Паскальдағы сияқты. Графиканы пайдалану TСanvasкласына негізделген (Canvas- канва, сурет салу кенебі). Мысалы, экранда көрінген форма мен басқару элементтерінің облыстары- Delphi- де салынған канвалар (кенептер). Кенепке графикалық информация шығарылған соң, ол осы облыс жабылғанша көрініп тұрады. Түрлі суреттер мен графиктер салу үшін Tcanvas класына туынды үш клас пайдаланылады: Windows шрифті үшін- TFont, түрлі сызықтарды сызу үшін TPenжәне тұйық фигуралар ішін бояу үшін-TBrush (font- шрифт, pen- қалам, қаламұш, brush- бояу жаққыш). Олардың кейбір қасиеттері мен әдістері 3.1- 3.5 кестелерде берілген (Pen, Font, Brush обьектілері Canvas бъектісінің қасиеттері).
3.1- кесте. TPen қасиеттері
3.2- кесте. TFront қассиеттері
3.3-кесте. TВrush қасиеттері
3.1-сурет. Облысты толтыру стильдері 3.4-кесте. TCanvas қасиеттері
3.5-кесте. TCanvas класының кейбір әдістері
Программада әдіс алдына объектілер иерархиясы жазылуы тиіс.Формаға графикалық кескін шығару үшін, оның onPaint оқиғасын өңдеуіш процедура құру керек.
Мысал. Форма бетіне іші ақ түсті, жиектері қызыл түсті дөңгелек және іші боялмаған қызыл түсті тіктөртбұрыш, түзу кесіндісі жәнне нүкте шығару керек. Олардың астыңғы қатарларына ‘шеңбер’, ’тіктөртбұрыш’, ’кесінді’ және ’нүкте’ сөздері жазылсын (3.2-сурет). Жаңа проект ашып, форманың қасиеттер терезесіндегі Events бетінің onPaint оқиғасын өңдеуіш құру:
Procedure TForm1.FormPaint(Sender: TObject); begin with form1.canvas do begin Pixels[420,50]:=clBlack; // нүкте салу MoveTo(280,70); LineTo(400,150); // кесінді салу Pen.Width:=2; // сызықтың қалыңдығы 2 пиксель Pen.Color:= clBlack; // сызықтың түсін қара ету Brush.Color:= clWhite; // фигураның ішін ақ түсті ету Ellipse(50,50,130,130); // шеңбер салу Brush.color:=clMenu; // бояу жаққыш түсін форма түсімен бірдей ету Rectangle(180,30,250,150); // тіктөртбұрыш
{ Мәтіндерді шығару } Font.Name:=’Times Kaz’; // мәтін шрифтінің атауы Font.Size:=12; // мәтін шрифтінің өлшемі Font.Style:=[fsbold,fsitalic]; // мәтіннің жазылу стилі Textout(380,60,‘Нүкте’); Textout(380,160,‘Кесінді’); Textout(60,140,‘Дөңгелек’); Textout(160,160,‘Тіктөртбұрыш’);
end; end;
Программа іске қосылған соң 3.2-суреттегі нәтиже көрінеді.
3.2. TPaintBox компоненті. Диаграмма тұрғызу
Графикалық кескіндерді компоненттер палитрасының System беттіндегі TPaintBox компоненті арқылы да дайындауға болады. Мысал. Үш сектордан тұратын дөңгелек диаграмма дайындау керек. Секторлар түрлі түске боялып, 30%, 22%, 48% пайыздары енгізілсін. 1. Формада PaintBox1 компонентін орнатып, оның өлшемін беру: Width:=200, Height:=200. 2. PaintBox1 компонентінің OnPaint оқиғасын өңдеуіш процедурасын құру: Procedure TForm1.PaintBox1Paint (Sender: TObject); Procedure Sector (clr:TColor; angle1, angle2: real; msg: string;) var x1, x2, y1, y2:integer; begin with PaintBox1.Canvas do begin Canvas.Brush.Color:= clr; x1:= trunc(cos(angle1)*Width/2+ Width/2); y1:= Heigth-trunc(sin(angle1)* Heigth/2+ Heigth/2); x2:= trunc(cos(angle2)*Width/2+ Width/2); y2:= Heigth-trunc(sin(angle2)* Heigth/2+ Heigth/2); Font.Name:=’Arial’; Font.Size:=9; Font.Color:=clBlack; Font.Style:=[fsBold]; Canvas.TextOut(trunc((x1+x2)/2)-20, trunc((y1+y2)/2), msg); end; end; begin sector (clLime, 0, 0.6*pi, ’30%’); sector (clWhite, 0.6*pi, 1.04*pi, ’22%’); sector (clYellow, 1.04*pi, 2*pi, ‘48%’); end; Мұндағы sector операторы дөңгелек секторын салады. Оның жазылу түрі: Sector (clr, angle1, angle2, msg); Программаға sector қосалқы программасы енгізілген. Оған енгізілген параметрлер: сlr – сектордың боялу түрі. angle1 – бастапқы, яғни х өсі мен сектордың оң қабырғасы арасындағы бұрыш;
3.3-сурет. PaintBox1 компонентін пайдаланып салынған диаграмма
аngle2 – соңы, яғни х өсі мен сектордың сол қабырғасы арасындағы бұрыш (бұрыштар радиан арқылы беріледі); msg – сектор бөлігі ішіне жазылатын мәтін. 3. Программаны сақтап, іске қосу. Нәтижелік диаграмма 3.3-суретте көрсетілген.
3.3 Функция графигі А1. Растрлық график сызу. Циклге енгізген Canvas объектісінің Pixels қасиеті арқылы [х1, х2] кесіндісіне берілген үздіксіз у=f(х) функциясының растрлық графигін формаға шығаруға болады. 1-мысал. [100, 250] кесіндісіне у=2(х/4-5) функциясының графигін сызу керек. Жаңа проект ашып, код терезесінде форманың ОnPaint оқиғасын өңдеуіш процедурасын құру: Procedure TForm1.FormPaint(Sender: TObject); var x1, x2, dx, x, y: real; begin x1:=100; x2:=250; dx:=0.01; x:=x1; repeat y:=2*(x/4-5); Canvas.pixels [round(x), round(y)]:=clBlack; X:=x+dx; until (x>=x2); end;
(Програмада х,у нүктелерінің мәндері бүтін санға дейін дөңгелектеніп жазылады. Себебі, формада орнатылған нүктелер (пиксельдер) координаталары бүтін типті болуы тиіс). Програманы іске қосқан кезде формада қара түске боялып сызылған түзу кесіндісі көрінеді (3.4-сурет).
3.4-суретМасштабты график сызу. Жоғарғы программа бойынша көптеген функцияның (мысалы, y=sinx функциясының) графигі көзгк түсерліктей болып сызылмайды. Оның үстіне, теріс мәнді график үзіндісі экраннан шығып кетеді. Сондықтан мұндай функциялардың тек масштабты графигін сызуға болады. Ол үшін түрлі әдістерді пайдалану мүмкін. – Экран ішінде масштабты график сызылатын (w;h) обылысын таңдап алу: w-ені; h-биіктігі. – F(x) функциясының [x1;x2] кесіндісіндегі ең кіші және ең үлкен мәндерін (Fmin, Fmax) және X,y өстері бойынша функция мәндерінің созылу (сығылу) еселіктерін (mx,my) есептеп шығу: mx = w/( x1-x2); my=h(abs(Fmax –Fmin)); – График сызылатын координаттар жүйесінің бас нүктесін (x0,y0) таңдап алып, жүйені сызу: – Pixels(x, y) қасиеті арқылы график сызу (мұндағы x=x0+round(x*mx); y=y0-round(y*my) –x,y мәндері масштабты түрлендіру формулалары). Ескерту. Жүйенің графикалық режимінде у өсі, экрандық ордината сиақты, төмен бағтталғандықтан, оны өзгертіп, әдеттегіндей жоғары бағыттау да мүмкін. Ол үшін түрлендіру формуласында round`(y*my) айнымалысының мәнін жоғарғыдағыдай минус (-) таңбасымен алса жеткілікті. 2-мысал. [0 ; 25] кесіндісінде y=3sinxex/6 функциясының графигін dx=0.01 қадаммен салу керек. Жаңа проект ашып, қасиеттер терезесінде форманың оқиғалар тізімінен Paint оқиғасын таңдау және қосымша праграмма – функция енгізілген FormPaint процедурасын құру;
Function f(x:real): real; begin f:=3*sin(x)*exp(x/6); end; Procedure GrafFunc; var x1, x2: real; //функция аргументінің өзгеру шекаралары y1, y2 :real; // функция мәндерінің өзгеру шекаралары x: real; // функция аргументі y: real; // х нүктесіндегі функция мәні dx: real; // аргумент өсімшесі l, b:integer; // график шығарылатын обылыстың сол жақ жоғарғы нүктесінің координаттары w, h :integer; // график шығарылатын обылыстың ені мен биіктігі mx, my: real; // х және у өстері бойынша масштаб x0, y0: integer; // координаттар жүйесінің бас нүктесі begin l:=10; // ординатаның жоғарғы нүктесінің абсциссасы b:=Form1.ClientHeight-20; // ординатаның жоғарғы нүктесінің ординатасы h:=Form1.ClientHeight-40; // обылыс биіктігі w:=Form1.Width-40; // облыс ені x1:=0; // аргументтің сол жақ мәні x2:=30; // аргументтің оң жақ мәні dx:=0.01; // қадам // [x1;x2] кесіндісінде функцияның max және min мәндерін табу y1:=f(x1); // минимум y2:=f(x1); // максимум x:=x1; repeat y:=f(x); if y<y1 then y1:=y; if y>y2 then y2:= y; x:=x+dx; until(x>=x2); // масштабты есептеу mx:=w/abs(x2-x1); // х өсі бойынша масштаб my:= h/abs(y2-y1); // у өсі бойынша масштаб x0:=1; // кординаттар жүйесінің бас нүктесі y0:=b-abs(round(y1*my)); with Form1.Canvas do begin // өстер және у өсіне жазылатын сандар MoveTo(l,b); LineTo(l,b-h); MoveTo(x0, y0); LineTo(x0+w, y0); TextOut(1+5, b+5, FloatToStrF(y2, ffFixed, 6, 3)); TextOut(1+5, b+5, FloatToStrF(y1, ffFixed, 6, 3)); // график сызу x:=x1; repeat y:=f(x); Pixels[x0+round(x*mx), y0-round(y*my)]:=clBlack; x:=x+dx; until (x>=X2); end; end; procedure TForm1.FormPaint (Sender: TObject); begin GrafFunc; end;
График формада дұрыс көрінбесе, программа соңына форма өлщемін өзгерту процедурасын енгізуге болады: Prodcedure Tform1.FormResize (Sender: TObject); begin // форманы тазалау Form1.Canvas.FillRect(Rect(0, 0, ClientWidth, ClientHeifht)); // график сызу GrafFunc; end;
y=3sinxex/6 3.5-сурет. Сызылған масштабты график Мұнда негізгі жұмысты GrafFunc процедурасын орындайды. Ол [x1, x2] кесіндісіне функцияның ең үлкен (у2) және ең кіші (у1) мәндерін есептеп және график сызылатын облыстың биіктігі (h) мен енін (w) пайдаланып, х, у өстері бойынша масштабы есептейді (mx, my). Одан әрі программаға енгізілген мәндері пайдаланып график сызады. Программа бойынша салынған график 3.5-суретте көрсетілген. Ескетру. 1. Программа [x1, x2] кесіндісіне оң және теріс мәндер алатын кез келген функция үшін мүлтіксіз орындалады. Егер функция тек оң және теріс мәндер алса, программаға кейбір өзгерістер енгізу мүмкін. 2. Қажет болса, программа масштабты (mx, my мәндерін) басқа түрде алуға да болады. Тапсырма. [-5, 5] кесіндісінде dx=0.01 қадам бойынша келесі функциялардың масштабтық графиктерін салу керек: 1) y=3sinx; 2) y=1/4x3
3.4. TВitmap, TМetafile, TIcon кластары. TImage компоненті Delphi-де графикалық кескігдер салумен қатар, Windows-тың графикалық файлдарын (дайын кескіндерді) орнатуға, форманы безендіруге болады. Мұндай файлдар негізінен үш типті: растрлық (TВitmap), метафайлдар (TМetafile) және белгішелер (пиктограммалар, Ticon). Растрлық кескін пиксельдердің тұратын нүктелерден құрастырылған (файл атауының кеңейтілуі – .bmp); Метафайлдар нүктелерден емес, арнайы командалардан тұратын кодты сақтайды (файл кеңейтілуі – .wmf не .emf); Белгішелер (TIcon) – Windows белгішесі форматында сақталатын кескіндер ( файлдардың кеңейтілуі – .ico) Кескіндер TPicture класының мұрагерлері TBitmap, TМetafile, TIcon кластарына тиісті. Файлда сақталған дайын кескінді формада орнату үшін алдымен оған компоненттер палитрасының Additional бетінде орналасқан TImage (Кескін) компонентін орналастырып алу керек. кескін оның Picture қасиеті арқылы таңдалады. Мысыл. Формаға Image компонентін орнатып, оның ішіне Clipart-та сақталған арыстанның суретін (lion.wmf) енгізу керек. 1. Жаңа проект ашып, формаға Image1 компонентін орнату, оны қалаған түрдн кеңейту; 2. Компонентті таңдап, қасиеттеріне мәндер меншіктеу (3.6-кесте) және Picture (Сурет) қасиетін екі рет шерту. Picture Editor терезесі көрінеді.
3. Оның Load түймесін шетру. Load Picture терезесі көрінеді. Терезеге Windows-та, Clipart -та және т.б. қосымшаларда сақталған кескіндердің файл атауларын шығаруға болады. Мысалы, Clipart-тағы файлдарды ашу үшін терезеден С:/Program Files/Microsoft Office/ Clipart/ Popular бумасын таңдау керек. Popular бумасын ашқан кезде файлдар тізімі көрінеді. 4. Олардың ішінен қажеттісін таңдап (lion.wmf) Ашу түймесін шерту. Кескін Picture Editor терезесіне кірістіріліп қойылады. Одан әрі терезенің ОК түймесін шертсе болғаны. Форманың Image 1 өрісіне кірістірілген lion.wmf суреті 3.6.-суретте көрсетілген. Image1 компонентінің Stretch қасиетіне True мәні және False мәні меншіктелгендіктен сурет масштабты түрде өріске толық сыйып тұр. Picture объектісінің LoadFromFile әдісін пайдаланып, суретті өріске толық кірістіруге де болады (келесі тақырыпты қараңыз).
3.5. TОpenPicture Dialog компоненті Суретті формада орнатылған Image компоненті өрісіне кірістірудің екінші тәсілі: 1. Жаңа проект ашып, формаға Panel1 компонентін орнату. Оның Caption қасиетін тазалап, Alignment қасиетіне alButton мәнін меншіктеу. Панель форманың төменгі қатарына іштей орналастырылады; 2. Панельге Button1 компонентін кірістіру және форманың бос жеріне Image1 компонентін орнату. 3. Келесі бос жерге компоненттер панелінің Dialog бетінен ОpenPicture Dialog Компонентін орнату. 4. Button1 түймесінің On Click оқиғасын өңдеуіш процедурасын құру;
Procedure Tform1. Button1 Click (Sender: Tobject); Begin try If ОpenPicture Dialog1.Execute then Begin Image1. Picture. Load FromFile(ОpenPicture Dialog 1.FileName); Image1.Stretch:=True; еnd; еxcept Show Message (“Программа жүрмеді”); еnd; еnd; Мұндағы FileName – Picture қасиеті арқылы орнатылатын файл аты. 5. Іске қосу командасын беріп, көрінген форманың в түймесін шерту. Файлды ашу терезесі көрінеді. Өткен тақырыптағы сияқты, Popular бумасын ашып, lion.wmf файлын екі рет шерту. Сурет форманың Image1 өрісіне толық түрде кірістіріліп қойылады. ОpenPicture Dialog компоненті сұхбаттық файлды ашуға арналған Dialog класының мұрагері. Оның ашатын терезесінен графикалық файлдарды таңдауға болады.
Жалпы компоненттер панелінің Dialog бетіне Windows-тың стандарттты сұхбаттық терезелері енгізілген: Файлды ашу терезесі (ОpenDialog); Файлды сақтау терезесі (Save Dialog); Суретті сақтау терезесі (SavePicture Dialog); Шрифт терезесі (Font Dialog); Түсті таңдау терезесі (Color Dialog); Басып шығару (Print Dialog);
Оларды пайдалану үшін формада орнатып, сәйкес қасиеттерін таңдау не, жоғарыдағы сияқты, қажетті программа құру керек. T Font Dialog (Шрифті таңдау терезесі) компоненті формада орнатылып, Font қасиеті таңдалған кезде Шрифт терезесі көрінеді. Егер форманың бір жеріне, мысалы, Label1 өрісіне жазылған жазудың шрифтін өзгерту қажет болса , онда алдымен формаға Button1 түймесін орнатып, мынадай оқиғаны өңдеуіш процедура құру керек:
Procedure TForm1. Button1 Click (Sender: Tobject); begin if Font Dialog.Execute then Label1. Font.Assign (Font Dialog1. Font) end; Программаны іске қосқан соң ашылған форманың Button1 түймесі шертілсе, Шрифт терезесі көрінеді. Терезеде қажетті шрифт (мысалы, Times Kaz) орнатылған кезде Label1 өрісіндегі жазу шрифтке сәйкес түрде өзгереді.
3.6. Tshape, Tbevel компоненттері Компоненттер панелінің Additional бетіндегі Tshape (Фигура) компоненті арқылы формада түрлі геометриялық фигуралар салуға болады. Компонентті формада орнатып, оның Shape қасиетіне қажетті мәнді таңдаса болғаны.
3.7.-кесте. Shape қасиеті
Фигура түсі объектісінің Brush қасиетінің мәндері арқылы, фигура жиегінің түсі Pen қасиетінің мәндері арқылы анықталады. Мысалы, форманың ортасына Shape1 компоненті орнатылып, оның Shape қасиетінен stEllipse мәні, Pen қасиетінің Color пунктінен clBlack, Brush қасиетінің Color пунктінен clWhite мәні таңдалған кездегі фигура көрінсе 3.7-суретте көрсетілген (Shape компонентін пайдаланудың екінші мысалы 3.7.2-тақырыпта келтірілген). Формаға орнатылған соң TBevel (Рамка, Жақтау) компоненті жеке объект түрінде қарастырылады. Ол арқылы жақтаулар орнатып, форманы безендіруге болады. Жақтаулар мәндері компонентің Shape қасиетіне, панельді қоршайтын сызықтар стилі Style қасиетіне енгізілген.
3.7. Image Editor редакторы. Қолдан фигура салу Delphi құрамындағы Image Editor (кескін редакторы) редакторын пайдаланып, қолдан түрлі графикалық фигуралар салуға, сызықтар сызып, редакциялауға болады. Олар ағымдық бумада сақталады. 1. Жаңа проект ашып, Tools- ImageEditor (Сервис-Кескін редакторы) командасын беру. Paint терезесіне ұқсас, Image Editor терезесі көрінеді (3.8-сурет). 2. File-New → BitMap File (.bmp) командасын беру. BitMap Properties сұхбаттық терезесі шығады. Оның Size (Өлшем) панеліне енгілген өрістерге сурет салатын терезенің ені мен биіктігінің өлшемдерін (мысалы, 150, 150) енгізіп, экранның түстер режимін таңдау және ОК түймесін шерту. Image Editor терезесінің ішіне сурет салуға арналған BitMap1.bmp терезесі кірістіріліп қойылады. Оны барынша кеңейту. 3. Терезеге қолдан .bmp типті сурет салып (3.9-сурет), сақтау (кітапта салынған суретке кеме атауы берілген).
3.8. Қозғалыс әсерін ұйымдастыру 3.8.1. TAnimate компоненті
Delphi-де графикалық операторларды пайдаланып, түрлі анимация (қозғалыс әсерін) ұйымдастыруға болады. Мысалы, форма терезесінде Windows-тағы сияқты, файлды бір бумадан екінші бумаға көшіру құбылысын шығару үшін TАnimate (анимация) компонентін пайдалану жеткілікті: 1. Жаңа проект ашып, компоненттер пенелінің Win32 бетінен Animatel компонентін формада орнату; 2. Компоненттің Common AVI қасиетінен aviCopyFiles (файлдарды көшіру) қатарын таңдап, Active қасиетіне True мәнін меншіктеу. Форма терезесінде бір бумадан екінші бумаға пакеттердің (файлдардың) көшіріліп жатқаны көрінеді. (3.10-сурет)
Көрінген құбылысты программа арқылы орындау да мүмкін: жаңа проект ашып, формада Animate1, Button1 компоненттерін орнату керек. Одан әрі Button1 түймесінің OnClick оқиғасын өңдеу процедурасын құрып, Button1 түймесін шерту жеткілікті. Процедура: Procedure Tform1. Button1Click (Sender: Tobject); begin Animate1.Open:=True; Animate1.CommonAVI:=aviCopyFiles; Animate1.Active:=True; еnd;
3.8.2. Графикалық кескіндерді жылжыту әсерін ұйымдастыру 1-мысал. Формада іштері ақ түске, жиектері қызыл түске боялған екі шеңберді бір-біріне қарсы периодты түрде көлденең жылжыту керек. 1. Жаңа проек ашып, формаға Timer1 компонентін кірістіру және форманың қасиеттерін орнату: Width=450; Height=300. 2. Код терезесін ашып, ретімен Timer1Timer, FormActivate щқиғаны өңдеуіш процедураларын құру: var Form1: TForm1; Х1,у1,х2,у2: integer; implementation {$R *.dfm} const dx=15; Procedure Cenb; begin With Form1. Canvas do begin Brush. Color:=Form1.Color; Pen. Color:=Form1.Color; Ellipse (x1,y1,x1+25, y1+25); Ellipse (x2,y2,x1-25, y1-25); end; x1:=x1+dx; if x1>=470 then x1:=10; y1:=50; x2:=x2-dx; if x2<=-20 then x2:=440; y2:=120; With Form1. Canvas do begin Pen. Color:= clRed; Brush. Color:= clWhite; Ellipse (x1,y1,x1+25, y1+25); Ellipse (x2,y2,x1-25, y1-25); Brush. Color:=Form1.Color; // түстерді бірдей ету end; end; Procedure Tform1.Timer1. Timer (Sender: Tobject); begin cenb; end; ProcedureTForm1.FormActivate (Sender: Object); Left: =150;Widh: =450; Top: =110; x1: =10; y1: =50 x2: =440; y2: =120; Timer1. Interval: =50; Form1.Canvas. Brush. Color: =Form1.Color; end; Программаның орындалуы кезінде екі шеңбердің жылжыуының бір сәті 3.11-суретте көрсетілген. ***** 3.11-сурет. Шеңберлердің периодты түрде қарама-қарсы жылжыуы
Програма іске қосылған кезде алдымен оқиғаны инициалдау (айнымалыларға алғашқы мәндер меншіктеу) процедура (FormActivate) орындалады да, одан әрі орындалу Сenb процедурасына өтеді. Алғашқыда кенеп түсі мен қалам түсі формаға түсімен бірдей етіліп, қалам арқылы сызылған шеңберлер көрінбейді. Одан әрі, қалам қызыл түске боялып, шеңберлер сызылып шығады. Олардың ішін ақ түске бояуды Brush.Color:=clWhite операторы орындайды. Ішкі программа onTimer оқиғасын өңдеуіш процедурасына тиісті. Онда фигуралар көрінген соң 50 миллисекөнттан соң (Timer1. Interval: =50) өшіріп (фон түсіне боялып), алғашқы орындарынан біраз қашықтыққа қайта көрінеді, т.с.с. (ОnTimer оқиғасын өңдеуіш процедурасы айнымалының мәнін өзгертуге арналған, ол экранда шеңберлердің жылжу әсерін туғызады). 2-мысал. Формада айдың женр айналасында қозғалу құбылысын бейнелеу керек. Form1-ге Label1 және System бетінен Timer1, Additional бетінен Shape1, Shape2 компоненттерін Орнатып (3,12-сурет), қасиеттеріне мәндер меншіктеу.
3,12-сурет. Айдың жерді айналуы 2. Timer1 компонентін екі шертіп, ашылған модуль терезесін var бөлімінен бастап толтыру.
var Form1: TForm1; x:real; implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin x:=x+0.1; Shape2.Left:=210+trunc(150*cos(x)); Shape2.Top:=132-trunc(100*sin(x)); end; Initialization x:=0 // x айнымалысынын бастапкы мані end. 3. Программаны сақтап іске қосу.
Графикалық бейнелерді жылжыту үшін TBitMap (биттік бейне) типті объектілерді пайдалану ыңғайлы. BitMap – осы типті бейне енгізілетін компьютер жадында дайындалған графикалық бет (адрес). Бейнені форма бетіне немесе формада орнатылған Image өрісіне төмендегі әдіс арқылы шығаруға болады (Алдымен TBitMap типін айнымалы арқылы сипаттап алу қажет): var bt: TBitMap; begin bt.LoadFromFile (‘<бейнелік файл атауы>’); ... ... ... . Мысалы, 3.7-тақырыпта салынған кемені жүктеу үшін берілетін әдіс. bt.LoadFromFile (‘С:\Мои документы\Keme.bmp’); Оны Image өрісіне шығару нұсқауның (Draw) жазылу түрі: Image1.Canvas.Draw (x, y, bt); мұндағы bt – биттік буйнелі суреталу, (х,у) – бейненің сол жақ жоғарғы бұрыш нүктесі. Draw әдісінің Transparent (мөлдір) қасиетіне True мәні меншіктелсе, шыққан сурет көрінбей қалады, керісінше жағдайда TransParentColor қасиетіне қажетті түсті меншіктеу керек. Мысал. Формаға енгізілген Image компоненті терезені теңіз және арал салып, кeme.bmp файлы түрінде сақталған кемені (3.9-сурет) ‘жылжыту’ керек.
var Form1: TForm1; Aral, keme,Buf: TBitMap; // фон, сурет, буфер Aralfon, Bufobl: Trect; // фон облысы, буфер облысы x, y: integer; // суреттің сол жақ жоғарғы // бұрышының координаттары W, H: integer; // сурет өлшемдері implementation {$R*.DFM} Procedure TForm1.FormPaint (Sender: TObject); Aral:= TBitMap.Create; // фон keme:= TBitMap.Create; // сурет Buf:= TBitMap.Create; // буфер
{aral.bmp файлын жүктеу және экранда көрсету} Aral.LoadFromFile (‘aral.bmp’); Form1.Image1.Canvas.Draw (0,0,Aral);
{keme.bmp файлын жүктеу} keme.LoadFromFile (‘keme.bmp’); keme.Transparent:= True; keme.TransParentColor:= keme.Canvas.Pixels [2,2];
{буфер даярлау} W:= keme.Width; H:= keme.Height; Buf.Width:= W; Buf.Height:= H; Buf.Palette:= Aral.Palette; // палитраларды // сәйкестендіру Buf.Canvas.CopyMode:= cmScrCopy; Bufobl:= Bounds (0, 0, W, H); x:= -W; y:= 15; end;
Procedure TForm1.Timer1.Timer (Sender: TObject); begin {суретті қозғалту әсерін ұйымдастыру} Form1.Image1.Canvas.Draw (x, y, Buf); x:=x+2; if x>Form1
|