Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ВП. казПОС.doc
Скачиваний:
91
Добавлен:
01.05.2015
Размер:
6.47 Mб
Скачать

2 Тапсырма және оларды орындау реті

Графикалық компонениталардың түрін және түсін өзгерте алатын қосымша құру:

  • түс мәнін енгізу арқылы:қызыл, жасыл, көк;

  • бегунокьы үш шкалада орналастыру және оғын түс тағайындау.

Орындау тәртібі

2.1 Form1 қомысшасына келесі компонеталарды қосу:

Standard - Button1, Edit1, Edit2, Edit3, Label1-Label6

Win32 – Trackbar1, Trackbar2, Trackbar3

Additional – Shape1.

    1. Компоненталар құрамын анықтау(Object Inspector/ Properties).

Button1 – Caption құрамын “Цвет” (Color)-на

Edit1, Edit2, Edit3 – Text құрамымен мәнді жою

Label1, Label2, Label3 –Caption құрамымен Red, Green, Blue түстеріне

Trackbar1, Trackbar2, Trackbar3 –Min құрамымен 0 Max 255 орнату

Form1 формасының түрі

2.34-ші сурет

    1. Оқиғаларды өңдеуді қосу (Object Inspector/ Events).

А)Тышқан көмегімен формада компонентаны таңдау.

Б)Тышқанды таңдалған оқиғаға екі рет шерту.

В) код денесін енгізу.

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

    1. Компоненттер құрылымын анықтау (Object Inspector/ Properties).

BitBtn1 – Caption құрылымы үшін Ok.

StaticText1 - Caption үшін Calc_Color (“Калькулятор цвета”)

Timer – Interval 5000

Image1 –Picture

    1. Оқиғаны өңдеуішті қосу (Object Inspector/ Events)

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-ші сурет

Тапсырма

  1. Геометриялық фигуралардың өлшемін басқару үшін TrackBar4 компонентасын қосу.

  2. Оқиғаны өңдеуішті қосу

procedure TForm1.TrackBar4Change(Sender: TObject);

begin

shape1.Height:=trackbar4.position;

shape1.Width:= trackbar4.position;

end;

  1. ОnCreate өңдеуішін қосу Form1 үшін.

Лабораториялық жұмыс № 3. Визуальді компоненталарды қолдану.

Жұмыс мақсаты: Орын ауыстыру және қосу механизмімен танысу.

  1. Негізгі бөлім

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 мәніне ие деп белгілесек. Басқан соң олар үнсіздікте берілген мәндерге ие болады. Басу

  1. Тапсырма және оны орындау тәртібі

Тасу механизмі.

Тасу механизімінің алгоритмі келесілерден тұрады.

  1. BeginDrag – механизм жұмысын белгілейді. DragCursor арқылы тышқан түрін береміз.

  2. Тасу үрдісін орындау. OnDragOver объекттер үшін құрылады. Олар тасылатын объектіні қабылдай алады.

  3. OnDragDrop құрамы тасылатын оюъект тасталатын болса орындалады.

  4. OnEndDrag тасу аяқталғанын білдіреді. Ол тасу дұрыс аяқталған соң жүргізіледі.

Программалаудың келесі этаптарын жүзеге асырыңыз.

    1. Form1 формасын құрамыз, Edit1, панель Panel1және Button1, Button2 батырмаларын қоямыз.

    2. Edit1 үшін OnMouseDown өңдеуішін береміз:

  • тышқанның сол жақ батырмасының басылғандығы тексеріледі.

  • BeginDrag false мәніне ие. Ол тасу үрдісі басталмағандығын білдіреді.

Procedure Tform1. Edit1MouseDown (Sender, Source: Tobject;

Button : TmouseButton;

Shift : TshiftState; X,Y : Integer);

begin

if Button = mbLeft then

Edit1.BeginDrag (false) ;

end;

    1. Panel1 объектісіOnDragOverөңдеуішін құрамыз.

  • мұнда тасылатын объект Edit1-де енгізілгендігін тексереді;

  • Accept параметрініне тексеру мәні жазылады.

procedure Tform1. Panel1DragOver (Sender, Source: Tobject;

X,Y :Integer;

State : TdragState; var Accept : Boolean);

begin

Accept := Source = Edit1;

end;

    1. Panel1 объектісі үшін OnDragDrop өңдеуішін құрамыз. Ол тасукезінде тасталу орын алса іске қосылады. Мұнда ақырғы текстін жазылуы орындалады.

Procedure Tform1. Panel1DragDrop (Sender, Source: Tobject;

X,Y :Integer);

begin

Panel1.Caption := Edit1.Text;

end;

    1. Button1 батырмасын басқанда орындалатын оқиғаларды құрыңыз:

  • тышқанның сол жақ батырмасының басылғандығы тексеріледі

  • метод шақырылады.

  • Қабылдауды форманың өзі алу керек. Ол үшін ол OnDragOver өңдеуішімен өңделуі керек.

  • Тағы да ол OnDragDrop өңдеуішін алу керек. Ол формадағы орынлы анықтау үшін керек(құрам Left и Top):

procedure Tform1. FormDragDrop (Sender, Source: Tobject;

X,Y :Integer);

begin

(Source as Tbutton) . Left := X;

(Source as Tbutton). Top := Y;

end;

    1. Программаны орындалуға жіберіңіз. Тексті текріп, оны панелге тасу арқылы көшіріңіз. Егер сызылған дөңгелек шықса, онда тастау орын алды деген сөз. Ал квадратты стрелка көрінсе, онда тасу жүзеге асты дегеді білдіреді.

Тапсырма

  1. Button1 үшін тышқанның оң жағы басылғанда орындалатын оқығаарды беріңіз. Ол форманы жабуы керек немесе процедураны өзгертуі тиіс.

  2. Button2 үшін Form2-ге өту процедурасын жазу.

Қосу механизмі

Қосу механизмін программалаусыз орындауға болады. Ол үшін келесілер орындалуы тиіс:

    1. Form2 құрамыз, онда Panel1 және Panel2-ні орналастырамыз. Бірінші панелде 2 батыра Button1 және Button2 орналасады.

    2. Panel1 және Panel2-нің құрылымын өзгерту керек. Ол қосылатын екі палитраны көрсету үшін жасалады.

Құрамы

Ауыстыру

DockSite

True

DragMode

DmAutomatic

DragKind

DkDock

Button1, Button2 компоненттеріне келесі өзгерістер орнату керек: батырмалар толық палитра бола алмайды, сондықтан оларды DockSite құрылымы жоқ.

Құрылым

Ауыстыру

DragMode

DmAutomatic

DragKind

DkDock

Программаны орындауға жіберу, және қандай өзгерстер болғандығын түсіндіріңіз.

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;

Тапсырма

    1. Button1 және Button2 батырмасының Form2 формасында орын ауыстыруына тиыи салынғандығын түсіндіріңіз.

    2. CheckBox1, CheckBox2, CheckBox3 –ті Form2 орналастырыңыз. CheckBox1- Panel2-ге батырманы қабылдауға тиым салады, CheckBox2- Form2-ге батырманы қабылдауға тиым салады, CheckBox3 - Panel2-де батырманың орнын ауыстыруға тиым салады

Begin

If CheckBox1.Checked = true then

CanDock := not(DockClient is TButton);

End;

Лабораториялық жұмыс № 4. Көпқұжатты қосымшаны құру (MDI)

Жұмыстың мақсаты: көпқұжатты қосымшалы формалар іс-әрекетін және олардлың жалпы принциптерімен танысу.

  1. Негізге бөлім

