УМК ВП. казПОС. Пніні Оу программасы syllabus оытушы жнінде мліметтер
Скачать 6.17 Mb.
|
Procedure TForm1.ButtonClick(Sender: TObject); var f: TextFile; begin AssignPrn(f); Rewrite(f); Writeln(f,); CloseFile(f); end; мұндағы AssignPm(f) - мәтіндік айнымалыны принтермен байланыстыру, Rewritetf) – мәтінді оқу, Writeln(f, 2.31-сурет.Баспаны шығару. Негізгі әдебиеттер: 2[37-56], 12[15-35], 7[17-32] Бақылау сұрақтары:
2.3 ЛАБОРАТОРИЯЛЫҚ САБАҚТАРДЫҢ ЖОСПАРЫ Лабораториялық жұмыс № 1. Қосымшаның интерфейсін құру. Жұмыстың мақсаты: көпмәтіндік редактор мысалында интерфейсті құратын компоненталармен танысу. 1 Негізгі бөлім DELPHI - Windows –қа арналған қосымшаларды жүктеу ортасы, сондықтан қосымшалар автоматты түрде формалар жүктеледі. Қосымшаларды орындау барысында орындаушы оған жаңа формалар, басқару элементтерін және оқиғаны орындау компоненттерін қоса алады. Интерфейсті құру барысында WYSIWYG (What You See Is What You Get – Что видите, то и получите) принципі қарастырылады және сондықтан қосымшаны жүктеу кезінде орындуашы оны орындалу кезігдегідей көреді. VCL компоненттерінің палитрасы – Delphi визуалды компоненттерінң кітапханасының бірнеше беттерінде бүкіл компоненттердің пиктограммалары жазылған. Интерфейсті құру кезінде әр компонент үшін келесі операциялар орындалады:
Компоненталар структуралық бірліктер болып табылады және олар визуальді және визыульді емес болып бөлінеді. Визуальді компоненттер қосымшалар интерфейсін құруының негізі. Олар: Label, StaticText, Panel, Edit, ListBox және басқалар. Аталғандардан бөлек Canvas (холст) құрылымын қолдануға болады. Барлық компоненталарда мәтін тексті, өлшемі, түсі Font құрылымымен анықталады және олар жұмыс орындау барысында орындаушымен өзгертіледі. 2 Тапсырма және оларды орындау реті Қосымшаны құру және жұмыс істеу алгоритмі
Орындау тәртібі 2.1 Form1 жаңа формасынқұрыңыз. Standard вкладкасынан келесі компоненталарды формаға орналастырыңыз: - Memo1 көпмәтіндік редактор; - MainMenu1 бас менюі; 2.2 Memo1 Align құрылымын өзгерту: alNone - alClient. F orm1 формасының түрі 2.32- ші сурет 2.3 File, Format – екі менюін құрыңыз. File меню пункттінде - – Open (Ашу), Save (Сақтау), Close (Жабу) үш опциясын қарастыру, Format меню пункттінде - Font ( Шрифт) опциясын қарастыру. Save опциясы үшін қарапайым мысал: memo1.Lines.SaveToFile (C:\lab1.txt); Open опциясы үшін memo1.Lines.LoadFrom File (C:\lab1.txt); Close опциясы үшін Form1.Close; 2.4 Прогармманы орындалуға жіберіңіз. Текстті жазып, оны сақтаңыз және басқа опцияларды тексеріңіз. uses Unit2; {$R *.DFM} procedure TForm1.close1Click(Sender: TObject); var a: word; begin a:= Messagedlg('Save to file',mtConfirmation,[mbYes,mbNo],0); if a=mrYes then memo1.Lines.SaveToFile(inputBox('Сохранение файла', 'Введите имя файла','')); form1.close; end; procedure TForm1.save1Click(Sender: TObject); begin memo1.Lines.SaveToFile(inputBox('Сохранение файла', 'Введите имя файла','')); end; procedure TForm1.open1Click(Sender: TObject); begin memo1.lines.LoadFromFile(inputBox('Открыть файл','Введите имя файла','')) end; procedure TForm1.font1Click(Sender: TObject); begin form2.show; end; end. 2.6 Қомысшаны орындалуға жіберіңіз. 2 .7 Form2 формасын құрыңыз, оған ComboBox1,Button1,GroupBox1, CheckBox1,CheckBox3, Samples – SpinEdit1 компоненттерін оранластырыңыз. 2.33-ші сурет Объектер инспекторы арқылы компоненталарды суреттегідей орналастырыңыз. 2.8 Format меню пунктін Font опциясымен құрыңыз. uses Unit1; {$R *.DFM} procedure TForm2.Button1Click(Sender: TObject); begin form1.memo1.font.size:= SpinEdit1.Value; if (CheckBox1.Checked=true) and (CheckBox2.Checked=false) and (CheckBox3.Checked=false)then form1.memo1.font.style:= [fsBold] else if (CheckBox1.Checked=true) and (CheckBox2.Checked=true) and (CheckBox3.Checked=false)then form1.memo1.font.style:= [fsBold, fsItalic] else if (CheckBox1.Checked=true) and (CheckBox2.Checked=true) and (CheckBox3.Checked=true)then form1.memo1.font.style:= [fsBold, fsItalic,fsUnderline] else if (CheckBox1.Checked=false) and (CheckBox2.Checked=true) and (CheckBox3.Checked=false)then form1.memo1.font.style:= [ fsItalic] else if (CheckBox1.Checked=false) and (CheckBox2.Checked=true) and (CheckBox3.Checked=true)then form1.memo1.font.style:= [ fsItalic,fsUnderline] else if (CheckBox1.Checked=false) and (CheckBox2.Checked=false) and (CheckBox3.Checked=true)then form1.memo1.font.style:= [fsUnderline] else if (CheckBox1.Checked=false) and (CheckBox2.Checked=false) and (CheckBox3.Checked=false)then form1.memo1.font.style:= []; form1.memo1.font.name:= comboBox1.Items[comboBox1.Itemindex]; form2.close; end; procedure TForm2.FormCreate(Sender: TObject); var a:integer; begin for a:=0 to screen.fonts.count-1 do comboBox1.Items.add(screen.fonts[a]); comboBox1.Itemindex:=2; end; end. Қомысшаны орындалуға жіберіңіз және меню опцияларын тексеріңіз. Тапсырма:
Begin If OpenDialog1.Execute then Memo1.Lines.LoadFromFile (OpenDialog1.FileName); End;
Лабораториялық жұмыс № 2. Қосымшада мәндер диапозонын қолдану. Модальді формалар. Жұмыстың мақсаты: қолданушы интерфейсінің күрделі элементтерімен танысу.
Форма – Delphi-дің негізгі компоненті, мұнда орындалатын жұмыстың барлығы көрсетіледі және орындалады. Форма көптеген опциялар, құрылымдарға ие. Кесте 2.7
Жаңа форма құру: NewForm (Новая форма) немесе File -> NewForm командасымен құрылады. Ол Form2 деп аталады. Программада тек бір дас форма бола алады және ол жүктеу кезінде көрінеді. Мысалы, ба формаға Button1 түмесін орналастырып, оны басу кезінде Form2 ашылуы керек. Procedure Form1.Button1Click(Sender: TObject); Begin Form2.Visible := true; End; Форманы модальді терезе негізігде көрсету: Form2 және бас форма арасында жүру еркін түрде жүргізіледі. Ол ыңғайсыз болып табылады. Комекші формалар диалогты терезелерді көрсету кезінде қолданылады және бір формамен жұмыс істеу кезінде басқа формаға өту мүмкін емес. Осы модальді терезе деп аталады. Форманы модальді терезе ретінде шақыру үшін ShowModal методын қолдану керек: Procedure Form1.Button1Click(Sender: TObject); Begin Form2.ShowModal; End; Модальді терезелерді қолданудың тәртіптері. Диалогты терезе өлшемді өзгертуге мүмкіндік бермеу керек. Ол үшін BorderStyle-де кез келген мән жазу керек. BorderWidth құрылымында басқару элеметтерін қою рұқсаттамасы қарастырылмаған. Модальді терезе дегеніміз жабылмай басқа терезеге көшей алмайтын терезені айтамыз. Delphi жүйесінде Scrollbar (Полоса прокрутки) и TrackBar (Шкала) компоненттерін қою қарастырылған. Олар форманы бегунок арқылы жүргізуге мүмкіндік береді. Scrollbar компоненті ақпаратты айналдыру үшін керек. TrackBar компоненті, көрсетілген диапозонда мәндерді өзгерті үшін керек. Бұл екі компонента бір-біріне ұқсас болып келеді. Екеуі үшін Min және Max Integer типті мәндері диапозон ретін көресте алады. 2 Тапсырма және оларды орындау реті Графикалық компонениталардың түрін және түсін өзгерте алатын қосымша құру:
Орындау тәртібі 2.1 Form1 қомысшасына келесі компонеталарды қосу: Standard - Button1, Edit1, Edit2, Edit3, Label1-Label6 Win32 – Trackbar1, Trackbar2, Trackbar3 Additional – Shape1.
Button1 – Caption құрамын “Цвет” (Color)-на Edit1, Edit2, Edit3 – Text құрамымен мәнді жою Label1, Label2, Label3 –Caption құрамымен Red, Green, Blue түстеріне Trackbar1, Trackbar2, Trackbar3 –Min құрамымен 0 Max 255 орнату Form1 формасының түрі 2 .34-ші сурет
А)Тышқан көмегімен формада компонентаны таңдау. Б)Тышқанды таңдалған оқиғаға екі рет шерту. В) код денесін енгізу. Button1 – OnClick оқиғасын таңдау, код денесін жазу: procedure TForm1.Button1Click(Sender: TObject); begin shape1.brush.color := rgb ( strtoInt ( edit1.text ), strtoInt(edit2.text),strtoInt(edit3.text)); end; Trackbar1- OnChange оқиғасын procedure TForm1.TrackBar1Change(Sender: TObject); begin shape1.brush.color:= rgb(trackbar1.position,trackbar2.Position,trackbar3.Position); label4.caption:= inttostr(trackbar1.position); label5.caption:= inttostr(trackbar2.position); label6.caption:= inttostr(trackbar3.position); end; Trackbar2,Trackbar3 – OnChange оқиғасын TForm1.TrackBar1Change мәнін таңдау. Form1 – OnCreate оқиғасы procedure TForm1.FormCreate(Sender: TObject); begin shape1.brush.color:=rgb(trackbar1.position,trackbar2.Position,trackbar3.Position); label4.caption:= inttostr(trackbar1.position); label5.caption:= inttostr(trackbar2.position); label6.caption:= inttostr(trackbar3.position); end; Form1 – OnShow оқиғасы procedure TForm1.FormShow(Sender: TObject); begin form2.showmodal; end; 2.4 Өзіміздің қосымшамыз үшін программалық заставк құрамыз. Ол белгіленген уақыт ішінде немесе басу кезінде жабылатын болады. Ол үшін Form2 қосымшасына компоненталарды қосу: Additional – BitBtn1, StaticText1, Image1 System – Timer
BitBtn1 – Caption құрылымы үшін Ok. StaticText1 - Caption үшін Calc_Color (“Калькулятор цвета”) Timer – Interval 5000 Image1 –Picture
BitBtn1- OnClick оқиғасы procedure Tform2.BitBtn1Click(Sender: TObject); begin form2.close; end; Timer - On Timer – BitBtn1Click процедуралар тізімінен алу Form2 –OnClick - BitBtn1Click процедуралар тізімінен алу Form2 –OnKeyPress оқиғасы procedure Tform2.FormKeyPress(Sender: TObject; var Key: Char); begin form2.close; end; Form2 формасының түрі 2 .35-ші сурет Тапсырма
procedure TForm1.TrackBar4Change(Sender: TObject); begin shape1.Height:=trackbar4.position; shape1.Width:= trackbar4.position; end;
Лабораториялық жұмыс № 3. Визуальді компоненталарды қолдану. Жұмыс мақсаты: Орын ауыстыру және қосу механизмімен танысу.
Delphi көмегімен орындалатын программада тасудың 2 механизмі жұмыс істей алады. 1-шісі ол әрине тасу (drag-and –drop). Оны орындату үшін керек объект белгіленіп, тышқанның сол жағы басылады. Ол басылып тұрып, объект жаңа орынға ауыстырылады. Одан кейін тышқаг жіберіледі. 2-шісі – ол қосу мехинизмі (drag-and-dock). Басқару элементтері қосулы палитрасына қосылады. Палитлара бір-біріне қосылады. Палитралар қосылу кезінде өлшемдері тіркеледі. TСontrol класында тасудың барлық мүмкіндіктері көрсетілген. Сондықтан олар барлық компоненталар үшін жүктеле алады. DragMode прораммалау барысында dmManual және dmAutomatic тең болады. dmAutomatic (автоматическое) мәні автоматты түрде тышқанның басылу барысында жүктеледі. OnMouseDown оқиғасымен байланысты. dmManual (ручное) тасу барысын програмалаушы анықтайды. BeginDrag методы таңдалады. procedure TForm1. ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button = mbLeft) and (ssAlt in Shift) then ListBox1. BeginDrag(false); end; Жоғарғы мысалда BeginDrag мәні false тең. Ол үшін тасуды қабылдау туралы ақпарат берілуі керек. Ол үшін OnDragOver өңдеуіші қарастырылуы керек. Ол false мәнін беріп, ал өндеуішке Accept параметрін береміз. ListBox1 тізімі үшін келесі мысла қарастырылуы мүмкін: procedure TForm1. ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;State: TDragState; var Accept: Boolean); begin if (Sourse as Tcontrol <>Sender) then Accept := Source is TListBox else Accept := false; end; Мұнда басында (Sender) және (Sourse) компоненттері бір емес екендігін зертейді. Бұл тасуды бір элемент ішінде жүргізбеу үшін қарастырылған. Егер ол орындалмаса, else-ге тең болады. Кері жағдайда ол true мәнін қабылдайды. Accept параметрі OnDragOver өңдеуішінде беріледі. Бұл қабылдайтын ақпарат оны ала алама жайлы ақпаратты береді. Бұл өңдеуіш берілмесе, онда тасылатын ақпарат қабылдана алады дегенді білдіреді. OnDragDrop та қабылдайтын компонент жайлы ақпарат қабылдайды. Өңдеуішке Sourse (объект-источник) және Х және У курсор координаталары беріледі. OnDragDrop келесі түрге ие бола алады: procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); Begin (Sender as TListBox).Items.Add((Sourse as TListBox). Items[(Sourse as TListBox).ItemIndex]); end; Бұл өңдеуіште ((Sourse as TListBox).Items[(Sourse as TListBox).ItemIndex]) Sender as TListBox.Items.Add методымен қосады. As арқылы Sender және Sourse параметрі TListBox класымен қосылады. Бұл жарияланған параметрлер TОbject класына жүктелуі үшін керек. бірақ бұл класста ItemIndex құрамы жоқ. Бұл құрам TListBox класынжа жарияланған, олар TОbject мұрагері болып табылады. Сондықтан да біз as операциясымен жұмыс жасаймыз. Тасудың жұмысы аяқталған соң немесе тоқтатылған соң OnEndDrag оқиғасы іске қосылады. Мұнда қосымша мүмкіндіктерді қарастыруға болады. OnStartDrag оқиғасы тасу алдында операцияларды жүргізуге мүмкіндік береді. Delphi5- тен бастап тасудың жаңа Drag&Dock объектісі қарастырылған. Бұл мүмкіндіктермен Delphi5-те жұмыс жасау кезінже таныса аласыз. Мұнда интерфейсті түбімен өзгерту, екі терезені бір-біріне қосу мүмкіндітері бар. Терезелік параметрлерге арнап DockSize құрылымы енгізілген, ол үнсіздікте false – қа тең. Ал егер ол true мәніне ие болса, онда ол контейнер қызметін атқарады. UseDockManager – жаңа құрылым. егер ол true мәніне ие болса, онда басқару диспетчерге жүктеледі, ал кері жағдайда ол программистке жүктеледі. Компоненталарда – DragKind құрылымы клиенттер үшін орналастыру үшін керек. Компоненталарда – dkDock құрылымы клиенттер үшін орналастыру үшін керек. Егер сіз тасу автоматты түрде жүргізілуі керек болса, онда DragMode в dmAutomatic құрылымдарын орнату керек. DragMode мәні dmManual – ға үнсіздікте тең болса, онда Drag&Dock үрдісі Drag&Drop үрдісіндей болады. Мысалы, қосымшада 6 панель қарастырылған. Panel1 DockSize құрылымы орнатылған және ол true мәніне ие. Panel2- Panel6 панельдерінде DragKing ішінде dkDock және DragMode ішінде dmAutomatic орналастырылған. 1-ші панель басқа панельдерді қабылдай алады. Орналастырылған клиенттер бөлгіштер орнатылған, олар арқылы өлшемдерді өзгертуге мүмкіндік береді. Компоненталарды басу кезінде олар жылжымалы терезеге айналады. Оларды жаңа орындауға қоюға, жабуға, өлшемдерді өзгертуге болады. Алушы форамның өзі де бола алады. Егер біз DockSize true мәніне ие деп белгілесек. Басқан соң олар үнсіздікте берілген мәндерге ие болады. Басу
Тасу механизмі. Тасу механизімінің алгоритмі келесілерден тұрады.
Программалаудың келесі этаптарын жүзеге асырыңыз.
Procedure Tform1. Edit1MouseDown (Sender, Source: Tobject; Button : TmouseButton; Shift : TshiftState; X,Y : Integer); begin if Button = mbLeft then Edit1.BeginDrag (false) ; end;
procedure Tform1. Panel1DragOver (Sender, Source: Tobject; X,Y :Integer; State : TdragState; var Accept : Boolean); begin Accept := Source = Edit1; end;
Procedure Tform1. Panel1DragDrop (Sender, Source: Tobject; X,Y :Integer); begin Panel1.Caption := Edit1.Text; end;
procedure Tform1. FormDragDrop (Sender, Source: Tobject; X,Y :Integer); begin (Source as Tbutton) . Left := X; (Source as Tbutton). Top := Y; end;
Тапсырма
Қосу механизмі Қосу механизмін программалаусыз орындауға болады. Ол үшін келесілер орындалуы тиіс:
Button1, Button2 компоненттеріне келесі өзгерістер орнату керек: батырмалар толық палитра бола алмайды, сондықтан оларды DockSite құрылымы жоқ.
Программаны орындауға жіберу, және қандай өзгерстер болғандығын түсіндіріңіз. 2.11 Panel2 үшін OnGetSiteInfo оқиғаны өңдеуішін құрыңыз. Ол батырманы қабымау үшін керек: procedure TForm2.Panel2GetSiteInfo (Sender: Tobject; DockClient : TControl; var InfluenceRect :Trect; MousePos :Tpoint; var CanDock : Boolean); begin CanDock := not (DockClient is Tbutton); end; 2.12 Panel1 үшін OnUnDock оқиғаны өңдеуішті құрамыз. Ол палитрадан батырманы алу мүмкіндігінен айырылады: procedure TForm2.Panel1UnDock (Sender: Tobject; Client : TControl; NewTarget : TwinControl; var Allow : Boolean); begin Allow := not (Client is Tbutton); end; Тапсырма
Begin If CheckBox1.Checked = true then CanDock := not(DockClient is TButton); End; |