Печатать книгуПечатать книгу

§ 5. Стварэнне дадаткаў

Сайт: Профильное обучение
Курс: Інфармацыйныя тэхналогіі. 11 клас (Базавы ўзровень)
Книга: § 5. Стварэнне дадаткаў
Напечатано:: Гость
Дата: Четверг, 25 Апрель 2024, 12:02

5.1. Распрацоўка аконных дадаткаў

Стварэнне любога аконнага дадатку ажыццяўляецца, як правіла, у тры этапы:

  1. Стварэнне інтэрфейса дадатку, г. зн. сродкаў узаемадзеяння карыстальніка з праграмай.
  2. Распрацоўка сцэнарыя работы будучага дадатку. На гэтым этапе вызначаюць, якая інфармацыя будзе выводзіцца на экран, якія падзеі будуць адбывацца пры выкарыстанні розных кампанентаў, як дадатак павінен завяршыць работу, якія вынікі і ў якім выглядзе захаваць і г. д.
  3. Распрацоўка алгарытму рашэння пастаўленай задачы.

Большасць дадаткаў у аперацыйнай сістэме Windows выглядаюць і паводзяць сябе падобным чынам. Кампанія Microsoft прапанавала рэкамендацыі для распрацоўкі праграмнага забеспячэння, накіраваныя на тое, каб карыстальнік не марнаваў час на засваенне нюансаў карыстальніцкага інтэрфейса новай праграмы, а адразу пачаў прадуктыўна яе выкарыстоўваць. Гэтыя рэкамендацыі заснаваныя на псіхафізіялагічных асаблівасцях чалавека і істотна палегчаць жыццё будучым карыстальнікам вашай праграмы.

Прывядзём некаторыя рэкамендацыі па распрацоўцы графічнага інтэрфейса аконных дадаткаў (прыклад 5.1)

Прыклад 5.1. Рэкамендацыі па стварэнні аконных дадаткаў.

  1. У дадатку рэкамендуецца размясціць галоўнае меню і інструментальную панэль хуткіх кнопак, дублiруючых асноўныя раздзелы меню.
  2. Пажадана, каб аб'екты дадатку валодалі кантэкстнымі меню, якія з'яўляюцца пры націску правай клавішай мышы па аб'екце.
  3. Для аб'ектаў рэкамендуецца прапісаць падказкі, усплывальныя пры навядзенні паказальніка мышы на аб'ект.
  4. Рэкамендуецца рэалізаваць радок стану, які выкарыстоўваецца для выдавання рознай інфармацыі.
  5. Пры націску клавішы F1 павінен загружацца файл даведкі.
  6. У праграме пажадана рэалізаваць магчымасць налады і захавання налад, каб пры наступным сеансе працы іх не прыйшлося ўстанаўліваць нанова.
Магутным уздзеяннем на псіхіку чалавека з'яўляецца колер, таму з ім трэба абыходзіцца вельмі асцярожна. Трэба імкнуцца выкарыстоўваць абмежаваны набор колераў і надаваць увагу іх правільнаму спалучэнню. Успрыманне колеру ў чалавека вельмі індывідуальна, таму не варта навязваць усім сваё бачанне колеру. Пажадана, каб асноўны колер формы быў нейтральным (напрыклад, у большасці дадаткаў Microsoft гэта светла-шэры колер).

5.2. Стандартныя дыялогі

Практычна любы дадатак Windows выкарыстоўвае стандартныя дыялогі, убудаваныя ў аперацыйную сістэму, для адкрыцця і захавання файлаў, выбару атрыбутаў шрыфту або ўстаноўкі колеру, пошуку тэксту, друку. У бібліятэку VCL уключаны кампаненты, якія рэалізуюць адпаведныя вокны Windows. Яны размешчаны на панэлі Dialogs (прыклад 5.2). У прыкладзе 5.3 прыведзены пералік кампанентаў для рэалізацыі стандартных дыялогаў Windows.

Аб'екты, якія прадстаўлены на старонцы Dialogs, нябачныя падчас выканання, таму месца іх размяшчэння на форме не мае значэння (прыклад 5.4). Знешні выгляд акна дыялогу залежыць ад версіі Windows.