Көпқұжаты қосымша бір ған форманфы иемдене алады. Оның ішінде бірнеше дочерлің терезелер орналасуы мүмкін. Бас форма басқару элементтерінсіз болады. Оларға – жазбалар, кестелер, жолдар, өйткені олар дочерлік терезелерде көрінеді. Ал қалған клиенттік аймаз дочерлік терезелерде орын алады.

FormStyle терезе түрін анықтайды. Бас формада FormStyle fsMDIForm мәніне ие. Ал дочерлік терезелер fsMDIChildмәніне ие.

  1. Тапсырма және оны орындау тәртібі

Текстік файлдармен жұмыс жасайтын көпқұжаттық қосымша құрамыз.

Алгоритмдер және қосымшаны құру этаптары

    1. Form1 бас формасына компоненттерді орналастыру:

  • Standard - MainMenu1

  • Dialogs–OpenDialog.

    1. Компоненттер құрамын анықтау (Object Inspector/ Properties).

А) тышқанның көмегімен формада компонентті таңдау;

Б) объект инспекторына көшу, онда компоненттін құрамы көрінеді;

В) тышқан арқылы жолды таңдап, оны жойып оынң орнына жаңа мәтін беру;

Form1 – FormStyle құрылымы үшін fsMDIForm беру.

Window (MainMenu1) – GroupIndex құрылымы үшін 5-ті беру

    1. Form2 мұрагерлік формасына келесі компоненталарды орналастыру:

  • Win32 – RichEdit

  • Standard – MainMenu, PopupMenu

  • Dialogs – SaveDialog

    1. Компоненттер құрамын анықтау (Object Inspector/ Properties).

Form2 – FormStyle құрылымы үшін fsMDIForm.

RichEdit - Align үшін alClient

Edit (MainMenu) - GroupIndex құрылымы үшін 1-ді орнату

Format (MainMenu) -GroupIndex құрылымы үшін 1-ді орнату

    1. Оқиғаларды өңдеуішті орнату

Компоненталардың оқиғаларсын өңдеуішті орнату үшін келесі операцияларды жүзеге асыру керек:

А) компонентті таңдау;

Б) объект инспекторына көшу (Events)-ті таңдау;

В) таңдалған оқиғана үшін тышқанды 2 рет шерту.

Г) шыққан процедураға код мәтінін жазу:

type

Tform1 = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

New1: TMenuItem;

Open1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

Window1: TMenuItem;

Tile1: TMenuItem;

Cascade1: TMenuItem;

Arrangeicons1: TMenuItem;

OpenFileDialog: TOpenDialog;

procedure Exit1Click(Sender: TObject);

procedure New1Click(Sender: TObject);

procedure Tile1Click(Sender: TObject);

procedure Cascade1Click(Sender: TObject);

procedure Arrangeicons1Click(Sender: TObject);

procedure Open1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: Tform1;

implementation

uses unit2;

{$R *.dfm}

procedure Tform1.Exit1Click(Sender: TObject);

begin

Close;

end;

procedure Tform1.New1Click(Sender: TObject);

var

n:integer;

begin

form2:=Tform2.Create(self);

for n:=0 to form1.MDIChildCount-1 do

form1.MDIChildren[n].Caption:='Документ'+IntToStr(n);

end;

procedure Tform1.Tile1Click(Sender: TObject);

begin

Tile;

end;

procedure Tform1.Cascade1Click(Sender: TObject);

begin

Cascade;

end;

procedure Tform1.Arrangeicons1Click(Sender: TObject);

begin

ArrangeIcons;

end;

procedure TForm1.Open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

form2.RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

end.

Добавление обработчикoв событий для второй формы:

type

Tform2 = class(TForm)

MainMenu1: TMainMenu;

File1: TMenuItem;

New1: TMenuItem;

Open1: TMenuItem;

Save1: TMenuItem;

Saveas1: TMenuItem;

Exit1: TMenuItem;

Edit1: TMenuItem;

Cut1: TMenuItem;

Copy1: TMenuItem;

Paste1: TMenuItem;

Delete1: TMenuItem;

N3: TMenuItem;

Selectall1: TMenuItem;

Format1: TMenuItem;

Left1: TMenuItem;

Right1: TMenuItem;

Center1: TMenuItem;

N4: TMenuItem;

Wordwrap1: TMenuItem;

N5: TMenuItem;

Font1: TMenuItem;

Editor: TRichEdit;

PopupMenu1: TPopupMenu;

Cut2: TMenuItem;

Copy2: TMenuItem;

Paste2: TMenuItem;

SaveFileDialog: TSaveDialog;

FontDialog1: TFontDialog;

Close1: TMenuItem;

procedure Exit1Click(Sender: TObject);

procedure New1Click(Sender: TObject);

procedure AlignClick(Sender: TObject);

procedure Wordwrap1Click(Sender: TObject);

procedure Cut1Click(Sender: TObject);

procedure Copy1Click(Sender: TObject);

procedure Paste1Click(Sender: TObject);

procedure Selectall1Click(Sender: TObject);

procedure Delete1Click(Sender: TObject);

procedure Edit1Click(Sender: TObject);

procedure Saveas1Click(Sender: TObject);

procedure Save1Click(Sender: TObject);

procedure Font1Click(Sender: TObject);

procedure Close1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

procedure FormCreate(Sender: TObject);

procedure Open1Click(Sender: TObject);

private

{ Private declarations }

PathName: string;

public

{ Public declarations }

procedure Open(const AFileName: string);

end;

var

Form2: Tform2;

const

DefaultFileName = 'Документ';

implementation

uses Clipbrd, unit1;

{$R *.dfm}

procedure Tform2.Exit1Click(Sender: TObject);

begin

Form1.Exit1Click(Sender);

end;

procedure Tform2.New1Click(Sender: TObject);

begin

Form1.New1Click(Sender);

end;

procedure Tform2.Open1Click(Sender: TObject);

begin

Form1.Open1Click(Sender);

end;

procedure Tform2.AlignClick(Sender: TObject);

begin

Left1.Checked := False;

Right1.Checked := False;

Center1.Checked := False;

with Sender as TMenuItem do Checked := True;

with Editor.Paragraph do

if Left1.Checked then

Alignment := taLeftJustify

else if Right1.Checked then

Alignment := taRightJustify

else if Center1.Checked then

Alignment := taCenter;

end;

procedure Tform2.Wordwrap1Click(Sender: TObject);

begin

with Editor do

begin

WordWrap := not WordWrap; { toggle word wrapping }

if WordWrap then

ScrollBars := ssVertical

else

ScrollBars := ssBoth;

WordWrap1.Checked := WordWrap; { set menu item check }

end;

end;

procedure Tform2.Cut1Click(Sender: TObject);

begin

Editor.CutToClipboard;

end;

procedure Tform2.Copy1Click(Sender: TObject);

begin

Editor.CopyToClipboard;

end;

procedure Tform2.Paste1Click(Sender: TObject);

begin

Editor.PasteFromClipboard;

end;

procedure Tform2.Selectall1Click(Sender: TObject);

begin

Editor.SelectAll;

end;

procedure Tform2.Delete1Click(Sender: TObject);

begin

Editor.ClearSelection;

end;

procedure Tform2.Edit1Click(Sender: TObject);

var

HasSelection: Boolean;

begin

Paste1.Enabled := Clipboard.HasFormat(CF_TEXT);

Paste2.Enabled := Paste1.Enabled;

HasSelection := Editor.SelLength > 0;

Cut1.Enabled := HasSelection;

Cut2.Enabled := HasSelection;

