курсовая. курсовая_лазарус. Разработка справочной системы по визуальным компонентам интегрированной среды разработки lazarus
Скачать 377.63 Kb.
|
ЗаключениеВ процессе выполнения настоящей курсовой работы мы познакомились с интегрированной средой разработки Lazarus, изучили различные ресурсы по компонентам библиотеки LCL. В результате изучения информации были выделены общие свойства визуальных компонентов и их общие события, выделена основная информация по компонентам, а затем скомпонована в файлы html, чтобы быть включенной в справочную систему. Также в результате выполнения настоящей курсовой работы было разработано приложение, которое реализует справочную систему по визуальным компонентам Lazarus на основе набора из html файлов, подключаемых к приложению по мере выбора соответствующей строки из списка компонентов. Также к приложению был добавлен простой пример применения визуальных компонентов и изменения их свойств, чтобы начинающему программисту можно было не только изучить справку, но и увидеть некоторые компоненты в действии. Поставленные в начале работы задачи были выполнены, цель курсовой работы достигнута. Список использованной литературы1. Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. Free Pascal и Lazarus: Учебник по программированию / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер – М. : ALT Linux ; Издательский дом ДМК-пресс, 2010. – 440 с. 2. Ачкасов В.Ю. Программирование на Lazarus/ В.Ю. Ачкасов – М.: Национальный Открытый Университет «ИНТУИТ», 2016. – 521 с. 3. Гуриков С.Р. Программирование в среде Lazarus. Учебное пособие. – М.: Издательство «Форум», 2019. – 336 с. 4. Мансуров К.Т. Основы программирования в среде Lazarus, 2010. – 772 с. 5. Одинцов И.О. Профессиональное программирование. Системный подход. – СПб.: БВХ-Петербург, 2004. – 624 с. 6. LCL Components/ru – [Электронный ресурс] – Режим доступа: https://wiki.lazarus.freepascal.org/LCL_Components/ru (дата обращения: 10.05.2022) 7. История версий Delphi. – URL: http://bourabai.ru/einf/Delphi/history.htm (дата обращения: 21.10.2017) 8. Lazarus. – [Электронный ресурс] – Режим доступа: https://gospodaretsva.com/category/lazarus (дата обращения: 21.10.2017) 9. Клейменова Е.М. АНАЛИЗ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ // Материалы VIII Международной студенческой электронной научной конференции «Студенческий научный форум» – [Электронный ресурс] – Режим доступа: http://www.scienceforum.ru/2016/1508/20094 (дата обращения: 10.05.2022). 10. Семухин С. О. Сравнительный анализ языков программирования // Научно-методический электронный журнал «Концепт». – 2015. – Т. 35. – С. 166–170. – [Электронный ресурс] – Режим доступа: http://e-koncept.ru/2015/95588.htm (дата обращения: 10.05.2022) ПРИЛОЖЕНИЕ AЛистинг приложения unit fUnit; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LazHelpHTML, ComCtrls, StdCtrls, Ipfilebroker, IpHtml; type { TForm1 } TForm1 = class(TForm) BtnOk: TButton; BtnExit: TButton; Button1: TButton; Label1: TLabel; procedure BtnExitClick(Sender: TObject); procedure BtnOkClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; ProgramPath:string; implementation uses hlpUnit,ExampleUnit; {$R *.lfm} { TForm1 } procedure TForm1.BtnExitClick(Sender: TObject); begin Form1.Close; end; procedure TForm1.BtnOkClick(Sender: TObject); begin Form1.Hide; Form2.Show; end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.Hide; Form3.ShowModal; Form1.Show; end; procedure TForm1.FormCreate(Sender: TObject); begin ProgramPath:=ExtractFileDir(ParamStr(0)); end; end. unit hlpUnit; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls, StdCtrls, IpHtml, Ipfilebroker, StrUtils; type { TForm2 } TForm2 = class(TForm) Bevel1: TBevel; Bevel2: TBevel; Bevel3: TBevel; Bevel4: TBevel; btnExit: TButton; btnBack: TButton; btnNext: TButton; btnSort: TButton; btnCancelSort: TButton; IpFileDataProvider1: TIpFileDataProvider; IpHtmlPanel1: TIpHtmlPanel; TreeView1: TTreeView; procedure btnBackClick(Sender: TObject); procedure btnCancelSortClick(Sender: TObject); procedure btnExitClick(Sender: TObject); procedure btnNextClick(Sender: TObject); procedure btnSortClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure TreeView1Click(Sender: TObject); private public end; mList=array[0..2,1..100] of string; var Form2: TForm2; IdI, IdP: integer; Stek: string; FList:TextFile; implementation uses fUnit; {$R *.lfm} function StekPrev(var s:string):integer; var i, k:integer; begin i:=Length(s); if i=3 then k:=-1 else begin while s[i]<>'/' do i:=i-1; k:=StrToInt(AnsiRightStr(s,Length(s)-i)); s:=AnsiLeftStr(s,i-1); result:=k; end; end; { TForm2 } procedure TForm2.FormActivate(Sender: TObject); begin TreeView1.Height:=Form2.ClientHeight-2; Bevel1.Height:=Form2.ClientHeight-2; Bevel1.Left:=Form2.ClientWidth div 4; Bevel2.Top:=Form2.ClientHeight-40; Bevel2.Width:=Form2.ClientWidth-Bevel1.Left-5; Bevel3.Top:=Form2.ClientHeight-35; Bevel3.Left:=Bevel1.Left+3+(Form2.ClientWidth-Bevel1.Left) div 3; Bevel4.Top:=Form2.ClientHeight-35; Bevel4.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnExit.Top:=Form2.ClientHeight-35; btnExit.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnExit.Height:=33; btnBack.Top:=Form2.ClientHeight-35; btnBack.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnBack.Height:=33; btnNext.Top:=Form2.ClientHeight-35; btnNext.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnNext.Height:=33; btnSort.Width:= Bevel1.Left div 2 - 2; IpHtmlPanel1.Width:=Form2.ClientWidth-Bevel1.Left-10; IpHtmlPanel1.Height:=Bevel2.Top-3; IpHtmlPanel1.Left:=Bevel1.Left+3; IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html'); IdI:=-1; stek:=IntToStr(IdI); end; procedure TForm2.btnExitClick(Sender: TObject); begin IpHtmlPanel1.SetHtmlFromStr(''); Close; Form1.Show; end; procedure TForm2.btnNextClick(Sender: TObject); var Node:TTreeNode; begin if IdI begin IdI:=IdI+1; IdP:=Idp+1; stek:=stek+'/'+IntToStr(IdI); TreeView1.Selected:=treeview1.Items[IdI]; Form2.Caption:=treeview1.Selected.text; IpHtmlPanel1.SetHtmlFromStr(''); IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end else begin IdI:=0; IdP:=Idp+1; stek:=stek+'/'+IntToStr(IdI); TreeView1.Selected:=treeview1.Items[IdI]; Form2.Caption:=treeview1.Selected.text; IpHtmlPanel1.SetHtmlFromStr(''); IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end; end; procedure TForm2.btnSortClick(Sender: TObject); begin TreeView1.AlphaSort; end; procedure TForm2.btnBackClick(Sender: TObject); var k: integer; begin if IdI=-1 then IdI:=0; //если дошли до начала, то встаем на первый k:=StekPrev(stek); //идем назад по стеку if k=IdI then k:=StekPrev(stek); //повторяем, чтобы не загружать повторно текущий файл if IdP>1 then begin IdI:=k; //запоминаем предыдущий IdP:=IdP-1;//уменьшаем счетчик пройденных страниц TreeView1.Selected:=treeview1.Items[IdI]; //переход на предыдущий Form2.Caption:=treeview1.Selected.text; //прописываем в заголовке формы IpHtmlPanel1.SetHtmlFromStr(''); //загружаем страничку IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end else begin IdI:=-1; //если ещё не было переходов по страницам IdP:=0; //счетчик нулевой stek:='-1/';//стек нулевой TreeView1.Selected:=treeview1.Items[IdI+1]; //в дереве встаем на первый пункт Form2.Caption:=treeview1.Selected.text; IpHtmlPanel1.SetHtmlFromStr(''); //загружаем стартовую страницу IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end; end; procedure TForm2.btnCancelSortClick(Sender: TObject); var dirpath:string; begin//заполнение TreeView из файла dirpath:=fUnit.ProgramPath+'\Help\List.dat'; if FileExists(dirpath) then begin TreeView1.LoadFromFile(Dirpath); end; IpHtmlPanel1.SetHtmlFromStr(''); if IdI<>-1 then IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html') else IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end; procedure TForm2.FormCreate(Sender: TObject); var dirpath:string; begin TreeView1.Color:=Form2.Color; //заполнение TreeView из файла dirpath:=fUnit.ProgramPath+'\Help\List.dat'; if FileExists(dirpath) then begin TreeView1.LoadFromFile(Dirpath); end; IdI:=-1; IdP:=0; stek:='-1/'; end; procedure TForm2.FormResize(Sender: TObject); begin TreeView1.Height:=Form2.ClientHeight-2; Bevel1.Height:=Form2.ClientHeight-2; Bevel1.Left:=Form2.ClientWidth div 4; Bevel2.Top:=Form2.ClientHeight-40; Bevel2.Width:=Form2.ClientWidth-Bevel1.Left-5; Bevel3.Top:=Form2.ClientHeight-35; Bevel3.Left:=Bevel1.Left+3+(Form2.ClientWidth-Bevel1.Left) div 3; Bevel3.Height:=33; Bevel4.Height:=33; Bevel4.Top:=Form2.ClientHeight-35; Bevel4.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnExit.Top:=Form2.ClientHeight-35; btnExit.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnExit.Height:=33; btnBack.Height:=33; btnNext.Height:=33; btnBack.Top:=Form2.ClientHeight-35; btnBack.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); btnNext.Top:=Form2.ClientHeight-35; btnSort.Width:= Bevel1.Left div 2 - 2; btnNext.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3); IpHtmlPanel1.Width:=Form2.ClientWidth-Bevel1.Left-10; IpHtmlPanel1.Height:=Bevel2.Top-3; IpHtmlPanel1.Left:=Bevel1.Left+3; end; procedure TForm2.TreeView1Click(Sender: TObject); begin IdI:=TreeView1.Selected.AbsoluteIndex; IdP:=Idp+1; stek:=stek+'/'+IntToStr(IdI); Form2.Caption:=treeview1.Selected.text; //По умолчанию в WebBrowser1 ничего не показывается IpHtmlPanel1.SetHtmlFromStr(''); IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html'); IpHtmlPanel1.Refresh; IpHtmlPanel1.SetFocus; end; end. unit ExampleUnit; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls; type { TForm3 } TForm3 = class(TForm) BitBtn1: TBitBtn; CheckGroup1: TCheckGroup; ComboBox1: TComboBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Memo1: TMemo; Panel1: TPanel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; ScrollBar1: TScrollBar; ScrollBar2: TScrollBar; ScrollBar3: TScrollBar; Shape1: TShape; UpDown1: TUpDown; UpDown2: TUpDown; procedure ComboBox1Change(Sender: TObject); procedure ComboBox1Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean); procedure UpDown2Changing(Sender: TObject; var AllowChange: Boolean); private public end; var Form3: TForm3; implementation uses fUnit; {$R *.lfm} { TForm3 } procedure TForm3.ScrollBar1Change(Sender: TObject); begin Shape1.Brush.color:=RGBToColor(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position); edit1.text:=ScrollBar1.Position.ToString; edit2.text:=ScrollBar2.Position.ToString; edit3.text:=ScrollBar3.Position.ToString; Shape1.Pen.Color:= RGBToColor(255-ScrollBar1.Position,255-ScrollBar2.Position,255-ScrollBar3.Position); Memo1.Clear; Memo1.Lines.Add('Изменение цвета фигуры'); end; procedure TForm3.UpDown1Changing(Sender: TObject; var AllowChange: Boolean); begin Shape1.Top:=UpDown1.Position; Memo1.Clear; Memo1.Lines.Add('Перемещение фигуры по вертикали'); end; procedure TForm3.UpDown2Changing(Sender: TObject; var AllowChange: Boolean); begin Shape1.Left:=UpDown2.Position; Memo1.Clear; Memo1.Lines.Add('Перемещение фигуры по горизонтали'); end; procedure TForm3.ComboBox1Change(Sender: TObject); begin case ComboBox1.ItemIndex of 0: Shape1.Shape:=stCircle; 1: Shape1.Shape:=stEllipse; 2: Shape1.Shape:=stRectangle; 3: Shape1.Shape:=stSquare; 4: Shape1.Shape:=stTriangle; end; end; procedure TForm3.ComboBox1Click(Sender: TObject); begin Memo1.Clear; Memo1.Lines.Add('Выбор формы фигуры'); end; procedure TForm3.RadioButton1Click(Sender: TObject); begin if RadioButton1.Checked then Shape1.visible:=true else Shape1.visible:=false; Memo1.Clear; Memo1.Lines.Add('Отображение фигуры включено'); end; procedure TForm3.RadioButton2Click(Sender: TObject); begin if RadioButton2.Checked then Shape1.visible:=false else Shape1.visible:=true; Memo1.Clear; Memo1.Lines.Add('Отображение фигуры выключено'); end; end. |