Выклік і апрацоўка дыялогаў адбываецца праграмна. Для ўсіх дыялогаў вызначаны метад Execute: Boolean (прыклад 5.5). З дапамогай гэтага метаду адбываецца адкрыццё акна адпаведнага дыялогу. Значэнне True надаецца функцыі Execute у выпадку, калі карыстальнік пстрыкнуў па кнопцы Ok (выканаў двайную пстрычку па назве файла або націснуў клавішу Enter). Ва ўласцівасцях кампанента-дыялогу запамінаецца выбар карыстальніка, які затым можна апрацаваць. Калі ў дыялогу была націснутая кнопка адмена або клавіша Esc, то функцыя атрымае значэнне False.

Дыялогі для адкрыцця і захавання файлаў (прыклад 5.6) выкарыстоўваюцца ў розных дадатках. Асноўная ўласцівасць кампанентаў OpenDialog і SaveDialog, у якой вяртаецца ў выглядзе радка імя файла,  гэта ўласцівасць FileName. Калі задаць дадзеную ўласцівасць на этапе канструявання ў акне інспектара аб'ектаў, то пры адкрыцці дыялогу яна будзе з'яўляцца ў радку Імя файла.

Для выкліку стандартнага акна ўстаноўкі атрыбутаў шрыфту можна выкарыстоўваць кампанент FontDialog (пример 5.7). У акне Шрифт карыстальнік можа выбраць імя шрыфту, яго стыль, памер, колер. Асноўная ўласцівасць кампанента — Font тыпу TFont. Метад, які дазволіць прысвоіць значэннi ўсіх выбраных атрыбутаў шрыфту кампанента — метад Assign.

Для выкліку стандартнага акна ўстаноўкі колеру выкарыстоўваецца кампанент ColorDialog (прыклад 5.8). У ім можна выбраць колер з базавай палітры. Асноўная ўласцівасць кампанента ColorDialog — Color. Гэта ўласцівасць адпавядае таму колеру, які карыстальнік абраў у дыялогу.

Прыклад 5.2. Панэль Dialogs.

Прыклад 5.3. Спіс некаторых стандартных дыялогаў.

Кампанент

Прызначэнне

Стварэнне акна дыялогу «Адкрыць файл»

Стварэнне акна дыялогу «Захаваць файл»

Стварэнне акна дыялогу «Адкрыць малюнак»

Стварэнне акна дыялогу «Захаваць малюнак»

Стварэнне акна дыялогу «Шрыфт» — выбар атрыбутаў шрыфту

Стварэнне акна дыялогу «Колер» — выбар колеру

Стварэнне акна дыялогу «Друк»

Прыклад 5.4. Дыялогавыя кампаненты і кнопкі для іх выкліку на форме:

Прыклад 5.5. Стандартны зварот да дыялогу:

if <імя кампанента-дыялогу>.Execute then

<каманды, якія выкарыстоўваюць выбар карыстальніка>

Прыклад 5.6. Стандартныя дыялогі для адкрыцця і захавання файла:

Прыклад 5.7. Стандартны дыялог для налады шрыфту:

Прыклад 5.8. Стандартны дыялог для выбару колеру:

5.3. Стварэнне меню

Практычна любы дадатак павінен мець меню, якое дае зручны доступ да функцый праграмы. Існуе некалькі тыпаў меню:

  • галоўнае меню з выпадальнымі спісамі раздзелаў;
  • каскадныя меню, у якіх раздзелу першаснага меню ставіцца ў адпаведнасць спіс падраздзелаў;
  • кантэкстныя меню, якія з'яўляюцца пры націску правай клавішай мышы па аб'екце.

У Delphi меню ствараюцца кампанентамі MainMenu (галоўнае меню) и PopupMenu  (кантэкстнае меню), размешчанымі на панэлі Standard. На форме кампаненты можна размяшчаць у любым месцы, падчас выканання праграмы самі кампаненты нябачныя (прыклад 5.9). На этапе выканання праграмы галоўнае меню будзе змешчана на сваё стандартнае месца  наверсе формы, кантэкстнае меню з'явіцца толькі пасля націску правай кнопкі мышы па тым кампаненце, да якога яно адносіцца.

Для дадання новых пунктаў меню трэба зрабіць двайную пстрычку па MainMenu1 або націснуць на кнопку    каля ўласцівасці Items у акне інспектара аб'ектаў. Адкрыецца акно рэдактара меню (прыклад 5.10). Кожны пункт меню з'яўляецца асобным аб'ектам. Назвы пунктаў меню прапісваюцца ва ўласцівасці Caption у акне інспектара аб'ектаў. Стварэннем пунктаў меню можна кіраваць з кантэкстнага меню (прыклад 5.11). Пункт Create Submenu дазваляе ствараць каскадныя меню. Структуру меню можна ўбачыць у акне (прыклад 5.12).