Copy1.Enabled := HasSelection;

Copy2.Enabled := HasSelection;

Delete1.Enabled := HasSelection;

end;

procedure Tform2.Open(const AFileName: string);

begin

PathName := AFileName;

Caption := ExtractFileName(AFileName);

with Editor do

begin

Lines.LoadFromFile(PathName);

SelStart := 0;

Modified := False;

end;

end;

procedure Tform2.Saveas1Click(Sender: TObject);

begin

SaveFileDialog.FileName := PathName;

if SaveFileDialog.Execute then

begin

PathName := SaveFileDialog.FileName;

Caption := ExtractFileName(PathName);

Save1Click(Sender);

end;

end;

procedure Tform2.Save1Click(Sender: TObject);

begin

if PathName = DefaultFileName then

SaveAs1Click(Sender)

else

begin

Editor.Lines.SaveToFile(PathName);

Editor.Modified := False;

end;

end;

procedure Tform2.Font1Click(Sender: TObject);

begin

FontDialog1.Font := Editor.Font;

if FontDialog1.Execute then

Editor.SelAttributes.Assign(FontDialog1.Font);

end;

procedure Tform2.Close1Click(Sender: TObject);

begin

Close;

end;

procedure Tform2.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action := caFree;

end;

procedure Tform2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

const

SWarningText = 'Save changes to %s?';

begin

if Editor.Modified then

begin

case MessageDlg(Format(SWarningText, [PathName]), mtConfirmation,

[mbYes, mbNo, mbCancel], 0) of

idYes: Save1Click(Self);

idCancel: CanClose := False;

end;

end;

end;

procedure Tform2.FormCreate(Sender: TObject);

begin

PathName := DefaultFileName;

end;

end.

Лабораториялық жұмыс № 5. ГРАФИКАЛЫҚ РЕДАКТОР

Жұмыс мақсаты: графикалық ақппараттарды енгізу процессі кезінде қолданылатын маңызды құрылғыларды және графикалық редактор жұмыстарына арналған компоненттерді оқып үйрену.

1.НЕГІЗГІ БӨЛІМ

Берілген Лабораториялық жұмыста, барлық Қосымшаң күрделі жұмыстарын қамтамасыз ететін Delphi программалау ортасының, графикалық үстемелерді құруды жеңілдететін мүмкіншіліктері бар.

Графикалық редактор құрудың негізгі компоненттерін қарастырайық.

TСanvas класы графикалық ақпараттарды бейнелнудің барлық мүмкіндіктерін иеленеді. Графикалық объектілерді түрлендіру,сақтау және құру кеңістіктерін қамтамасыз етеді.

TСanvas Delfi-дің негізгі графикалықжүйесі болып табылады.

TСanvas келесілерді қамтамасыз етеді:

- графикалық бейнелерді сақтау және жүктеу;

- жаңа бейнені құрастыру және сақталынған бейнелерді қалам,бояу жаққыш және қаріп көмегімен өзгертеді;

- әртүрлі фигуралар,жолақтар және мәтіндерді бояу және суреттеу;

- әртүрлі бенелерді құрамдастыру;

TСanvas класының метафайлды объект құрастыруға және басқарушы элементтерді бейнелеуге көмектесетін екі Tcontrol Canvas және T Metafile Canvas кластары бар.

Кластардың негізгі әдістерін атап шығайық:

Draw әдісі (x,y; Integer; Graphic, TGraphic) жоғарғы сол жақ бөлігі x,y анықталатын Graphic парметрімен көрсетілген,объектіге кіретін бейненің суретін салады және бейненің бастапқы көлемін сақтайды.

Line To (x,y: Integer) әдісі Den Pos қаламның ағымдағы позициясынан басталып, (x,y) нүктесімен аяқталатын тік жолақты сызады.

Move To әдісі (x,y: Integer) берілген (x,y) нүктесінде Den Pos қаламының ағымдағы позициясын өзгертеді. Бұл Den Pos құрылғысына эквивалентті. Move To әдісімен қозғалған қалам сурет салмайды.

TPicture класы –қолданушымен анықталынған графикалық объект типіндегі метафайлдық пиктограмма және битті матрица типіндегі графиалық объектілердің контейнері болып табылатын объекті жүйелеп көрсетеді,яғни типі Graphic құрылғысымен көрсетілетін кез-келген TGraphic графикалық объектінің контейнері болып табылады.

T Picture объектісі объект типіне қарай автоматты түрде сәйкестендірілетін, Load From File және Save To File–ды жазбаланатын және файлдық оқытылатын әдістер бар.

Сақталатын объектінің типіне байланысты битті матрицалар,пиктограммалар және метфайлдар Bitmap,Icon немесе Meta fileқұрылғыларына сәйкес анықталады. Бұл құрылғыларды қате қарастырғанда алдыңғы объект өшіріліп,жаңа бос объект ашылады. Бұл құрылғылардың орнына Graphic құрылғысы арқылы графикалық объектке рұқсат алуға болады. Егер,графикалық объект битті матрица болса,Image,Picture,Graphic және Image 1Picture Bitmap-на эквивалентті болады.

TPicture объектісінің Clipboard буферіне ауысуы Assign әдісімен іске асады. T Clipboard класы-берілгендерді буфер арқылы ауыстыруға арналған операцияны орындайды. Объект буферін айырбастайтын модулі Clipboard сілтейді. Буфер айырбасы берілген шамаға әртүрлі форматты ұсынады,оған кіретін формат тізімі –Formats Index (Index: Integer) құрылғысы,форматтың жалпы саны-Format Count құрылғысы. Has Format Boolear функциясы Format параметрін сілтейтін, буфер алмасуына,сақталған форматты ажыратуға болатын не болмайтындығы туралы сауал жібереді. Clear әдісі –құрамындағы буферді тазартуға арналған. Copy To Clip Board және Cut To Clip Board әдісі буфер айырбасына берілген шаманы орналастырып,көшірме жасап бастапқы түрінен пішіндейді,ал Paste From Clip Board буферден мәтіндік фрагментті алып шығады. Assign (Sourse: TPersistent) буферден графикалық объектілерді ажыратып,буфер көшірме жасайды.

Tgraphic класы – қолданушымен анықталынған, метафайлды, пиктограммалы, битті матрицалы типтегі графикалық объектілер үшін абстрактілі базалы класс. Өзінен тараған өзге кластарды сақтайды және графикалық объектілерді визуальдайды.

Clip Board буфер айырбасымен және T Picture типті оюъектілер әдісімен жұмыс істейді.

Tgraphic класының құрылғысы бейненің көлемі және күйі туралы ақпарат береді.

Жұмыс жасалатын графиктің типі белгілі болғанда битті матрицаны,пиктограмма және метафайлды TMetafile немесе TCom,Bitmap кластарынан тараған объектілерге қолданады. Егер графика форматы белгісіз болса, Tgraphic-тен тарайтын кез-келген типті графикалық объектімен жұмыс істеуге қабілетті, T Picture класын қолдануға болады.

Кез-кеген суретке TPen объектісінің қаламы,TPresh-тың қылбояғышы және TFont қаріпі кіреді.

TPen типінің Pen объектісі сурет салу барысында жолақтар мен географиялық фигураларды қолдана отырып,қалам атрибуттарын анықтайды. Негізгі құрылымына: Color-қалам түсін басқару үшін, Style-салынатын жолақтың стилін нұсқайды; Келесі көрсетілімдерді қолдана алады:

Ps Solid- біртегіс жолақ

Ps Pash- Сызықша белгісіндегі жолақ

