Кулінарна книга - Курсовая работа

бесплатно 0
4.5 29
Розробка програми, яка зможе групувати кулінарні рецепти в категорії, забезпечить запис нових рецептів, видалення будь-якого рецепту (одночасно з бази даних і з диску). Редагування рецепту, його перейменування, переміщення, копіювання до іншої категорії.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Задача розробки кулінарної книги також вимагає створення каталогізатора кулінарних рецептів, щоб можна було легко, а головне, швидко знайти потрібний рецепт, створити новий, перемістити будь-який рецепт до будь-якої категорії тощо. Універсальність програми є в тому, що кожний користувач має повний доступ до бази даних категорій рецептів і до рецептів, має можливість групувати рецепти таким чином, щоб йому було зручно ними користуватися. Потрібно зробити програму, яка зможе групувати кулінарні рецепти в категорії, забезпечить запис нових рецептів, видалення будь-якого рецепту (одночасно з бази даних і з диску), редагування рецепту, його перейменування, переміщення, копіювання рецепту до іншої категорії, завантаження рецепту з текстового файлу, збереження рецепту в текстовий файл, створення нової категорії, видалення категорії (при видаленні категорії потрібно видаляти всі рецепти, що в ній знаходяться), перейменування категорії, допоможе в пошуку потрібного рецепту за ключовими словами його назви. Програма повинна бути насичена діалогами як інформаційними так і підтверджувальними, щоб повідомляти користувача про неможливість виконання якоїсь операції (наприклад збереження рецепту, не ввівши його імя), запитувати підтвердження перед дією яка веде до втрати даних (видалення рецепту, категорії), щоб користувач випадково натиснувши «не ту клавішу», не знищив потрібну йому інформацію. панель управління рецептами, яка складається з 10 кнопок («створення нового рецепту», «редагування нового рецепту», «переміщення рецепту в іншу категорію», «копіювання рецепту в іншу категорію», «видалення рецепту», «пошук рецепту», «перейменування рецепту», «перейменування категорії», «завантаження рецепту з файлу», «збереження рецепту у файл»);Кожен користувач програми має повний доступ до бази даних категорій рецептів і до самих рецептів. Можливий розвиток програми - включення нового функціоналу, наприклад: друк рецепту, друк всієї категорії, друк всіх рецептів, створення деревовидної структури категорій, так щоб категорії також могли містити інші категорії, фото кулінарного виробу, багатокористувацький режим, захист рецепту або категорії паролем.

Вывод
Всі вимоги виконані: розроблена і протестована програма «Кулінарна книга» - програма управління кулінарними рецептами.

Програма є універсальною, такою, що підходить як для домашнього користування, так і для установ громадського харчування. Кожен користувач програми має повний доступ до бази даних категорій рецептів і до самих рецептів. Він може групувати їх таким чином, щоб йому було зручно ними користуватися.

Можливий розвиток програми - включення нового функціоналу, наприклад: друк рецепту, друк всієї категорії, друк всіх рецептів, створення деревовидної структури категорій, так щоб категорії також могли містити інші категорії, фото кулінарного виробу, багатокористувацький режим, захист рецепту або категорії паролем.

При тестуванні було виявлено такі переваги і недоліки використовуваного методу: Переваги - простота, надійність, дружній інтерфейс, працює у віконному режимі, розвита графіка.

Недоліки - великий обсяг необхідної оперативної памяті (близько 8 МБ).

Список литературы
1. Баженова И.Ю., Delphi 7. Самоучитель программиста. - Москва, “Кудиц-образ ОЦ НОУ”, 2003.

2. Джулиан Банкелл. Фундаментальные алгоритмы и структуры данных в Delphi. - Санкт-Петербург, “ДИАСОФТЮП“, 2001.

3. Кандзюба С.П., Громов В.Н., Delphi 6/7. Базы данных и приложения. Лекции и упражнения. - Москва, “ДИАСОФТЮП“, 2002.

4. Круподьорова Л.М. Методичні вказівки для курсового проектування, ВНТУ, 2004.

5. Власюк В.Х. Програмування алгоритмічними мовами,ВДТУ, 2004

Додаток

Текст програми "Кулінарна книга"

MAINFORMUNIT.PAS unit MAINFORMUNIT;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, STDCTRLS, EXTCTRLS, Menus, COMCTRLS, MYLIB, RECINTERFACEUNIT, ASKDIALOGUNIT, tdb_lib, RECEDITORFORMUNIT,EXTDLGS, skins, IMGLIST;

type

TMAINFORM = class(TFORM)

MAINMENU1: TMAINMENU;

POPUPMENU1: TPOPUPMENU;

N1: TMENUITEM;

N2: TMENUITEM;

Panel1: TPANEL;

Label1: TLABEL;

CATCB: TCOMBOBOX;

Panel2: TPANEL;

l: TLISTBOX;

Memo: TMEMO;

Label2: TLABEL;

Label4: TLABEL;

STATUSBAR1: TSTATUSBAR;

Image1: TIMAGE;

N3: TMENUITEM;

N4: TMENUITEM;

N5: TMENUITEM;

N6: TMENUITEM;

N7: TMENUITEM;

N8: TMENUITEM;

N9: TMENUITEM;

N10: TMENUITEM;

N11: TMENUITEM;

N12: TMENUITEM;

N13: TMENUITEM;

OPENDIALOG1: TOPENDIALOG;

SAVEDIALOG1: TSAVETEXTFILEDIALOG;

IMAGELIST1: TIMAGELIST;

N14: TMENUITEM;

N15: TMENUITEM;

N16: TMENUITEM;

imgnorm: TIMAGELIST;

imgon: TIMAGELIST;

imgclick: TIMAGELIST;

Panel3: TPANEL;

Im1: TIMAGE;

Im2: TIMAGE;

Im3: TIMAGE;

Im4: TIMAGE;

Im5: TIMAGE;

Im10: TIMAGE;

Im9: TIMAGE;

Im8: TIMAGE;

Im7: TIMAGE;

Im6: TIMAGE;

imcat: TIMAGELIST;

Image2: TIMAGE;

N17: TMENUITEM;

N18: TMENUITEM;

N19: TMENUITEM;

N20: TMENUITEM;

N21: TMENUITEM;

N22: TMENUITEM;

N23: TMENUITEM;

N24: TMENUITEM;

N25: TMENUITEM;

N26: TMENUITEM;

N27: TMENUITEM;

procedure LCLICK(Sender: TOBJECT);

procedure CATCBCHANGE(Sender: TOBJECT);

procedure FORMCREATE(Sender: TOBJECT);

procedure Image1Click(Sender: TOBJECT);

procedure N2Click(Sender: TOBJECT);

procedure Im3Click(Sender: TOBJECT);

procedure Im5Click(Sender: TOBJECT);

procedure Im2Click(Sender: TOBJECT);

procedure Im1Click(Sender: TOBJECT);

procedure Im6Click(Sender: TOBJECT);

procedure N5Click(Sender: TOBJECT);