Для кожнага пункта меню асноўнай падзеяй з'яўляецца OnClick.

Стварэнне кантэкстных меню аналагічна стварэнню галоўнага меню. Пункты меню дадаюцца ў акне рэдактара меню. Для таго каб пры пстрычцы правай кнопкай мышы на некаторым кампаненце з'яўлялася кантэкстнае меню, трэба напісаць імя кантэкстнага меню ва ўласцівасці PopupMenu для вылучанага кампанента (прыклад 5.13)

Прыклад 5.9. Меню на форме:

Прыклад 5.10. Рэдактар меню:

Калі ў якасці значэння ўласцівасці Caption увесці «–», то замест пункта меню з'явіцца раздзяляльнік.

Прыклад 5.11. Кантэкстнае меню рэдактара:

Прыклад 5.12. Структура меню:

Прыклад 5.13. Кантэкстнае меню для кампанента Button1:

Напісанне апрацоўшчыкаў для меню і дыялогаў будзе разгледжана ў наступных пунктах.

5.4. Стварэнне дадатку «Блакнот»

Размясціць на форме (прыклад 5.14) наступныя кампаненты:

  • рабочая вобласць для тэксту — Memo1;
  • дыялогі работы з файламі  — OpenDialog1, SaveDialog1;
  • дыялогі для налады знешняга выгляду дадатку — FontDialog1, ColorDialog1;
  • галоўнае меню — MainMenu.

Кампанент Мемо прызначаны для набору і рэдагавання тэксту. Для таго, каб кампанент займаў усю кліенцкую частку формы, неабходна ўстанавіць ва ўласцівасці Align значэнне asClient (прыклад 5.15). Дадаць вертыкальную паласу пракруткі, выбраўшы значэнне ssVertical для ўласцівасці ScrollBars.

Для таго каб ачысціць рабочую вобласць кампанента, неабходна выклікаць рэдактар радкоў (String List Editor) і выдаліць тэкст Memo1. Рэдактар радкоў выклікаецца націскам кнопкі ва ўласцівасці кампанента Lines (прыклад 5.16).

Структура меню прадстаўлена ў прыкладзе 5.17. Для напісання апрацоўшчыкаў пунктаў меню трэба ў інспектары аб'ектаў выбраць адпаведны пункт меню, перайсці на ўкладку Events і выбраць падзею OnClick. Паколькі падзея OnClick з'яўляецца падзеяй па змоўчванні, то двайны клік па пункце ў рэдактары меню або па адпаведным радку ў раздзеле Structure створыць працэдуру апрацоўшчык.

Апрацоўшчыкі падзей для кожнага з пунктаў меню прадстаўлены ў прыкладзе 5.18.

Для захавання і загрузкі файлаў апішам глабальную пераменную FileName:

var FileName: String;

Апрацоўшчык пункта меню Создать (N2) ачышчае радкі кампанента Memo ад уведзенага раней тэксту.

Апрацоўшчыкі пунктаў меню Открыть (N3) и Сохранить (N4) працуюць з файлам. Імя файла дадаецца да загалоўка акна.

Апрацоўшчык пункта меню Выход (N6) закрывае галоўную форму праекта.

Апрацоўшчык пункта меню Шрифт (N8) прыпісвае шрыфту, звязанаму з кампанентам Memo, уласцівасці, выбраныя карыстальнікам.

Апрацоўшчык пункта меню Цвет фона (N9) устанаўлівае для Memo колер фону, абраны карыстальнікам.

Акно дадатку падчас работы паказана ў прыкладзе 5.19.

Для кампанента Memo вызначаны наступныя дзеянні: Капіраваць (Ctrl + C), Выразаць (Ctrl + X), Уставіць (Ctrl + V), Адмяніць (Ctrl + Z).

Прыклад 5.14. Форма на этапе канструявання:

Прыклад 5.15. Налада кліенцкай вобласці:

Прыклад 5.16. Рэдактар радкоў:

Прыклад 5.17. Структура меню:

Прыклад 5.18. Апрацоўшчыкі падзей для пунктаў меню:

procedure TForm1.N2Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    FileName := OpenDialog1.FileName;
    Memo1.Lines.LoadFromFile(FileName);
    Form1.Caption:='Блакнот '+FileName;
  end;