Ps Pot- нүктелік жолақ

Ps Dash Pot- қайталанатын нүкте мен сызықша жолақтары

Ps Clear-көрінбейтін жолақтар

Ps Inside Frame- тікбұрыштың ішкі жолақтары

Width- салынатын жолақтың қалыңдығын пиксельде береді

Mode - сурет салу барысындағы қаламның өзге пиксельдегі жолақтарын әсеріне сәйкес келктін әдісті көрсетеді

Tb rush типінің B rush объектісі геометриялық фиграларды толтыруға арналған өрнектерді анықтайды. Толтырылған фигураларды қылбояғыштардың көмегімен басқаруға болады. Олардың негізгілеріне келесілер жатады:

Color- қылбояғыштың түсін басқарады;

Style- қылбояғышқа стиль беріп,келесі мәндерді қабылдайды:

bs Solid- біртұтас бояу

bs Clear- бояу кіріскен

bs Horizontal- параллель көлденең жолақтар

bs Vertical- параллель тік жолақтар

bs FDiagonal- параллель,жоғары бағытталған диагональді жолақтар

bs Cros- тік торша

bs Diag Cross- қисық торша

Bitmap- қылбояғыштың сапалы стилін қолданатын бейнені көрсетеді

TFont типті объект, бейнеленетін мәтіндегі қаріп биіктігі,оның аты,атрибуттары т.б қолданып,көптеген сипаттамаларды анықтайды.

Жұмыстың орындалу реті және тапсырмалар

Қарапайым графикалық редактор құрастырайық. Қосымша екі формадан құралады: бірінші форма-жеке меншік редактор, екінші форма сурет көлемін қолданушымен шығару.

Қосымша құрудың кезеңдері мен алгоритмі :

  1. Қосымшаның Form1 формасына компоненттер палитрасынан компоненттер енгізу:

Standard бетінен- Main Menu 1, Edit1, Panel 1- Panel 3.

Additiond бетінен- Scroll Box 1, Image 1, Speed Button 1-Speed Button 22

Winбетінен- Up Down 1.

Dialogs бетінен- Open Dialog 1, Color Dialog 1,Save Dialog 1;

Меню пункті- File(опция:New Open Save. Save As Exit)жәнеEdit(опция: Cut Copy Paste).

Меню астындағы формаға үш құрал- сайманды панелін орналастырыңыз:

Panel 1- 6 Speed Button-(тікбұрышты дөңгелек жолақ)

Panel 2- 7 Speed Button-(түс қалыңдықты жолақ түрлері) (Edit 1+ Up Down 1))

Panel 3-9Speed Button-(бояу түстерінің түрлері)

Панелдермен қоса 5 Croll Box 1 және Image 1 орналастырылады.

  1. Компоненттер құрылғыларының анықтамалары (Object Inspector/ Properties)

Барлық компоненттер үшін әрекеттердің бірінен соң бірінің орындалуы бірдей:

а) тышқан көмегімен формаға компонент таңдау;

б) берілген құрылғының компоненттері пайда болатын инспектор объектісіне өту;

в) тышқан көмегімен қажет құрылғылы жолды таңдау, ағымдағы мәнді өшіріп жаңа мәнін енгізу.

Scroll Bo1 үшін – al Client-қа Align құрылғысы

Panel үшін al Top- қа Align құрылғысы

Барлық Speed Button үшін Name құрылғысын сәйкесінше ауыстыру;

Glyph құрылғысы батырмаға сәйкес бейнені орнатады.

  1. Form 2 қосымшалы формасына компоненттер палитрасынан компоненттер енгізу:

Standard бетінен- Button 1, Button 2, Edit 1,Edit 2, Label 1, Label 2.

  1. Компоненттер құрылғыларының анықтамасы (Object Inspector Properties)

Button 1 үшін- Caption құрылғысының Ok-ді басыңыз

Button 2 үшін- Caption құрылғысына Cancel-ді

Label 1 үшін- Caption құрылғысына & енгізу

Label 2 үшін- Caption құрылғысына & биіктік

Edit 1, Edit 2 үшін- Text құрылғысын тазарту

  1. Оқиға өңдегіштерді енгізу (Object Inspector Events) компоненттерге оқиға өңдегіштерді енгізу үшін міндетті түрде келесі әрекеттерді орындау қажет:

а) тышқан көмегімен формаға компонент таңдау;

б) инспектор объектісіне өту және берілген комноненттің (Events) оқиға қосқышын

таңдау;

в) тышқанмен таңдалған оқиғадан сол жақ бағананы екі рет шерту;

г) пайда болған кодтар редакторына begin мен end сөздерінің арасында процедура

денесінің кодын енгізу.

Программа листингі:

Unit unit1;

Interface

Uses

SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,

Buttons, ExtCtrls, ComCtrls, Menus;

Type

TDrawingTool = (dtLine, dtRectangle, dtEllipse, dtRoundRect);

TForm1 = class ( TForm)

Panel1: TPanel;

LineButton: TSpeedButton;

RectangleButton: TSpeedButton;

EllipseButton: TSpeedButton;

RoundRectButton: TSpeedButton;

PenButton: TSpeedButton;

BrushButton: TSpeedButton;

PenBar: TPanel;

BrushBar: TPanel;

SolidPen: TSpeedButton;

DashPen: TSpeedButton;

DotPen: TSpeedButton;

DashDotPen: TSpeedButton;

DashDotDotPen: TSpeedButton;

ClearPen: TSpeedButton;

PenWidth: TUpDown;

PenSize: TEdit;

ScrollBox1: TScrollBox;

Image: TImage;

SolidBrush: TSpeedButton;

ClearBrush: TSpeedButton;

HorizontalBrush: TSpeedButton;

VerticalBrush: TSpeedButton;

FDiagonalBrush: TSpeedButton;

BDiagonalBrush: TSpeedButton;

CrossBrush: TSpeedButton;

DiagCrossBrush: TSpeedButton;

PenColor: TSpeedButton;

BrushColor: TSpeedButton;

ColorDialog1: TColorDialog;

MainMenu1: TMainMenu;

File1: TMenuItem;

New1: TMenuItem;

Open1: TMenuItem;

Save1: TMenuItem;

Saveas1: TMenuItem;

N1: TMenuItem;

Exit1: TMenuItem;

Edit1: TMenuItem;

Cut1: TMenuItem;

Copy1: TMenuItem;

Paste1: TMenuItem;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure LineButtonClick(Sender: TObject);

procedure RectangleButtonClick(Sender: TObject);

procedure EllipseButtonClick(Sender: TObject);

procedure RoundRectButtonClick(Sender: TObject);

procedure PenButtonClick(Sender: TObject);

procedure BrushButtonClick(Sender: TObject);

procedure SetPenStyle(Sender: TObject);

procedure PenSizeChange(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure SetBrushStyle(Sender: TObject);

procedure PenColorClick(Sender: TObject);

procedure BrushColorClick(Sender: TObject);

procedure Exit1Click(Sender: TObject);

procedure Open1Click(Sender: TObject);

procedure Save1Click(Sender: TObject);

procedure Saveas1Click(Sender: TObject);

procedure New1Click(Sender: TObject);

procedure Copy1Click(Sender: TObject);

procedure Cut1Click(Sender: TObject);

procedure Paste1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

BrushStyle: TBrushStyle;

PenStyle: TPenStyle;

PenWide: Integer;

Drawing: Boolean;

Origin, MovePt: TPoint;

DrawingTool: TDrawingTool;

CurrentFile: string;

procedure SaveStyles;

procedure RestoreStyles;

procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);