procedure N6Click(Sender: TOBJECT);

procedure N7Click(Sender: TOBJECT);

procedure N8Click(Sender: TOBJECT);

procedure N10Click(Sender: TOBJECT);

procedure N12Click(Sender: TOBJECT);

procedure N13Click(Sender: TOBJECT);

procedure SPEEDBUTTON5Click(Sender: TOBJECT);

procedure N11Click(Sender: TOBJECT);

procedure Im4Click(Sender: TOBJECT);

procedure Im10Click(Sender: TOBJECT);

procedure Im7Click(Sender: TOBJECT);

procedure Im8Click(Sender: TOBJECT);

procedure Im9Click(Sender: TOBJECT);

procedure LDBLCLICK(Sender: TOBJECT);

procedure N15Click(Sender: TOBJECT);

procedure N14Click(Sender: TOBJECT);

procedure N9Click(Sender: TOBJECT);

procedure N16Click(Sender: TOBJECT);

procedure FORMCLOSEQUERY(Sender: TOBJECT; var CANCLOSE: Boolean);

procedure Im8MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im8MOUSELEAVE(Sender: TOBJECT);

procedure Im8MOUSEENTER(Sender: TOBJECT);

procedure Im8MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im1MOUSEENTER(Sender: TOBJECT);

procedure Im1MOUSELEAVE(Sender: TOBJECT);

procedure Im2MOUSELEAVE(Sender: TOBJECT);

procedure Im3MOUSELEAVE(Sender: TOBJECT);

procedure Im4MOUSELEAVE(Sender: TOBJECT);

procedure Im5MOUSELEAVE(Sender: TOBJECT);

procedure Im6MOUSELEAVE(Sender: TOBJECT);

procedure Im7MOUSELEAVE(Sender: TOBJECT);

procedure Im9MOUSELEAVE(Sender: TOBJECT);

procedure Im10MOUSELEAVE(Sender: TOBJECT);

procedure Im10MOUSEENTER(Sender: TOBJECT);

procedure Im9MOUSEENTER(Sender: TOBJECT);

procedure Im7MOUSEENTER(Sender: TOBJECT);

procedure Im6MOUSEENTER(Sender: TOBJECT);

procedure Im5MOUSEENTER(Sender: TOBJECT);

procedure Im4MOUSEENTER(Sender: TOBJECT);

procedure Im3MOUSEENTER(Sender: TOBJECT);

procedure Im2MOUSEENTER(Sender: TOBJECT);

procedure Im1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im3MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im4MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im5MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im6MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im7MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im9MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im10MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im10MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im9MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im7MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im6MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im5MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im4MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im3MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure LKEYPRESS(Sender: TOBJECT; var Key: Char);

procedure FORMSHOW(Sender: TOBJECT);

procedure MEMOENTER(Sender: TOBJECT);

procedure MEMOEXIT(Sender: TOBJECT);

procedure Image1MOUSEENTER(Sender: TOBJECT);

procedure Image1MOUSELEAVE(Sender: TOBJECT);

procedure Image1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Image1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Image2MOUSEENTER(Sender: TOBJECT);

procedure Image2MOUSELEAVE(Sender: TOBJECT);

procedure Image2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Image2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Image2Click(Sender: TOBJECT);

procedure N18Click(Sender: TOBJECT);

procedure N20Click(Sender: TOBJECT);

procedure N19Click(Sender: TOBJECT);

procedure N21Click(Sender: TOBJECT);

procedure N22Click(Sender: TOBJECT);

procedure N23Click(Sender: TOBJECT);

procedure N24Click(Sender: TOBJECT);

procedure N27Click(Sender: TOBJECT);

procedure N25Click(Sender: TOBJECT);

procedure N26Click(Sender: TOBJECT);

procedure POPUPMENU1Popup(Sender: TOBJECT);

procedure N3Click(Sender: TOBJECT);

public m_CATDBFILENAME, m_RECDBFILENAME, m_ROOTFOLDER, m_DATAFOLDER : string;

m_CURRECFILENAME : string;

m_CURRECID, m_CURCATID : longint;

m_cl3DLIGHT : TCOLOR;

m_CLCREAM : TCOLOR;

procedure FILLCATCB;

procedure ONSELECTCAT;

procedure ONSELECTRECEPT;

procedure ONDELETE;

procedure DELETERECEPT(RECID : longint);

procedure ONDELETECATEGORY;

procedure ONADDCATEGORY;

procedure ONMOVETOCAT;

procedure ONEDIT;

procedure ONNEWREC;

procedure ONFIND;

procedure ONSAVETOFILE;

procedure ONCOPYTOCAT;

procedure ONOPENFROMFILE;

procedure ONRENAMERECEPT;

procedure ONRENAMECAT;

procedure APPLYNORMCOLORSOVERRGB;

end;

procedure ONSELECTRECEPTWITHID(RECID, CATID : longint);

var

MAINFORM: TMAINFORM;

implementation uses SIMPLESELECTINLISTBOXUNIT, EDITTEXTUNIT, SEARCHINSTRINGSUNIT, ZASTUNIT;

{$R *.dfm} procedure TMAINFORM.FORMCLOSEQUERY(Sender: TOBJECT; var CANCLOSE: Boolean);

begin if not self.Visible then begin

CANCLOSE := false;

exit;

end;

CANCLOSE := false;

ASKDIALOG.Run("Ви дійсно хочете вийти з програми?", true, true, false, true);

if ASKDIALOG.m_SELECTEDITEM = 1 then

CANCLOSE := true;

end;

procedure TMAINFORM.FORMCREATE(Sender: TOBJECT);

begin

APPLYNORMCOLORSOVERRGB;

Application.HINTCOLOR := m_cl3DLIGHT;

Application.HINTPAUSE := 52;

m_ROOTFOLDER := mylib.GETFOLDERFORFILENAME(Application.EXENAME);

m_DATAFOLDER := m_ROOTFOLDER "data\";

m_CATDBFILENAME := m_DATAFOLDER "CATDB.DBE";

m_RECDBFILENAME := m_DATAFOLDER "RECDB.DBE";