end;

procedure TForm1.N4Click(Sender: TObject);

begin
  if SaveDialog1.Execute then
  begin
    FileName := SaveDialog1.FileName;
    Memo1.Lines.SaveToFile(FileName);
    Form1.Caption:='Блакнот '+FileName;
  end;
end;

procedure TForm1.N6Click(Sender: TObject);

begin
  Form1.Close;
end;

procedure TForm1.N8Click(Sender: TObject);

begin
  if FontDialog1.Execute then
    Memo1.Font.Assign(FontDialog1.Font);
end;

procedure TForm1.N9Click(Sender: TObject);

begin
  if ColorDialog1.Execute then
    Memo1.Color:=ColorDialog1.Color;
end;

Прыклад 5.19. Дадатак у час работы:

5.5. Стварэнне дадатку «Графічны рэдактар»

Праграма павінна даваць магчымасць адкрыць і захаваць файл, выбраць колер лініі і колер фону, устанавіць таўшчыню лініі. Маляванне выконваецца вылучаным колерам лініі пры націснутай левай клавішы мышы. Пры націску правай клавішы мышы адбываецца перафарбоўка колерам фону абмежаванай вобласці.

Спачатку спраектуем форму, размясціўшы на ёй наступныя кампаненты (прыклад 5.20):

  • вобласць для малявання — Image1;
  • палітру асноўных 16 колераў — ColorGrid1 (панэль кампанентаў Samples);
  • кампаненты, якія адлюстроўваюць абраны колер для малявання і колер фону — Panel1, Panel2;
  • кампанент выбару колеру — ColorDialog1;
  • кампанент для выбару таўшчыні лініі — SpinEdit1 (панэль кампанентаў Samples);
  • галоўнае меню — MainMenu1 і кампаненты для работы з файламі — OpenPictureDialog1, SavePictureDialog1.

Ва ўласцівасці GridOrdening для кампанента ColorGrid1 устанавіць значэнне go8x2, якое дазволіць размясціць кампанент гарызантальна.

На этапе канструявання ўстанавіць значэнне ўласцівасці Color у кампанентаў Panel1 і Panel2 — clBlack і clWhite адпаведна.

Ва ўласцівасцях Value і MinValue для кампанента SpinEdit1 устанавіць значэнне 1.

Структура меню паказана ў прыкладзе 5.21. Апрацоўшчыкі падзей прыведзены ў прыкладзе 5.22.

Для таго каб праграма загружалася з бачнай вобласцю для малявання, трэба пры стварэнні формы выканаць які-небудзь зварот да Image1, напрыклад зафарбаваць белым колерам піксель з каардынатамі (0; 0).

Для праверкі націснутай клавішы мышы апішам апрацоўшчык падзеі OnMouseDown для кампанента Image1. Параметр Button у гэтага апрацоўшчыка можа прымаць значэнні mbLeft або mbRight у залежнасці ад націснутай левай ці правай клавішы мышы.

Для адсочвання траекторыі руху мышы па кампаненце Image1 ствараем апрацоўшчык падзеі OnMouseMove. Параметр Shift у апрацоўшчыка дазваляе вызначыць, якая з клавіш мышы была націснутая, а параметры x, y вяртаюць каардынаты пункту, у якім адбыўся націск кнопкі.

Для перамяшчэння мышы трэба выкарыстоўваць метады Canvas: LineTo(x, y) — перамяшчэнне са следам і MoveTo(x, y) — перамяшчэнне без следу.

Апрацоўшчык падзеі OnChange для кампанента ColorGrid1 дазволіць вызначыць вылучаны колер. Уласцівасці ForegroundColor і BackgroundColor у гэтага кампанента, якія адказваюць за асноўны і фонавы колеры, змяняюцца пры націску левай і правай кнопак адпаведна. Паралельна змяняецца колер панэляў.

Таўшчыня лініі вызначаецца значэннем уласцівасці Value для кампанента SpinEdit1. Апрацоўшчык падзеі — OnChange.

Апрацоўшчыкі падзей для кампанентаў OpenPictureDialog1, SavePictureDialog1 выклікаюцца з адпаведных пунктаў меню і з'яўляюцца аналагічнымі апрацоўшчыкам, апісаным для праграмы Блакнот. Для захавання і загрузкі файлаў трэба апісаць глабальную радковую пераменную FileName. Дадатак можа захоўваць і загружаць файлы фармату bmp.