end;

var

Form1: TForm1;

implementation

uses unit2, Clipbrd;

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Drawing := True;

Image.Canvas.MoveTo(X, Y);

Origin := Point(X, Y);

MovePt := Origin;

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if Drawing then

begin

DrawShape(Origin, Point(X, Y), pmCopy);

Drawing := False;

end;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

if Drawing then

begin

DrawShape(Origin, MovePt, pmNotXor);

MovePt := Point(X, Y);

DrawShape(Origin, MovePt, pmNotXor);

end;

end;

procedure TForm1.LineButtonClick(Sender: TObject);

begin

DrawingTool := dtLine;

end;

procedure TForm1.RectangleButtonClick(Sender: TObject);

begin

DrawingTool := dtRectangle;

end;

procedure TForm1.EllipseButtonClick(Sender: TObject);

begin

DrawingTool := dtEllipse;

end;

procedure TForm1.RoundRectButtonClick(Sender: TObject);

begin

DrawingTool := dtRoundRect;

end;

procedure TForm1.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);

begin

with Image.Canvas do

begin

Pen.Mode := AMode;

case DrawingTool of

dtLine:

begin

Image.Canvas.MoveTo(TopLeft.X, TopLeft.Y);

Image.Canvas.LineTo(BottomRight.X, BottomRight.Y);

end;

dtRectangle: Image.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X,

BottomRight.Y);

dtEllipse: Image.Canvas.Ellipse(Topleft.X, TopLeft.Y, BottomRight.X,

BottomRight.Y);

dtRoundRect: Image.Canvas.RoundRect(TopLeft.X, TopLeft.Y, BottomRight.X,

BottomRight.Y, (TopLeft.X - BottomRight.X) div 2,

(TopLeft.Y - BottomRight.Y) div 2);

end;

end;

end;

procedure TForm1.PenButtonClick(Sender: TObject);

begin

PenBar.Visible := PenButton.Down;

end;

procedure TForm1.BrushButtonClick(Sender: TObject);

begin

BrushBar.Visible := BrushButton.Down;

end;

procedure TForm1.SetPenStyle(Sender: TObject);

begin

with Image.Canvas.Pen do

begin

if Sender = SolidPen then Style := psSolid

else if Sender = DashPen then Style := psDash

else if Sender = DotPen then Style := psDot

else if Sender = DashDotPen then Style := psDashDot

else if Sender = DashDotDotPen then Style := psDashDotDot

else if Sender = ClearPen then Style := psClear;

end;

end;

procedure TForm1.PenSizeChange(Sender: TObject);

begin

Image.Canvas.Pen.Width := PenWidth.Position;

end;

procedure TForm1.FormCreate(Sender: TObject);

var

Bitmap: TBitmap;

begin

Bitmap := nil;

try

Bitmap := TBitmap.Create;

Bitmap.Width := 200;

Bitmap.Height := 200;

Image.Picture.Graphic := Bitmap;

finally

Bitmap.Free;

end;

end;

procedure TForm1.SetBrushStyle(Sender: TObject);

begin

with Image.Canvas.Brush do

begin

if Sender = SolidBrush then Style := bsSolid

else if Sender = ClearBrush then Style := bsClear

else if Sender = HorizontalBrush then Style := bsHorizontal

else if Sender = VerticalBrush then Style := bsVertical

else if Sender = FDiagonalBrush then Style := bsFDiagonal

else if Sender = BDiagonalBrush then Style := bsBDiagonal

else if Sender = CrossBrush then Style := bsCross

else if Sender = DiagCrossBrush then Style := bsDiagCross;

end;

end;

procedure TForm1.PenColorClick(Sender: TObject);

begin

ColorDialog1.Color := Image.Canvas.Pen.Color;

if ColorDialog1.Execute then

Image.Canvas.Pen.Color := ColorDialog1.Color;

end;

procedure TForm1.BrushColorClick(Sender: TObject);

begin

ColorDialog1.Color := Image.Canvas.Brush.Color;

if ColorDialog1.Execute then

Image.Canvas.Brush.Color := ColorDialog1.Color;

end;

procedure TForm1.Exit1Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

CurrentFile := OpenDialog1.FileName;

SaveStyles;

Image.Picture.LoadFromFile(CurrentFile);

RestoreStyles;

end;

end;

procedure TForm1.Save1Click(Sender: TObject);

begin

if CurrentFile <> EmptyStr then

Image.Picture.SaveToFile(CurrentFile)

else SaveAs1Click(Sender);

end;

procedure TForm1.Saveas1Click(Sender: TObject);

begin

if SaveDialog1.Execute then

begin

CurrentFile := SaveDialog1.FileName;

Save1Click(Sender);

end;

end;

procedure TForm1.New1Click(Sender: TObject);

var

Bitmap: TBitmap;

begin

with Form2 do

begin

ActiveControl := WidthEdit;

WidthEdit.Text := IntToStr(Image.Picture.Graphic.Width);

HeightEdit.Text := IntToStr(Image.Picture.Graphic.Height);

if ShowModal <> idCancel then

begin

Bitmap := nil;

try

Bitmap := TBitmap.Create;

Bitmap.Width := StrToInt(WidthEdit.Text);

Bitmap.Height := StrToInt(HeightEdit.Text);

SaveStyles;

Image.Picture.Graphic := Bitmap;

RestoreStyles;

CurrentFile := EmptyStr;

finally

Bitmap.Free;

end;

end;

end;

end;

procedure TForm1.Copy1Click(Sender: TObject);

begin

Clipboard.Assign(Image.Picture);

end;

procedure TForm1.Cut1Click(Sender: TObject);

var

ARect: TRect;

begin

Copy1Click(Sender);

with Image.Canvas do

begin

CopyMode := cmWhiteness;

ARect := Rect(0, 0, Image.Width, Image.Height);

CopyRect(ARect, Image.Canvas, ARect);

CopyMode := cmSrcCopy;

end;

end;

procedure TForm1.Paste1Click(Sender: TObject);

var

Bitmap: TBitmap;

begin

if Clipboard.HasFormat(CF_BITMAP) then

begin

Bitmap := TBitmap.Create;

try

Bitmap.Assign(Clipboard);

Image.Canvas.Draw(0, 0, Bitmap);

finally

Bitmap.Free;

end;

end;

end;

procedure TForm1.SaveStyles;

begin

with Image.Canvas do

begin

BrushStyle := Brush.Style;

PenStyle := Pen.Style;

PenWide := Pen.Width;

end;

end;

procedure TForm1.RestoreStyles;

begin

with Image.Canvas do

begin

Brush.Style := BrushStyle;

Pen.Style := PenStyle;

Pen.Width := PenWide;

end;

end;

end.

Unit unit2;

Interface

Uses

Windows, Classes, Graphics, Controls, Forms, Buttons, ExtCtrls, StdCtrls;

Type

TForm2 = class (TForm)

Ok :Tbutton;

Cansel:Tbutton;

Bevel1:Tbevel;

Label1,label2: Tlabel;

WidttEdit, HeightEdit:Tedit;

End;

Var

Form2: TForm2;

Implementation

{$R *.DFM}

end.

2.36-сурет

Тапсырма: қосымшаны тағы бір Form 3 формасына ауыстырыңыз, бұл үшін Border Style құрылғысын bs Size Tool Win немесе bs Tool Window-ға өзгерт. Форма түрі 1- суретте көрсетілген.

Лабораториялық жұмыс № 6. Анықтамалық қосымшалар жүйесін құрастыру.