if not FINDLOCALFOLDER (m_DATAFOLDER "\") then

CREATEFOLDER(m_DATAFOLDER "\");

if not FILEEXISTS(m_CATDBFILENAME) then

CREATECATDATABASE(m_CATDBFILENAME);

if not FILEEXISTS(m_RECDBFILENAME) then

CREATERECDATABASE(m_RECDBFILENAME);

FILLCATCB;

MENUITEMSOBJECT.PREPAREPOPUPMENUFORSKIN(popupmenu1, self);

MENUITEMSOBJECT.PREPAREMAINMENUFORSKIN(MAINMENU1, self);

end;

procedure TMAINFORM.FORMSHOW(Sender: TOBJECT);

begin if CATCB.Items.Count < 1 then begin

ASKDIALOG.Run("Для роботи з програмою необхідно мати хоча б одну категорію." #13

"Створити категорію? Натисніть "Так" для створення, "Ні" для виходу.", true, true, false, false);

if ASKDIALOG.m_SELECTEDITEM 1 then halt else

ONADDCATEGORY;

if CATCB.Items.Count < 1 then halt;

end;

if l.Items.Count > 0 then l.SETFOCUS;

end;

procedure TMAINFORM.Im9Click(Sender: TOBJECT);

begin

ONOPENFROMFILE;

end;

procedure TMAINFORM.Im9MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(9, im9.Picture.Bitmap);

im9.Repaint;

end;

procedure TMAINFORM.Im9MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(9, im9.Picture.Bitmap);

im9.Repaint;

end;

procedure TMAINFORM.Im9MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(9, im9.Picture.Bitmap);

im9.Repaint;

end;

procedure TMAINFORM.Im9MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(9, im9.Picture.Bitmap);

im9.Repaint;

end;

procedure TMAINFORM.Im10Click(Sender: TOBJECT);

begin

ONSAVETOFILE;

end;

procedure TMAINFORM.Im10MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(10, im10.Picture.Bitmap);

im10.Repaint;

end;

procedure TMAINFORM.Im10MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(10, im10.Picture.Bitmap);

im10.Repaint;

end;

procedure TMAINFORM.Im10MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(10, im10.Picture.Bitmap);

im10.Repaint;

end;

procedure TMAINFORM.Im10MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(10, im10.Picture.Bitmap);

im10.Repaint;

end;

procedure TMAINFORM.Image1Click(Sender: TOBJECT);

begin

ONDELETECATEGORY;

end;

procedure TMAINFORM.Image1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imcat.GETBITMAP(2, image1.Picture.Bitmap);

image1.Repaint;

end;

procedure TMAINFORM.Image1MOUSEENTER(Sender: TOBJECT);

begin imcat.GETBITMAP(1, image1.Picture.Bitmap);

image1.Repaint;

end;

procedure TMAINFORM.Image1MOUSELEAVE(Sender: TOBJECT);

begin imcat.GETBITMAP(0, image1.Picture.Bitmap);

image1.Repaint;

end;

procedure TMAINFORM.Image1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imcat.GETBITMAP(0, image1.Picture.Bitmap);

image1.Repaint;

end;

procedure TMAINFORM.Image2Click(Sender: TOBJECT);

begin

ONADDCATEGORY;

end;

procedure TMAINFORM.Image2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imcat.GETBITMAP(5, image2.Picture.Bitmap);

image2.Repaint;

end;

procedure TMAINFORM.Image2MOUSEENTER(Sender: TOBJECT);

begin imcat.GETBITMAP(4, image2.Picture.Bitmap);

image2.Repaint;

end;

procedure TMAINFORM.Image2MOUSELEAVE(Sender: TOBJECT);

begin imcat.GETBITMAP(3, image2.Picture.Bitmap);

image2.Repaint;

end;

procedure TMAINFORM.Image2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imcat.GETBITMAP(3, image2.Picture.Bitmap);

image2.Repaint;

end;

procedure TMAINFORM.Im4Click(Sender: TOBJECT);

begin

ONCOPYTOCAT;

end;

procedure TMAINFORM.Im4MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(4, im4.Picture.Bitmap);

im4.Repaint;

end;

procedure TMAINFORM.Im4MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(4, im4.Picture.Bitmap);

im4.Repaint;

end;

procedure TMAINFORM.Im4MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(4, im4.Picture.Bitmap);

im4.Repaint;

end;

procedure TMAINFORM.Im4MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(4, im4.Picture.Bitmap);

im4.Repaint;

end;

procedure TMAINFORM.Im3Click(Sender: TOBJECT);

begin

ONMOVETOCAT;

end;

procedure TMAINFORM.Im3MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(3, im3.Picture.Bitmap);

im3.Repaint;

end;

procedure TMAINFORM.Im3MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(3, im3.Picture.Bitmap);

im3.Repaint;

end;

procedure TMAINFORM.Im3MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(3, im3.Picture.Bitmap);

im3.Repaint;

end;

procedure TMAINFORM.Im3MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(3, im3.Picture.Bitmap);

im3.Repaint;

end;

procedure TMAINFORM.Im5Click(Sender: TOBJECT);

begin

ONDELETE;

end;

procedure TMAINFORM.Im5MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(5, im5.Picture.Bitmap);

im5.Repaint;

end;

procedure TMAINFORM.Im5MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(5, im5.Picture.Bitmap);

im5.Repaint;

end;

procedure TMAINFORM.Im5MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(5, im5.Picture.Bitmap);

im5.Repaint;

end;

procedure TMAINFORM.Im5MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(5, im5.Picture.Bitmap);

im5.Repaint;

end;

procedure TMAINFORM.Im2Click(Sender: TOBJECT);

begin

ONEDIT;

end;

procedure TMAINFORM.Im2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(2, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TMAINFORM.Im2MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(2, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TMAINFORM.Im2MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(2, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TMAINFORM.Im2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(2, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TMAINFORM.Im1Click(Sender: TOBJECT);

begin

ONNEWREC;

end;

procedure TMAINFORM.Im1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(1, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TMAINFORM.Im1MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(1, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TMAINFORM.Im1MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(1, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TMAINFORM.Im1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(1, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TMAINFORM.Im6Click(Sender: TOBJECT);

begin

ONFIND;

end;

procedure TMAINFORM.Im6MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(6, im6.Picture.Bitmap);

im6.Repaint;

end;

procedure TMAINFORM.Im6MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(6, im6.Picture.Bitmap);

im6.Repaint;

end;

procedure TMAINFORM.Im6MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(6, im6.Picture.Bitmap);

im6.Repaint;

end;

procedure TMAINFORM.Im6MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(6, im6.Picture.Bitmap);

im6.Repaint;

end;

procedure TMAINFORM.Im7Click(Sender: TOBJECT);

begin

ONRENAMERECEPT;

end;

procedure TMAINFORM.Im7MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(7, im7.Picture.Bitmap);

im7.Repaint;

end;

procedure TMAINFORM.Im7MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(7, im7.Picture.Bitmap);

im7.Repaint;

end;

procedure TMAINFORM.Im7MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(7, im7.Picture.Bitmap);

im7.Repaint;

end;

procedure TMAINFORM.Im7MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(7, im7.Picture.Bitmap);

im7.Repaint;

end;

procedure TMAINFORM.Im8Click(Sender: TOBJECT);

begin

ONRENAMECAT;

end;

procedure TMAINFORM.Im8MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgclick.GETBITMAP(8, im8.Picture.Bitmap);

im8.Repaint;

end;

procedure TMAINFORM.Im8MOUSEENTER(Sender: TOBJECT);

begin imgon.GETBITMAP(8, im8.Picture.Bitmap);

im8.Repaint;

end;

procedure TMAINFORM.Im8MOUSELEAVE(Sender: TOBJECT);

begin imgnorm.GETBITMAP(8, im8.Picture.Bitmap);

im8.Repaint;

end;

procedure TMAINFORM.Im8MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin imgnorm.GETBITMAP(8, im8.Picture.Bitmap);

im8.Repaint;

end;

procedure TMAINFORM.LCLICK(Sender: TOBJECT);

begin

ONSELECTRECEPT;

end;

procedure TMAINFORM.LDBLCLICK(Sender: TOBJECT);

begin

ONEDIT;

end;

procedure TMAINFORM.LKEYPRESS(Sender: TOBJECT; var Key: Char);

begin if key = #13 then

ONEDIT;

end;

procedure TMAINFORM.MEMOENTER(Sender: TOBJECT);

begin

Memo.Color := m_CLCREAM;

end;

procedure TMAINFORM.MEMOEXIT(Sender: TOBJECT);

begin memo.Color := m_cl3DLIGHT;

end;

procedure TMAINFORM.N10Click(Sender: TOBJECT);

begin

ONFIND;

end;

procedure TMAINFORM.N11Click(Sender: TOBJECT);

begin

ONSAVETOFILE;

end;

procedure TMAINFORM.N12Click(Sender: TOBJECT);

begin

ONADDCATEGORY;

end;

procedure TMAINFORM.N13Click(Sender: TOBJECT);

begin

ONDELETECATEGORY;

end;

procedure TMAINFORM.N14Click(Sender: TOBJECT);

begin

ONRENAMERECEPT;

end;

procedure TMAINFORM.N15Click(Sender: TOBJECT);

begin

ONOPENFROMFILE;

end;

procedure TMAINFORM.N16Click(Sender: TOBJECT);

begin

ONRENAMECAT;

end;

procedure TMAINFORM.N18Click(Sender: TOBJECT);

begin

ZASTFORMN.run;

end;

procedure TMAINFORM.N19Click(Sender: TOBJECT);

begin

ONNEWREC;

end;

procedure TMAINFORM.N20Click(Sender: TOBJECT);

begin

ONEDIT;

end;

procedure TMAINFORM.N21Click(Sender: TOBJECT);

begin

ONDELETE;

end;

procedure TMAINFORM.N22Click(Sender: TOBJECT);

begin

ONRENAMERECEPT;

end;

procedure TMAINFORM.N23Click(Sender: TOBJECT);

begin

ONMOVETOCAT;

end;

procedure TMAINFORM.N24Click(Sender: TOBJECT);

begin

ONCOPYTOCAT;

end;

procedure TMAINFORM.N25Click(Sender: TOBJECT);

begin

ONSAVETOFILE;

end;

procedure TMAINFORM.N26Click(Sender: TOBJECT);

begin

ONOPENFROMFILE;

end;

procedure TMAINFORM.N27Click(Sender: TOBJECT);

begin

ONFIND;

end;

procedure TMAINFORM.N2Click(Sender: TOBJECT);

begin close;

end;

procedure TMAINFORM.N3Click(Sender: TOBJECT);

begin n6.Enabled := l.Items.Count > 0;

n7.Enabled := l.Items.Count > 0;

n8.Enabled := l.Items.Count > 0;

n9.Enabled := l.Items.Count > 0;

n14.Enabled := l.Items.Count > 0;

n11.Enabled := l.Items.Count > 0;

end;

procedure TMAINFORM.N5Click(Sender: TOBJECT);

begin

ONNEWREC;

end;

procedure TMAINFORM.N6Click(Sender: TOBJECT);

begin

ONEDIT;

end;

procedure TMAINFORM.N7Click(Sender: TOBJECT);

begin

ONDELETE;

end;

procedure TMAINFORM.N8Click(Sender: TOBJECT);

begin

ONMOVETOCAT;

end;

procedure TMAINFORM.N9Click(Sender: TOBJECT);

begin

ONCOPYTOCAT;

end;

procedure TMAINFORM.SPEEDBUTTON5Click(Sender: TOBJECT);

begin

ONSAVETOFILE;

end;

procedure TMAINFORM.CATCBCHANGE(Sender: TOBJECT);

begin

ONSELECTCAT;

ONSELECTRECEPT;

end;

procedure TMAINFORM.FILLCATCB;

var db : tdb;

i, rn, m_ID : longint;

m_Name : string;

begin

CATCB.Clear;

db.INITIALIZELOCAL;

db.OPENDATABASE(m_CATDBFILENAME, true);

for i := 1 to db.RECORDCOUNT do begin m_ID := db.DIRECTREADLONG(i, 1);

m_Name := alltrim(db.DIRECTREADSTRING(i, 2));

CATCB.Items.ADDOBJECT(m_Name, TOBJECT(m_ID));

end;

if CATCB.Items.Count > 0 then

CATCB.ITEMINDEX := 0;

db.DBCLOSE;

if CATCB.Items.Count > 0 then

ONSELECTCAT;

end;

procedure TMAINFORM.ONSELECTCAT;

var db : tdb;

i, rn, m_CATID, m_RECID : longint;

m_Name : string;

m_BADLIST : TLIST;

begin m_BADLIST := TLIST.Create;

l.Clear;

m_CURCATID := longint(CATCB.Items.Objects[CATCB.ITEMINDEX]);

db.INITIALIZELOCAL;

db.OPENDATABASE(m_RECDBFILENAME);

for i := 1 to db.RECORDCOUNT do begin m_CATID := db.DIRECTREADLONG(i, 2);

if m_CATID m_CURCATID then continue;

m_RECID := db.DIRECTREADLONG(i, 1);

m_name := alltrim(db.DIRECTREADSTRING(i, 3));

if FILEEXISTS(m_DATAFOLDER along2str(m_RECID) ".rec") then l.ADDITEM(m_name, TOBJECT(m_RECID)) else m_BADLIST.Add(TOBJECT(i));

end;

if l.Items.Count > 0 then l.Itemindex := 0;

ONSELECTRECEPT;

if m_BADLIST.Count > 0 then for I := m_BADLIST.Count - 1 to 0 do tdb_lib.PHISICALDELETERECORDLOCALINDB(db, longint(m_BADLIST[i]));

db.DBCLOSE;

m_BADLIST.Clear;

m_BADLIST.Free;

end;

procedure TMAINFORM.ONSELECTRECEPT;

var filename : string;

begin if l.ITEMINDEX < 0 then begin memo.Clear;

m_CURRECID := -1;

exit;

end;

m_CURRECID := longint(l.Items.Objects[l.ITEMINDEX]);

Memo.Clear;

filename := m_DATAFOLDER along2str(m_CURRECID) ".rec";

memo.Lines.LOADFROMFILE(filename);

end;

procedure TMAINFORM.POPUPMENU1Popup(Sender: TOBJECT);

begin n20.Enabled := l.Items.Count > 0;

n21.Enabled := l.Items.Count > 0;

n22.Enabled := l.Items.Count > 0;

n23.Enabled := l.Items.Count > 0;

n24.Enabled := l.Items.Count > 0;

n25.Enabled := l.Items.Count > 0;

end;

procedure TMAINFORM.ONDELETE;

var m_CURINDEX : longint;

begin if (l.Items.Count < 1) then begin askdialog.Run("В категорії "" CATCB.Items[CATCB.itemindex] "" рецепти відсутні", false, false, true, false);

exit;

end;

if l.ITEMINDEX < 0 then begin askdialog.Run("Не вибрано жодного рецепту", false, false, true, false);

exit;

end;

ASKDIALOG.Run("Ви дійсно хочете видалити рецепт "" l.Items[l.Itemindex] ""?", true, true, false, false);

if ASKDIALOG.m_SELECTEDITEM 1 then exit;

m_Curindex := l.ITEMINDEX;

DELETERECEPT(m_CURRECID);

ONSELECTCAT;

TRYSELECTITEMINLB(l, m_curindex);

ONSELECTRECEPT;

end;

procedure TMAINFORM.DELETERECEPT(RECID : longint);

var i, rn : longint;

db : tdb;

begin db.INITIALIZELOCAL;

db.OPENDATABASE(m_RECDBFILENAME);

rn := tdb_lib.SEEKFORLONG(db, 1, RECID, true);

PHISICALDELETERECORDLOCALINDB(db, rn);

ERASEFILELOCAL(m_DATAFOLDER along2str(RECID) ".rec");

db.DBCLOSE;

end;

procedure TMAINFORM.ONDELETECATEGORY;

var db : tdb;

rn, catid, recid, i, index : longint;

begin if CATCB.Items.Count < 2 then begin

ASKDIALOG.Run("Неможливо видалити категорію "" CATCB.Items[CATCB.itemindex] ""." #13

"Після видалення повинна залишитись хоча б одна категорія.", false, false, true, false);

exit;

end;

if l.Count > 0 then

Askdialog.Run("Категорія "" CATCB.Items[CATCB.itemindex] "" не пуста!!!" #13

"Видаляючи її, ви видалите всі рецепти," #13

"що знаходяться в даній категорії. Продовжити?",true, true, false, true) else

Askdialog.Run("Ви дійсно хочете видалити категорію "" CATCB.Items[CATCB.itemindex] ""?" ,true, true, false, true);

if ASKDIALOG.m_SELECTEDITEM 1 then exit;

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_RECDBFILENAME);

for i := db.RECORDCOUNT downto 1 do begin catid := db.DIRECTREADLONG(i, 2);

if catid self.m_CURCATID then continue;

recid := db.DIRECTREADLONG(i, 1);

PHISICALDELETERECORDLOCALINDB(db, i);

ERASEFILELOCAL(m_DATAFOLDER along2str(RECID) ".rec");

end;

db.DBCLOSE;

db.OPENDATABASE(self.m_CATDBFILENAME);

rn := tdb_lib.SEEKFORLONG(db, 1, self.m_CURCATID , false);

PHISICALDELETERECORDLOCALINDB(db, rn);

db.DBCLOSE;

index := CATCB.ITEMINDEX;

FILLCATCB;

TRYTOSELECTINCOMBO(CATCB, index);

ONSELECTCAT;

end;

procedure TMAINFORM.ONADDCATEGORY;

var db : tdb;

SNAME, SNEWNAME : string;

rn, id, i : longint;

begin

SNEWNAME := GETTEXTBYTEMPLATE(CATCB.Items, "Категорія", false);

EDITTEXTFORM.run("Введіть назву нової категорії", SNEWNAME, false, 50, nil, false, "",false,"",#0,"Назва нової категорії");

if not EDITTEXTFORM.m_ISENTERED then exit;

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_CATDBFILENAME);

SNAME := alltrim(EDITTEXTFORM.Edit1.Text);

rn := SEEKFORSTRING(db, 2, SNAME, false, true, true);

if rn > 0 then begin

ASKDIALOG.Run("Категорія з такою назвою вже існує." #13 "Створення неможливе", false, false, true, false);

DB.DBCLOSE;

exit;

end;

rn := db.RECORDCOUNT 1;

id := CALCMAXLONGVALUE(db, 1) 1;

db.DIRECTWRITELONG(rn, 1, id);

db.DIRECTWRITESTRING(rn, 2, SNAME);

db.DBCLOSE;

FILLCATCB;

CATCB.ITEMINDEX := CATCB.Items.Count - 1;

ONSELECTCAT;

end;

procedure TMAINFORM.ONMOVETOCAT;

var index, id, rn : longint;

db : tdb;

begin if l.ITEMINDEX < 0 then begin

ASKDIALOG.Run("Не вибрано жодного рецепту для переміщення!", false, false, true, false);

exit;

end;

if CATCB.Items.Count = 1 then begin

ASKDIALOG.Run("У вас є всього одна категорія!" #13

"Переміщення в іншу категорію неможливе.", false, false, true, false);

exit;

end;

SIMPLESELECTINLISTBOXFORM.L.Clear;

COPYSTRINGS(CATCB.Items,SIMPLESELECTINLISTBOXFORM.L.Items);

SIMPLESELECTINLISTBOXFORM.Run("Категорія, в яку перемістити рецепт", false, false, "", false, true, CATCB.ITEMINDEX);

if not SIMPLESELECTINLISTBOXFORM.m_ISSELECTED then exit;

index := SIMPLESELECTINLISTBOXFORM.L.ITEMINDEX;

if index = CATCB.ITEMINDEX then begin

ASKDIALOG.Run("Рецепт вже знаходиться в категорії " """ CATCB.Items[CATCB.itemindex] "".", false, false, true, false);

exit;

end;

id := longint(CATCB.Items.Objects[index]);

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_RECDBFILENAME);

rn := SEEKFORLONG(db, 1, self.m_CURRECID, false);

db.DIRECTWRITELONG(rn, 2, id);

db.DBCLOSE;

CATCB.ITEMINDEX := index;

ONSELECTCAT;

end;

procedure TMAINFORM.ONEDIT;

var m_CURREC : longint;

begin if l.Items.count < 1 then begin askdialog.Run("Рецепти відсутні в категорії "" CATCB.Items[CATCB.itemindex] ""!", false, false, true, false);

exit;

end;

m_CURREC := l.ITEMINDEX;

RECEDITORFORM.run(m_CURRECID, CATCB.ITEMINDEX, l.Items[l.itemindex]);

if not RECEDITORFORM.m_ISENTERED then exit;

ONSELECTCAT;

l.ITEMINDEX := m_CURREC;

ONSELECTRECEPT;

end;

procedure TMAINFORM.ONNEWREC;

begin

RECEDITORFORM.run(-1, CATCB.ITEMINDEX);

if not RECEDITORFORM.m_ISENTERED then exit;

CATCB.ITEMINDEX := RECEDITORFORM.cb.ITEMINDEX;

ONSELECTCAT;

l.ITEMINDEX := l.Items.Count - 1;

ONSELECTRECEPT;

end;

procedure ONSELECTRECEPTWITHID(RECID: Integer; CATID: longint);

var index : longint;

begin index := FINDOBJECTINCOMBOBOX(MAINFORM.CATCB, CATID);

MAINFORM.CATCB.ITEMINDEX := index;

MAINFORM.ONSELECTCAT;

index := FINDOBJECTINLB(MAINFORM.l, RECID);

MAINFORM.l.ITEMINDEX := index;

MAINFORM.ONSELECTRECEPT;

end;

procedure TMAINFORM.ONFIND;

begin

SEARCHINSTRINGSFORM.RUNFORDB("Пошук рецепта", self.m_RECDBFILENAME, 3, 1, 2, ONSELECTRECEPTWITHID);

end;

procedure TMAINFORM.ONSAVETOFILE;

var

SFILENAME : string;

SEXT : string;

begin if l.ITEMINDEX < 0 then begin

ASKDIALOG.Run("Спочатку виберіть рецепт для збереження",false, false, true, false);

exit;

end;

SAVEDIALOG1.filename := GETSTANDARTFOLDER($0005) "\" l.Items[l.itemindex];

if not SAVEDIALOG1.Execute then exit;

SFILENAME := SAVEDIALOG1.FILENAME;

SEXT := mylib.GETEXTENTIONFROMNAME(SFILENAME);

if SEXT = "" then

SFILENAME := SFILENAME ".txt";

Memo.Lines.SAVETOFILE(SFILENAME);

ASKDIALOG.Run("Файл успішно збережено",false, false, true, false);

end;

procedure TMAINFORM.ONCOPYTOCAT;

var index, id, rn, rn2, id2 : longint;

db : tdb;

x : TSTRINGS;

SNEWNAME : string;

filnm1, filnm2 : string;

begin if l.ITEMINDEX < 0 then begin

ASKDIALOG.Run("Не вибрано жодного рецепту для копіювання!", false, false, true, false);

exit;

end;

SIMPLESELECTINLISTBOXFORM.L.Clear;

COPYSTRINGS(CATCB.Items,SIMPLESELECTINLISTBOXFORM.L.Items);

SIMPLESELECTINLISTBOXFORM.Run("Категорія, в яку скопіювати рецепт", false, false, "", false, true, CATCB.ITEMINDEX);

if not SIMPLESELECTINLISTBOXFORM.m_ISSELECTED then exit;

index := SIMPLESELECTINLISTBOXFORM.L.ITEMINDEX;

if index = CATCB.ITEMINDEX then begin

ASKDIALOG.Run("Рецепт вже знаходиться в категорії "" CATCB.Items[CATCB.itemindex] " "." #13

"Зробити ще одну копію в цій категорії?", true, true, false, false);

if ASKDIALOG.m_SELECTEDITEM 1 then exit;

end;

x := TSTRINGLIST.Create;

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_RECDBFILENAME);

FILLSTRINGSINDBTOSTIRNGS(x, MAINFORM.m_RECDBFILENAME, 3);

SNEWNAME := mylib.GETTEXTBYTEMPLATE(x, "Копія-" l.Items[l.itemindex], true);

x.Free;

EDITTEXTFORM.run("Введіть назву копії рецепту", SNEWNAME, false, 50, nil, false, "",false,"",#0,"Назва рецепту");

if not EDITTEXTFORM.m_ISENTERED then begin db.DBCLOSE;

exit;

end;

SNEWNAME := alltrim(EDITTEXTFORM.Edit1.Text);

rn := tdb_lib.SEEKFORSTRING(db, 3, SNEWNAME, false, true, true);

if (rn > 0) and (length(SNEWNAME) > 0) then begin askdialog.run("Неможливо зберегти рецепт." #13 "Рецепт з такою назвою вже існує!", false, false, true, false);

db.DBCLOSE;

exit;

end;

id := longint(CATCB.Items.Objects[index]);

id2 := CALCMAXLONGVALUE(db, 1) 1;

rn2 := db.RECORDCOUNT 1;

db.DIRECTWRITELONG(rn2, 1, id2);

db.DIRECTWRITELONG(rn2, 2, id);

db.DIRECTWRITESTRING(rn2, 3, SNEWNAME);

filnm1 := m_DATAFOLDER along2str(m_CURRECID) ".rec";

filnm2 := m_DATAFOLDER along2str(id2) ".rec";

db.DBCLOSE;

xcopyfile(filnm1, filnm2);

CATCB.ITEMINDEX := index;

ONSELECTCAT;

end;

procedure TMAINFORM.ONOPENFROMFILE;

var

SFILENAME : string;

begin

OPENDIALOG1.DEFAULTEXT := GETSTANDARTFOLDER($0005);

if not OPENDIALOG1.Execute then exit;

SFILENAME := OPENDIALOG1.FILENAME;

RECEDITORFORM.run(-1, CATCB.ITEMINDEX, "", SFILENAME);

if not RECEDITORFORM.m_ISENTERED then exit;

CATCB.ITEMINDEX := RECEDITORFORM.cb.ITEMINDEX;

ONSELECTCAT;

l.ITEMINDEX := l.Items.Count - 1;

ONSELECTRECEPT;

end;

procedure TMAINFORM.ONRENAMECAT;

var db : tdb;

SNAME, SNEWNAME : string;

rn, id, index, index2 : longint;

begin

SNAME := CATCB.Items[CATCB.Itemindex];

EDITTEXTFORM.run("Введіть нову назву категорії", SNAME, false, 50, nil, false, "",false,"",#0,"Назва категорії");

if not EDITTEXTFORM.m_ISENTERED then exit;

SNEWNAME := alltrim(EDITTEXTFORM.Edit1.Text);

if SNEWNAME = SNAME then exit;

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_CATDBFILENAME);

rn := SEEKFORSTRING(db, 2, SNEWNAME, false, true, true);

if rn > 0 then begin

ASKDIALOG.Run("Категорія з такою назвою вже існує." #13 "Перейменування неможливе", false, false, true, false);

DB.DBCLOSE;

exit;

end;

rn := SEEKFORLONG(db, 1, m_CURCATID, false);

db.DIRECTWRITESTRING(rn, 2, SNEWNAME);

db.DBCLOSE;

index := CATCB.ITEMINDEX;

index2 := l.ITEMINDEX;

FILLCATCB;

CATCB.ITEMINDEX := index;

l.ITEMINDEX := index2;

ONSELECTRECEPT;

end;

procedure TMAINFORM.ONRENAMERECEPT;

var db : tdb;

SNAME, SNEWNAME : string;

rn, id, i : longint;

begin if l.ITEMINDEX < 0 then begin askdialog.Run("Не вибрано жодного рецепту", false, false, true, false);

exit;

end;

SNAME := l.Items[l.Itemindex];

EDITTEXTFORM.run("Введіть нову назву рецепту", SNAME, false, 50, nil, false, "",false,"",#0,"Назва рецепту");

if not EDITTEXTFORM.m_ISENTERED then exit;

SNEWNAME := alltrim(EDITTEXTFORM.Edit1.Text);

if SNEWNAME = SNAME then exit;

db.INITIALIZELOCAL;

db.OPENDATABASE(self.m_RECDBFILENAME);

rn := SEEKFORSTRING(db, 3, SNEWNAME, false, true, true);

if rn > 0 then begin

ASKDIALOG.Run("Рецепт з такою назвою вже існує." #13 "Перейменування неможливе", false, false, true, false);

DB.DBCLOSE;

exit;

end;

rn := SEEKFORLONG(db, 1, m_CURRECID, false);

db.DIRECTWRITESTRING(rn, 3, SNEWNAME);

db.DBCLOSE;

l.Items[l.ITEMINDEX] := SNEWNAME;

end;

procedure TMAINFORM.APPLYNORMCOLORSOVERRGB;

begin panel3.Color := RGB(196, 203, 222);

panel2.Color := RGB(196, 203, 222);

panel1.Color := RGB(192, 192, 192);

m_cl3Dlight := RGB(227, 227, 227);

m_CLCREAM := RGB(255, 251, 240);

l.Color := m_cl3Dlight;

Memo.Color := m_cl3Dlight;

CATCB.Color := m_cl3Dlight;

end;

end.

RECINTERFACEUNIT.PAS unit RECINTERFACEUNIT;

interface procedure CREATECATDATABASE(filename : string);

procedure CREATERECDATABASE(filename : string);

implementation uses tdb_lib;

procedure CREATECATDATABASE(filename : string);

var db : tdb;

begin db.INITIALIZELOCAL;

db.DBSETNAME(filename);

db.ADDFIELD("ID ","l", 4, 0);

db.ADDFIELD("name ","c", 40, 0);

db.DBCREATE;

db.DBCLOSE;

end;

procedure CREATERECDATABASE(filename : string);

var db : tdb;

begin db.INITIALIZELOCAL;

db.DBSETNAME(filename);

db.ADDFIELD("ID ","l", 4, 0);

db.ADDFIELD("CATID ","l", 4, 0);

db.ADDFIELD("name ","c", 50, 0);

db.DBCREATE;

db.DBCLOSE;

end;

end.

RECEDITORFORMUNIT.PAS unit RECEDITORFORMUNIT;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, STDCTRLS, EXTCTRLS, COMCTRLS, tdb_lib, askdialogunit;

type

TRECEDITORFORM = class(TFORM)

STATUSBAR1: TSTATUSBAR;

Panel1: TPANEL;

e1: TEDIT;

cb: TCOMBOBOX;

Panel2: TPANEL;

Panel3: TPANEL;

Label1: TLABEL;

Label3: TLABEL;

Memo: TMEMO;

im1: TIMAGE;

Im2: TIMAGE;

procedure CANCELBUTCLICK(Sender: TOBJECT);

procedure FORMKEYPRESS(Sender: TOBJECT; var Key: Char);

procedure MEMOCHANGE(Sender: TOBJECT);

procedure FORMCLOSEQUERY(Sender: TOBJECT; var CANCLOSE: Boolean);

procedure FORMSHOW(Sender: TOBJECT);

procedure MEMOENTER(Sender: TOBJECT);

procedure MEMOEXIT(Sender: TOBJECT);

procedure e1Enter(Sender: TOBJECT);

procedure e1Exit(Sender: TOBJECT);

procedure im1Click(Sender: TOBJECT);

procedure im1MOUSEENTER(Sender: TOBJECT);

procedure im1MOUSELEAVE(Sender: TOBJECT);

procedure im1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure im1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im2Click(Sender: TOBJECT);

procedure Im2MOUSEENTER(Sender: TOBJECT);

procedure Im2MOUSELEAVE(Sender: TOBJECT);

procedure Im2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

procedure Im2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

private

{ Private declarations } public m_ID : longint;

m_cbindex : longint;

m_CATID : longint;

m_EDITMODE : boolean;

m_filename : string;

m_RECNAME : string;

m_ISENTERED : boolean;

m_recfilename : string;

m_NEEDTOSAVE : boolean;

m_ISBLOCKED : boolean;

m_cl3DLIGHT : TCOLOR;

m_CLCREAM : TCOLOR;

procedure run (RECID : longint = -1; m_index : longint = -1; m_name : string = ""; filename : string = "");

procedure FILLCOMBOBOX;

procedure FILLMEMO;

procedure ONSAVE;

function STATUSTEXT : string;

procedure ONCHANGE;

function ONEXIT : boolean;

procedure APPLYNORMCOLORSOVERRGB;

end;

var

RECEDITORFORM: TRECEDITORFORM;

implementation uses MAINFORMUNIT, MYLIB;

{$R *.dfm} procedure TRECEDITORFORM.run(RECID: longint = -1; m_index : longint = -1; m_name : string = ""; filename : string = "");

var x : TSTRINGS;

SDEFNAME : string;

n : longint;

begin m_ISBLOCKED := false;

e1.Clear;

Memo.Clear;

m_recfilename := filename;

m_id := RECID;

m_cbindex := m_index;

if (m_ID = -1) then m_EDITMODE := false else m_EDITMODE := true;

if length(filename) > 0 then begin

SDEFNAME := mylib.GETFILENAMEFROMFILEPATH(filename);

n := REVFINDCHAR(".", SDEFNAME);

if n > 0 then

SDEFNAME := copy(SDEFNAME, 1, n-1);

e1.text := SDEFNAME;

end else if not m_EDITMODE then begin x := TSTRINGLIST.Create;

FILLSTRINGSINDBTOSTIRNGS(x, MAINFORM.m_RECDBFILENAME, 3);

SDEFNAME := mylib.GETTEXTBYTEMPLATE(x, "Рецепт");

e1.text := SDEFNAME;

m_RECNAME := e1.Text;

x.Free;

end else begin m_RECNAME := m_name;

e1.Text := m_name;

end;

FILLCOMBOBOX;

FILLMEMO;

PLACEFORMATCENTER(@self);

ONCHANGE;

if length(filename) < 1 then m_NEEDTOSAVE := false else m_NEEDTOSAVE := true;

APPLYNORMCOLORSOVERRGB;

showmodal;

end;

procedure TRECEDITORFORM.CANCELBUTCLICK(Sender: TOBJECT);

begin close;

end;

procedure TRECEDITORFORM.e1Enter(Sender: TOBJECT);

begin e1.Color := m_CLCREAM;

end;

procedure TRECEDITORFORM.e1Exit(Sender: TOBJECT);

begin e1.Color := m_cl3DLIGHT;

end;

procedure TRECEDITORFORM.FILLCOMBOBOX;

var db : tdb;

i, rn, m_CID : longint;

m_Name : string;

begin

CB.Clear;

db.INITIALIZELOCAL;

db.OPENDATABASE(MAINFORM.m_CATDBFILENAME, true);

for i := 1 to db.RECORDCOUNT do begin m_CID := db.DIRECTREADLONG(i, 1);

m_Name := alltrim(db.DIRECTREADSTRING(i, 2));

CB.Items.ADDOBJECT(m_Name, TOBJECT(m_CID));

end;

db.DBCLOSE;

if not m_EDITMODE then begin cb.Enabled := true;

CB.ITEMINDEX := m_cbindex;

end else begin cb.Enabled := false;

cb.ITEMINDEX := m_cbindex;

end;

end;

procedure TRECEDITORFORM.FILLMEMO;

begin

Memo.Clear;

if m_EDITMODE then begin m_filename := MAINFORM.m_DATAFOLDER along2str(m_ID) ".rec";

memo.Lines.LOADFROMFILE(m_filename);

end else if length(m_recfilename) > 0 then

Memo.Lines.LOADFROMFILE(m_recfilename);

end;

procedure TRECEDITORFORM.FORMCLOSEQUERY(Sender: TOBJECT; var CANCLOSE: Boolean);

begin

CANCLOSE := false;

if ONEXIT then

CANCLOSE := true;

end;

procedure TRECEDITORFORM.FORMKEYPRESS(Sender: TOBJECT; var Key: Char);

begin case key of

#10 : begin m_ISBLOCKED := true;

ONSAVE;

end;

#27 : begin m_ISENTERED := false;

Close;

end;

end;

end;

procedure TRECEDITORFORM.FORMSHOW(Sender: TOBJECT);

begin

Memo.SETFOCUS;

end;

procedure TRECEDITORFORM.im1Click(Sender: TOBJECT);

begin

ONSAVE;

end;

procedure TRECEDITORFORM.im1MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin

MAINFORM.imgclick.GETBITMAP(10, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TRECEDITORFORM.im1MOUSEENTER(Sender: TOBJECT);

begin

MAINFORM.imgon.GETBITMAP(10, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TRECEDITORFORM.im1MOUSELEAVE(Sender: TOBJECT);

begin

MAINFORM.imgnorm.GETBITMAP(10, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TRECEDITORFORM.im1MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin

MAINFORM.imgnorm.GETBITMAP(10, im1.Picture.Bitmap);

im1.Repaint;

end;

procedure TRECEDITORFORM.Im2Click(Sender: TOBJECT);

begin close;

end;

procedure TRECEDITORFORM.Im2MOUSEDOWN(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin

MAINFORM.imgclick.GETBITMAP(11, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TRECEDITORFORM.Im2MOUSEENTER(Sender: TOBJECT);

begin

MAINFORM.imgon.GETBITMAP(11, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TRECEDITORFORM.Im2MOUSELEAVE(Sender: TOBJECT);

begin

MAINFORM.imgnorm.GETBITMAP(11, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TRECEDITORFORM.Im2MOUSEUP(Sender: TOBJECT; Button: TMOUSEBUTTON;

Shift: TSHIFTSTATE; X, Y: Integer);

begin

MAINFORM.imgnorm.GETBITMAP(11, im2.Picture.Bitmap);

im2.Repaint;

end;

procedure TRECEDITORFORM.MEMOCHANGE(Sender: TOBJECT);

begin if m_ISBLOCKED then begin m_ISBLOCKED := false;

exit;

end;

ONCHANGE;

m_NEEDTOSAVE := true;

end;

procedure TRECEDITORFORM.MEMOENTER(Sender: TOBJECT);

begin

Memo.Color := m_CLCREAM;

end;

procedure TRECEDITORFORM.MEMOEXIT(Sender: TOBJECT);

begin memo.Color := m_Cl3DLIGHT;

end;

procedure TRECEDITORFORM.ONSAVE;

var db : tdb;

i : longint;

rn, NEWID : longint;

begin m_Recname := alltrim(e1.text);

db.INITIALIZELOCAL;

db.OPENDATABASE(MAINFORM.m_RECDBFILENAME);

rn := tdb_lib.SEEKFORSTRING(db, 3, m_RECNAME, false, true, true);

if (rn > 0) and (length(m_Recname) > 0) and not m_EDITMODE then begin askdialog.run("Неможливо зберегти рецепт." #13 "Рецепт з такою назвою вже існує!", false, false, true, false);

e1.SETFOCUS;

db.DBCLOSE;

exit;

end;

if length(m_Recname) < 1 then begin askdialog.run("Неможливо зберегти рецепт." #13 "Введіть, будь-ласка, назву рецепту!", false, false, true, false);

e1.SETFOCUS;

db.DBCLOSE;

exit;

end;

if m_EDITMODE then begin rn := tdb_lib.SEEKFORLONG(db, 1, m_ID, false);

if rn > 0 then begin db.DIRECTWRITESTRING(rn, 3, m_RECNAME);

db.DBCLOSE(true);

memo.Lines.SAVETOFILE(m_filename);

m_ISENTERED := true;

m_NEEDTOSAVE := false;

close;

end;

end else begin rn := db.RECORDCOUNT 1;

NEWID := CALCMAXLONGVALUE(db, 1) 1;

m_CATID := longint(cb.Items.Objects[cb.ITEMINDEX]);

db.DIRECTWRITELONG(rn, 1, NEWID);

db.DIRECTWRITELONG(rn, 2, m_CATID);

db.DIRECTWRITESTRING(rn, 3, m_Recname);

m_filename := MAINFORM.m_DATAFOLDER along2str(NEWID) ".rec";

Memo.Lines.SAVETOFILE(m_filename);

db.DBCLOSE;

m_ISENTERED := true;

m_NEEDTOSAVE := false;

close;

end;

end;

function TRECEDITORFORM.STATUSTEXT : string;

var i, row, col, sym : longint;

begin sym := 0;

col := length(memo.Lines[memo.Lines.count - 1]);

row := memo.Lines.Count;

for i := 0 to memo.Lines.Count - 1 do sym := sym length(memo.Lines[i]);

result := inttostr(row) " рядків, " inttostr(sym) " символів";

end;

procedure TRECEDITORFORM.ONCHANGE;

begin

STATUSBAR1.Panels[1].Text := STATUSTEXT;

end;

function TRECEDITORFORM.ONEXIT : boolean;

begin if m_NEEDTOSAVE then begin

ASKDIALOG.Run("Текст рецепту не збережений."

#13 "Зберегти текст?", true, true, false, true);

case ASKDIALOG.m_SELECTEDITEM of

1 : ONSAVE;

2 : begin m_NEEDTOSAVE := false;

result := true;

m_ISENTERED := false;

exit;

end;

4 : begin result := false;

exit;

end;

end;

end;

result := true;

end;

procedure TRECEDITORFORM.APPLYNORMCOLORSOVERRGB;

begin panel3.Color := RGB(196, 203, 222);

panel2.Color := RGB(196, 203, 222);

m_cl3Dlight := RGB(227, 227, 227);

m_CLCREAM := RGB(255, 251, 240);

cb.Color := m_cl3Dlight;

Memo.Color := m_cl3Dlight;

e1.Color := m_cl3Dlight;

end;

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?