З дапамогай кампанента ColorDialog1 можна выбраць колер лініі або заліўкі, адсутныя на панэлі ColorGrid1. Пункты меню Цвет, дазваляюць выбраць колер лініі або заліўкі адпаведна.

Стварэнне малюнка і загрузка файла ў дадатак прыведзены ў прыкладзе 5.23.

Прыклад 5.20. Форма на этапе канструявання:

Прыклад 5.21. Структура меню:

Прыклад 5.22. Апрацоўшчыкі падзей:

procedure TForm1.FormCreate(Sender: TObject);

begin

  Image1.Canvas.Pixels[0,0] := clWhite;

end;

 

procedure TForm1.Image1MouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

begin

  //націснута левая клавіша мышы

  if Button = mbLeft then

    Image1.Canvas.MoveTo(x,y);

  //націснута правая клавіша мышы

  if Button = mbRight then

    Image1.Canvas.FloodFill(x, y, Image1.Canvas.pixels[x,y],fsSurface);

end;

 

procedure TForm1.Image1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

  //перамяшчэнне з націснутай левай

  //кнопкай мышы

  if ssLeft in Shift then

    Image1.Canvas.LineTo(x,y);

end;

 

procedure TForm1.ColorGrid1Change(Sender: TObject);

begin

  //выбар асноўнага колеру

  //левай клавішай мышы

  Image1.Canvas.Pen.Color := ColorGrid1.ForegroundColor;

  Panel1.Color := ColorGrid1.ForegroundColor;

  //выбар фонавага колеру

  //правай клавішай мышы

  Image1.Canvas.Brush.Color := ColorGrid1.BackgroundColor;

  Panel2.Color := ColorGrid1.BackgroundColor;

end;

 

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

  Image1.Canvas.Pen.Width := SpinEdit1.Value;
end;

procedure TForm1.N2Click(Sender: TObject);

begin

  Image1.Picture := Nil;

  Image1.Canvas.Pixels[0,0] := clWhite;

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

  if OpenPictureDialog1.Execute then

  begin

    FileName:=OpenPictureDialog1.FileName;

    Image1.Picture.LoadFromFile(FileName);

    Form1.Caption:='MyPaint '+FileName;

  end;

end;

 

procedure TForm1.N4Click(Sender: TObject);

begin

  if SavePictureDialog1.Execute then

  begin

    FileName:=SavePictureDialog1.FileName;

    Image1.Picture.SaveToFile(FileName);

    Form1.Caption:='myPaint '+FileName;

  end;

end;

 

procedure TForm1.N6Click(Sender: TObject);

begin

  Form1.Close;

end;

 

procedure TForm1.N8Click(Sender: TObject);

begin

  if ColorDialog1.Execute then

  begin

    Panel1.Color:=ColorDialog1.Color;

    Image1.Canvas.Pen.Color := ColorDialog1.Color;
  end;
end;

 

procedure TForm1.N9Click(Sender: TObject);

begin

  if ColorDialog1.Execute then

  begin

    Panel2.Color:=ColorDialog1.Color;

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

  end;

end;

Прыклад 5.23. Дадатак у час працы:

  

5.6. Стварэнне дадатку «Калькулятар»

Стварэнне калькулятара пачнём з канструявання формы. На ёй трэба размясціць: поле Edit для ўводу/вываду лікаў, 10 кнопак з лічбамі, 4 кнопкі з арыфметычнымі дзеяннямі, кнопку «=» і кнопку «С» — ачысціць (прыклад 5.24).

Пры націску на кнопку з лічбай праграма павінна дапісаць гэтую лічбу да ліку ў поле Edit. Пры націску на кнопку з арыфметычным дзеяннем трэба запомніць лік, які ў дадзены момант знаходзіцца ў полі Edit, і ачысціць поле для уводу другога ліку. Лікі будзем захоўваць у дзвюх пераменных n1, n2 тыпу integer. Знак аперацыі будзем захоўваць у пераменнай znak тыпу char. Пераменныя апісваюцца як глабальныя. Пры націску на кнопку «=» выконваецца арыфметычнае дзеянне і выводзіцца вынік.

Для адлюстравання кнопак можна выкарыстоўваць кампанент BitBtn, тады кнопкі могуць змяшчаць малюнак на паверхні (напрыклад, малюнкі з лічбамі). Уласцівасць для размяшчэння малюнка — Glyph.