Жұмыстың мақсаты: анықтамалық жүйені құру және қосымшаға анықтамалық файлды енгізу.

  1. Негізгі бөлім

Кез-келген сапалы қосымша құрамына автоматты түрде <F1> басқанда немесе (Help) менюіне сәйкес пунктті таңдағанда шақырылатын,кеңейтілуі .HLP болатын анықтамалық файл кіреді. Анықтамалық жүені қосқанда автоматты түрде Win help.exe немесе Win blp 32.exe программасы орындалады. Анықтамалық жүйенің мәтін ретінде көп бөлімнен тұратын гипермәтінді айтуға болады.

Анықтамалық жүйенің өңделуі Delphi-мен емес,Windows ортасымен іске асады. Оның көрсетілуі де Windows Win Help программасымен орындалады. Delphi тек анықтамалық жүйені үстемеге құруға мүмкіндік береді.

Анықтамалық жүйені ұйымдастыру келесі кезеңдерден тұрады:

  • басқарушы элеметтердің формасы үшін анықтамалық жүйенің контекс нөмерін анықтау;

  • Редактор көмегімен мәтіндік файл құру;

  • арнайы компилятор көмегімен анықтамалық файл құру;

  • анықтамалық файлды үстемемен байланыстыру және оларды шақыру ұйымдары;

Жұмыстың көрсетілген кезеңдерін қарастырайық. Microsoft Help Workshop 4 көмегімен NT және Windows 95 анықтамалығын құрудың методикасы қарастырылады. Сәйкес программалар Delphi [Help] Tools каталогында көрсетілген.

Бірінші және соңғы кезеңдері Delphi ортасында орындалады. Контекст-берілген басқарушы элементтердің формасына сәйкес, анықтамалық жүйенің бөлімі анықталатын, HelpContext құрылғысының мәнімен анықталатын сан.

Мәтіннің анықтамасын құруда жүйені толықтай ойластыру қажет. Терезе мен дене нұсқаушы қалай көрінетіндігін және қандай бөлімдерден тұратындығын ойластырып алу қажет. Негізгі терезеге қатысты, оның басында қандай батырма болатындығы, анықтаманың жалпы стилін ойластыру қажет. Қосымша терезелер жайында сауал шешкенде және негізгі және қосымша терезелер арасындағы функциялар таралуын көрсеткенде, қосымша терезелердің меню жолақтарының болмайтындығын көруге болады.

Анықтама мәтінін құрғанда кез-келген мәтіндік редакторды, мысалы Microsoft Word-ты қолдануға болады. Әрбір тақырып басқа құрылғы қатарын және аталуын анықтайтын түсіндірмені қамтиды.

Сол немесе басқа түсіндірмелерде қандай символдар қолданатынын қарастырайық.

Түсіндірме # - әр түрлі тақырыптар жіберілетін тақырыпты бірегей сәйкестендіруші. Бұл сәйкестендірушіге берілген тақырыпқа қолданылатын үстеме анықтамасы жіберілетін номер қойылады.

Түсіндірме К - егер тақырыптар тізімдегі “Пәндік көрсеткіш” бетіндегі анықтамалық жүйенің терезесінде жұмыспен бірге көрсетілсін десеңіз, оны кадрға қосады.

ЖҰМЫСТЫҢ ОРЫНДАЛУЫ РЕТІ ЖӘНЕ ТАПСЫРМА

  1. Алғашқыда Сіз құрастырған қосымшалар ішінен үстеме таңдаңыз, негізгі менюге Helpпунктін енгізіп, берілген қосымшаға анықтамалық файл құрыңыз. Анықтама келесілерден тұруы қажет:

а) тақырыбы

б) мәтін және графикалық бейнелер кіретін бірнеше бөлімдер (беттер)

2. Кез-келген мәтіндік редакторге анықтама бөлімінің мәтінін енгізіңіз (Word).

3. Бір файлға кез-келген шамада бөлімдер енгізуге болады. Әр бір бөлім басқаларынан беттері бойынша ажыратылады, яғни жаңа бетте рәсімделеді. Тақырып беріп, үш бөлімге бөліңіз.

4. Түсіндірме режимінде бөлімдерге сәйкес белгілеулер енгізіңіз ( Қою меню пункті/Түсіндірме ). Нөмірлеу (нумерация) тобындағы сұхбатты терезеге Другая қайта қосқышын қосыңыз және өріске сәйкес келетін символ атрибутын енгізіңіз:

# - контексті (# IDH_001 – тақырыбы үшін, # IDH_002- бірінші бөлім үшін, # IDH_003 – екінші бөлім үшін және т.б.;

$ - басы ($ Мазмұны және т.б.);

K – кілттік сөздер тізімі;

+ - бірінен соң бірі жалғасатын көрсетілімдері нөмері;

! – макрокоманда;

* - тег компиляции.

5. Белгіленген сөз- гиперсілтеу болып табылады, шерткенде басқа анықтаманың бөлімі өту орындалады. Мәтіннің көрінісін гипернұсқауы түрінде жасау үшін міндетті түрде келесі әрекеттерді орындау қажет:

1) көрініс аяқталғаннан соң еш кедергісіз идентификатор бөлімін енгізіңіз, мысалы IDH_002 программасы жайлы;

2) екі бөлімнің қаріпті рәсімдеуі екі түрліше болады (Формат меню пункті/Шрифт, Эффект терезесінің сұхбатты терезесі).

Сызылған программа жөнінде (немесе қос жолақпен белгіленген).

IDH_002 – жасырын.

Бөлімнің қаріпін ажыратып көрсетіңіз.

6. Құжат анықтамасының барлық бөлімі дайындалғаннан соң, .RTF форматында сақталады.

7. Үстемеге анықтама мәтінін қолдануда ол .HLP форматындағы .RTF форматынан түрленуі қажет, осыны анықтамалық файлдың компиляциясы деп атайды. Компилятор– Microsoft Help Workshop – DELPHI\ HELP\TOOLS каталогындағы Hcrtf.exe орындалатын файлы компилятор терезесінде File->New (Файл.->Создать) командасы орындалады. Ашылған сұхбатты терезеде Help Proejct (Анықтамалық жүйенің проект - кеңейтілуі.HPJ) пунктін таңдаңыз. Ерте құрылған мәтіндік файлдың анықтамалық жүйе проектісіне қосылу үшін Files (Файлдар) батырмасын басады және пайда болған терезеде керекті .RTF формат файлын таңдайды. Save and Compile (Сақтау және құрастыру) батырмасын басқанда проект компиляциясы орындалады және анықтамалық файл пайда болады. Компиляция нәтижесі арнайы терезеде көрсетіледі. Қателік жөнінде хабарлама болмаса, анықтамалық файлда ақпарат болады.

8. Құрылған файл– өңделген үстемедегі каталогқа көшіру керек. Delphi жүйесінде Project-> Options (Проект -> Параметрлер) командасы орындалады және Browse (Обзор) батырмасы көмегімен Help file (Файл справки) өрісінде Application (Қосымша) файлды таңдайды.

9. Форма менюінде Help (Көмек) пунктін енгізіңіз және анықтаманы шақыру үшін келесі өңдегіштерді жазыңыз:

Application.HelpCommand (Help_Contents,0) .

Нәтижесінде қосылған файлдың бастапқы бөлімі шақырылады.

procedure TForm1.help1Click(Sender: TObject);

begin

Application.HelpCommand(Help_Contents, 0);

end;

Лабораториялық жұмыс № 7. МӘЛІМЕТТЕР БАЗАСЫМЕН ЖҰМЫС.

Жұмыс мақсаты: локальді мәліметтер базасымен ортасын және мүмкіншіліктерін оқып үйрену Delphi берілгендер фильтрациясы және іздністер жұмыстары.

1. НЕГІЗГІ БӨЛІМ

Мәліметтер базасы (МБ) құрылымды ақпараттарды сақтаудың қолайлы ортасы болып табылады. МББЖ – бұл МБ құруға, енгізуге және қолдануға арналған тілдік және программалық құралдар жиынтығы. Іздестіруді ыңғайлы ұйымдастыру және ақпаратты талдау, оны қолданудың эффективтілігін арттыруға қабілетті.

Берілгенді сақтаушы ақпараттың сақталуын және оның қамтамасыз етілуіне жауапты. Реляционды МБ – сы өзара қарым – қатынасты кестелерден тұрады. Бизнес логикасы, Қосымшаң құрал – саймандық аймағының анықтамасының жиынтығын өткізеді, яғни ақпаратты өзгерту және толықтыру тәртібін. Қолданбалы бағдарламалар немесе үстеме МБ – сына кіретін берілгенді өңдеуге қатысады, берілгендерді қолданушы қол жетімді формаға енгізеді және бизнес логикасымен қарым – қатынаста болу үшін интерфейсті қамтамасыз етеді. Онда МБ – сының қосылуы Borland Database Engine (процессор доступа к базам данных или BDE) ортасымен іске асады. МБ – сымен жұмыс компоненттерін келесі топтарға бөлуге болады:

- локальді немесе жойылған МБ ( DataSet) – на кіруге рұқсат етілген берілгендер жиынтығы;

- берілгендермен байланысқан, қолданушымен бірге интерфейс ұйымдасуына қызмет ететін басқарушы элементтер (Data Controls беттері бар палитралы компоненттер);

- бірінші екі компоненттермен байланысты қамтамасыз ететін берілгендер көзі (DataSource).

Элементтер

пайдаланушы

интерфейсі

BDE

DataSet

Components

Form Data Module BDE Local DataBase

Data Module басқа формалар секілді басқа объектілерді орналастыруға арналған, бірақ формадан айырмашылығы, мұнда интерфейс элементтерімен байланысты қамтамасыз ететін көрінбейтін компоненттер орналасқан. МБ – на кіруге рұқсат етілген компоненттер Data Access палитра компоненттерінің беттерінен табылады.

МБ – мен басқарылатын жүйелерді келесі белгілеріне қарай классификациялауға болады.

Берілген шамаларды сақтау типіне қарай:

- файлдық;

- серверлік;

Файлдық сақтағыштар өзімен бірге бір директорияда орныққан, МБ сның кестелік файлының жиынын көрсетеді. Клиентті Қосымшаң файлдық жүйе деңгейіндегі кестелерге кіруге рұқсат ала алады.

Серверлік – сақтағыш клиенттік Қосымшаң сауалы бойынша МБ –дағы ақпараттан ажыраған программаны көрсетеді.

Қабат мөлшеріне қарай:

- қос деңгейлі;

- көп деңгейлі;

Қос деңгейлі МББЖ клиентті үстемеге бизнес логикасын және қолданбалы функцияны көрсетеді. Мысалы жұмыс мынадай сақтаушыға берілгендерді жеткізетін, бақылайтын және тексеріс функциясын өткізетін және клиенттік үстеме қолданушыға берілгендерді кескіндейтін классикалық МББЖ үстемесінің сұлбасы болып табылады.

Көп деңгейлі (әдетте, 3-еу) үстемесінің клиентті программадан басқа арнайы серверлік үстемесі болады. Серверлік үстеме, сауалдың дұрыстығын тексере отырып, сұрастырылған берілгендерді клиентті программаға жіберіп, сақтаушы кіруге рұқсат етілетін функцияны қарастырады.

Delphi жүйесі МБ–лы операциясы үшін келесі құрал–сайманды әдістерді ұсынады:

  • Borland Database Engine (BDE) – Delphi үстемесінен МБ–на кіруге рұқсат етілетін ұйымды көрсететін кітапхана жиынтығын беретін МБ–на кіретін процессор;

  • BDE Administrator – BDE–ны реттегіш утилита. МБ–ның әр түрлі праметрлерін реттеуге мүмкіншілік туғызады;

  • Database Desktop – құруға арналған программа және SQL және QBE сауалын кестелерді редакциялау;

  • SQL Explorer – МБ–сының праметрлерін күйіне келтіретін МБ–ның таратушысы.

  • SQL Monitor – SQL-сауалын орындалу тәртібін қиындататын программа.

  • SQL Links – алыстатылған өндірістік МББЖ–не рұқсат етілетін драйвер (мысалы, MS SQL Server немесе Oracle);

  • Local InterBase Server – клиент сервердағы алыстатылған МБ–сымен жұмысқа арналған үстемеге қолданылатын SQL-сервердің Borland InterBase жергілікті нұсқасы екі бірмезгілде сервер бірігуіне сәйкес есептелінген.

  • InterBase Server for Windows – төрт бірмезгілді бірігуге сәйкес есептелінген SQL-сервера Borland InterBase көпшілік қолданбалы нұсқасы.

TDataSet класының әмбебап әдістері. TDataSet класы МБ–на кіруге рұқсат етілген функцияның базалы виртуальді компоненттер класы. Оның көп әдістері ауқымды келеді. Оның берілген шаманы іздестіретін екі әдісі бар: Locate және Lookup. Айтылған әдістер берілген шартты қанағаттандыратын жазбаларды іздейді.

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;

function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; virtual;.

Бұлардың арасындағы айырмашылық, Locate функциясы жазбаны іздестіргенде табылған жазбаға курсорды орнықтырады, ал Lookup бұлай жасамайды. Егерде іздестіруге ұсынылған өріс үдетілген болса, онда іздестіруді тездететін индекс қолданылады.

Бірнеше өріске іздестіру жүргізгенде, олардың барлығы Locate функциясының параметріне түгелденіп шығады.

Ttable класының әдістері. TTable әдісі МБ–ның кестелерімен жұмыс жасауға арналған. Берілеген компонент МБ–ның қос деңгейлі үстемесіне қолданылады немесе МБ–ның үшдеңгейлі үстемесінің серверіне. Ttable бірден кестедегі барлық жазбаны шығаратындықтан, TQuery–ге қарағанда, Ttable–ді МБ–ның клиент–серверлік жұмысына қолдану айтарлықтай қолайлы. Ал, TQuery тек шарт сауалын қанағаттандырады.

Компоненттер берілгендерді іздестірудің бірнеше өзгеше әдістерін иеленеді. Көрсетілген әдістер тек, индексирленген өрістер бойынша іздестіруге қолданылады (dBase және Paradox үшін минимум). Барлығыда екі топқа бөлінеді:

- бір жазбаны іздестіру әдісі;

- диапазон жазбасындағы іздестіру әдісі.

Ең бірінші, бірінші әдістер тобын қарастырайық. Оларға GotoKey, FindKey, GotoNearest, FindNearestжатады. Бірінші екі әдіс күрделі сәйкестікті іздестіруге арналған, басқалары бөлшекті сәйкестікті іздейді.

Tquery қолдану. TQuery компоненті берілгендерді SQL (Structured query language) тіл көмегімен ажыратуға арналған компонент үшдеңгейлі сервер үстемесіне және МБ–мен қос деңгейлі үстемеге арналған жұмыстарда қолданылады.