Устанавіць значэнне bsDialog для ўласцівасці BorderStyle формы. У гэтым выпадку мяжа формы не дазволіць мяняць яе памеры.

Коды працэдур апрацоўшчыкаў прыведзены ў прыкладзе 5.25.

Для кожнай кнопкі на форме трэба стварыць апрацоўшчык падзеі OnClick.

Апрацоўшчыкі падзей для ўсіх лічбавых кнопак будуць ідэнтычныя.

Апрацоўшчыкі для кнопак арыфметычных дзеянняў будуць адрознівацца толькі значэннем запамінальнай аперацыі.

Асноўныя вылічэнні адбываюцца ў апрацоўшчыка кнопкі «=». Пераўтворым у лік n2 значэнне поля Edit і выконваем арыфметычную аперацыю ў залежнасці ад значэння пераменнай znak. Пасля гэтага абнуляем пераменныя.

У апрацоўшчыка кнопкі «С» (от англ. clear — ачысціць) адбываецца абнуленне пераменных і ачыстка поля Edit.

Акно дадатку падчас работы паказана ў прыкладзе 5.26.

Створаны калькулятар мае вялікую колькасць абмежаванняў у сваёй працы, паколькі разлічаны на вылічэнні толькі з натуральнымі лікамі.

Прыклад 5.24. Форма на этапе канструявання:

Прыклад 5.25. Апрацоўшчыкі падзей:

//апісанне глабальных пераменных

var n1, n2: integer;

    znak: char;

 

procedure TForm1.BitBtn10Click(Sender: TObject);

begin

  //прыпісванне лічбы да ліку

  Edit1.Text := Edit1.Text + '0';

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  //прыпісванне лічбы да ліку

  Edit1.Text := Edit1.Text + '1';

end;

Для астатніх лічбавых кнопак трэба змяніць толькі '1' на адпаведную лічбу.

procedure TForm1.BitBtn11Click(Sender: TObject);

begin

  n1 := StrToInt(Edit1.Text);

  //запамінанне знака аперацыі

  znak := '+';

  Edit1.Clear;

end;

Для астатніх кнопак са знакамі арыфметычных дзеянняў трэба змяніць толькі '+' на адпаведны знак.

procedure TForm1.BitBtn15Click(Sender: TObject);

begin

  n2 := StrToInt(Edit1.Text);

  case znak of

    '+': Edit1.Text := IntToStr(n1 + n2);

    '-': Edit1.Text := IntToStr(n1 - n2);

    '*': Edit1.Text := IntToStr(n1 * n2);

    '/': Edit1.Text := IntToStr(n1 div n2);

  end;

  n1 := 0;

  n2 := 0;

  znak := ' ';

end;

 

procedure TForm1.BitBtn16Click(Sender: TObject);

begin

  Edit1.Clear;

  n1 := 0;

  n2 := 0;

   znak :=' ';

end;

Прыклад 5.26. Дадатак у час працы:

Практыкаванні

 

1. Дапоўніце праект Блакнот наступнымі магчымасцямі.

  1.  Пункт меню Захаваць файл замяніць двума: Захаваць і Захаваць як…
  2.  Дадаць пункт меню Пераносіць па словах.
  3.  Дадайце магчымасць кіравання палосамі пракруткі: усталяваць гарызантальную, вертыкальную, абедзве.
  4. *Дадайце наступныя дыялогі: Параметры старонкі, Друк, Пошук, Замена і адпаведныя пункты ў меню.
  5.  Дадайце кантэкстнае меню для кіравання кампанентам Memo. Каманды кантэкстнага меню, дублiруючыя каманды асноўнага меню, павінны выклікаць тыя ж апрацоўшчыкі.
  6. Прапануйце свае магчымасці.

2. Для праекта Графічны рэдактар дадайце наступныя магчымасці.

  1.  Маляваць адрэзкі, авалы і прамавугольнікі.
  2.  Выбіраць спосаб заліўкі: перафарбоўванне колеру або да контуру.
  3.  Прапануйце свае магчымасці.

3. Для праекта Калькулятар дадайце наступныя магчымасці.

  1.  Магчымасць работы з рэчавымі лікамі.
  2.  Магчымасць вылічаць значэннi функцый: здабыванне квадратнага кораня, узвядзенне ў квадрат, трыганаметрычныя функцыі (для градусаў і радыян) і інш.
  3. *Магчымасць пераводу лікаў у іншыя сістэмы злічэння.
  4.  Прапануйце свае магчымасці.