TQuery компонентінің жазбаларды іздестірудің арнайы әдістері болмайды, бірақ іздестіру мүмкіншіліктері SQL тіліне қойылған. Select үстемесімен алынатын қарапайым берілгендер, where үстемесі көмегімен өткізіледі.

Айтылған әдіс, іс–тәжірибеде қолданғанда қиындатылатын кемшіліктерді иеленеді:

1) Қосымша қолданушы SQL тілінде талдай алуы қажет;

2) сауал синтаксисін автоматты бақылайтын құралы бар;

3) сауал мәтінін өлшегенде, ол әр уақыт сайын компилирленеді және талдау жасалынатын серверге жіберіледі;

4) қолданушыға сауал генерациялағанда кестелер атын және МБ–ның өрісін міндетті түрде білу қажет.

ЖҰМЫСТЫҢ ОРЫНДАЛУ АЛГОРИТМДЕРІ

Жергілікті МБ–мен (Paradox, dBase, FoxPro) жұмыста үстеме құрудың негізгі кезеңдері:

1) МБ–сын құру;

2) МББЖ құру.

МБ құру

1. 1-кестеден нұсқа таңдаңыз, ұстазға МБ–ның алғашқы нұсқасынан қағаз беріңіз,

онымен келісіп МБ–сын құрастырыңыз, кесте, өріс саны мен құрамы кестеде берілген, содан Қосымшаң электронды нұсқасын, яғни жұмысты МБ–сын жобалаудан бастаңыз.

2. МБ–сын тіркемесі BDE Administrator утилиті көмегімен іске асады. Екі әдіспен шақыруға болады:

  • жұмыс үстелінен Пуск/Программы/BorlandDelphi6/BDE Administrator ;

  • Delphi ортасынан негізгі менюден DataBase/Explorer пунктін таңдаймыз.

Негізгі менюдегі BDE Administrator терезесінен Object/New пунктін таңдаңыз және пайда болған терезеде құрылатын МБ–ның типін атсыз қалдырдырыңыз (Standard), ОК (2 сурет). Сол жақ терезеге МБ–ның лақап атын қалдырыңыз, ал оң жақтағысына МБ–сы орнығатын РАТН каталогына дұрыс жолды таңдаңыз.

2.37–сурет. BDE Administrator терезесі

3. Delphi жүйесінің негізгі менюіне Tools→ Database Desktop пунктін таңдаңыз, осының арқасында сіз МБ–ның кесте құруға арналған бағдарламасын шақыра аласыз (3–сурет).

2.38–сурет. Database Desktop бағдарламасы

Онда File/New/ Table командасы бойынша кесте құрылымының анықиама терезесі ашылады. Кесте құру үшін интерактивті режимде өтеді, бірінен соң бірі болатын әрекеттер орындалады: кесте форматын таңдаңыз (Paradox 7.0 үнсіздік бойынша), кесте құрылымын анықтайтын терезеде өрістер аты, типі және мөлшері, белгісіз өрістермен қосымша Table properties құрылымы анықталады, кесте құрылымы анықталғаннан соң оны міндетті түрде Save as... пен сактаған жөн, содан кейін, берілген мәндермен құрылған кестені толтырыңыз File/Open/Table командасымен немесе құрал–саймандар панеліндегі Open батырмасын басу арқылы.

4. Құрылған кестеден МБ–сын құрылымдау. Міндетті түрде екінші текті индекса-цияның орындалуын орындау және «бірдің көпшілікке қатынасын» онату. Мұндай байланысты Master-Detail (негізгі кесте – көмекші кесте) деп атайды. File/Open/Table командасымен көмекші кестені ашыңыз, кесте құрылымын өзгертуде Table/Restructure командасын таңдаңыз. Төмен түсетін Table properties тізімінен Referential Integrity элементін танданыз және Define батырмасын басыңыз. Пайда болған сұхбатты Referential Integrity (3–сурет) терезесіне көмекші кестелер арасына байланыс орнатыңыз. Update rule қайта қосқышы негізгі кестедегі байланыс өрісінің мәні өзгергендегі кестенің сарқылмас әсерін анықтайды.

- сascade – каскадты сарқылмас өзгеріс және бағыныңқы жазбаның көмекші кестелердегі жойылуы;

- рrohibit –жазба жойылуы немесе байланыс аймағының өзгерісіне жол бермеу.

2.39-сурет.

МББЖ құру

1. МББЖ проектін құру, яғни форма, құрамы, компоненттер тіркелуі және арасындағы байланыс тізімі.

2. Жаңа үстеме құрудан бастаңыз. Негізгі менюден File/New Data Module пунктін таңдап, оған берілгендер модулін орнатыңыз. Онда барлық формалы үстемелер базасына кіруге рұқсат етілетін компоненттер орналасады. Егер үстеме бір ғана формадан тұрса, онда тікелей формаға қолданушының визуальды компоненттер интерфейсін орнатуға болады, сонымен қатар, МБ-на кіруге рұқсат етілетін визуальды емес компоненттер.

3. МБ-на кіруге рұқсат етілетін компоненттер модуліне - TТable, TdataSource, олардың мөлшері жоғарыда көрсетілген МБ-сындағы кестелер мөлшерімен анықталады. Инспектор объектісінде бұл компоненттер құрылғысын реттеуге мына тізім қолданылады:

Tтable – DataBaseName және TableName құрылғысы;

TdataSource –DataSet құрылғысы.

4. Интерфейс ұйымы. Палитралы компоненттер бетін ашыңыз және формаға керекті компоненттерді енгізіңіз. Мысалы, МБ-сының кестелері кестелер түрінде бейнеленетін компоненттер. Оларға DataSource құрылғысын орнату қажет. Егерде төмен түсетін түсетін тізім бос болса, онда форманы берілгендер модулімен байланыстырыңыз, File →Use Unit командасымен де орындауға болады. Енді компоненттер үшін DataSource құрылғысын орнатуға болады және оны таңдап алынған кестемен байланыстыруға болады. Берілген кестеге Active True құрылғысын орнатуды ұмытпаңыз.

5. Тапсырыс берілетін форма құру QReport бетінің компоненттерін қолданып, жүйе жұмысының нәтижесін шығару үшін принтер немесе файлды сақтауға тапсырыс берілетін форма құрыңыз.

Тапсырма: сіздің МБ қолданған жұмыс үшін экранды формадан тұратын, 1-ші кестеден таңдалған нұсқаға сәйкес құрылған үстеме мен жергілікті МБ-сын құрыңыз. Қарапайым тапсырысты, бір өріс бойынша құрылған мәліметтер базасының тапсырыс, анықталынған өрістегі фильтрі бар тапсырыстарды қарастыру.

2.8 кесте

Тапсырмалар тақырыбының нұсқалары

№нұс

Тақырып

№нұс

Тақырып

1

Деканат

15

Мекен-жай кітабы

2

Кафедра

16

Жаттығулардың турнирлік кестесі

3

Кітапхана

17

Кинотеатр

4

Кадр бөлімі

18

Қонақ үй

5

Бухгалтерия

19

Аэропорт (вокзал)

6

Салықтар

20

Дәріхана

7

Тестілік сынақ

21

Аурухана (емхана)

8

Үлгерім аттестациясы

22

Қоймалар

9

Сабақ кестесі

23

Дүкендер

(кітап, азық-түлік.)

10

Компьютерлік ойындардың каталогы

24

Компьютерлер (микросхемалар)

11

Бейнетека (аудио)

25

Автокөліктер

12

Ұялы байланыс

26

Жылжымайтын мүлік

13

ALMA-TV

27

Туристік фирма

14

Телефон анықтамалығы

28

Сіздің нұсқаңыз