Алдынғы жаттығуда Data Access беті компоненттерін қосымшаның басты формасына орналастырдық. Бірақ мұндай жағдай, формада көп санды көрінбейтін компоненттердің болуы қолданушы интерфейсін жобалауды қиындатады. Осы мақсатта C++ Builder-де арнайы деректер модулі - TDataModule типі бар. Осы типтегі компонентті шартты түрде форма түрі деп қарастыруға болады. мұндай компонент-контейнер Data Access беті компоненттерін құрамында ұстай алады, ал өзі бағдарламаның орындалу уақытында қолданушыға көрінбейді. Жоғарыда келтірілген жаттығудың басқа нұсқасын деректер модулін қолданып құрып көрейік.
4.34-сурет. Деректерге қатынау компоненттерін
DataModule-ге орналастыру
Қосымша коды:
//----------------------------------------------------
#include
#pragma hdrstop
#include "cust1.h"
#include "custdm1.h" // деректер модуліне сілтеме
//-----------------------------------------------------
#pragma link "Grids"
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------------------
__fastcall TForm1::TForm1(TComponent*
Owner): TForm(Owner)
{
}
//-----------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (DataModule1->Table1->Active)
{
DataModule1->Table1->Close();
Button1->Caption = "Открыть таблицу &клиентов";
}
else
{
DataModule1->Table1->Open();
Button1->Caption= "Закрыть таблицу &клиентов";
};
}
//-----------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (DataModule1->Query1->Active)
{
DataModule1->Query1->Active = false;
Button2->Caption = "Открыть таблицу &заказов";}
else
{
DataModule1->Query1->Active = true;
Button2->Caption = "Закрыть таблицу &заказов";
}
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource1;
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource2;
}
//-----------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
DBGrid1->DataSource = DataModule1->DataSource3;
}
//----------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if (DataModule1->Table1->Active)
{
DataModule1->Table1->SetRangeStart();
DataModule1->Table1->Fields[0]->AsString = Edit1->Text;
DataModule1->Table1->SetRangeEnd();
DataModule1->Table1->Fields[0]->AsString = Edit2->Text;
DataModule1->Table1->ApplyRange();
}
}
//-----------------------------------------------
Өзіндік жұмысқа тапсырмалар
DataModule және TQuery компоненттерін қолданып деректер қоры қосымшасын құру:
-
Жоғарғы оқу орнының студенттері туралы мәліметтер.
-
Автотранспорттық шаруашылық жұмысы.
-
Компьютерлік фирма жұмысы.
-
Аэропорт кассасы жұмысы.
-
Оқытушылардың жүктемесiн есептеу
-
Автосалон жұмысы.
-
Поликлиника дәрігерлері туралы мәліметтер.
-
Кітапхана.
-
Аэропорт анықтамалық бюросының мәліметтері.
-
Стоматология.
13 - зертханалық жұмыс.
QReport парағын пайдаланып есеп беруді ұйымдастыру
Әдістемелік нұсқаулар
C++ Builder ортасында есеп беруді құру үшін компоненттер палитрасындағы QReport беті қолданылады. Бұл компоненттер жиыны кестелерді, сұраныстарды, тізімдерді, мәтіндік файлдарды, массивтерді C++ Builder дизайнер формасын қолдана отырып есеп беруді жобалайды және баспаға шығарады.
C++ Builder ортасының Forms объектілер репозитариясы бетінде есеп берудің 3 шаблоны бар:
Шаблон
|
Сипаттамасы
|
QuickReport Mailing Labels
|
Пошталық этикеттер құру шаблоны
|
QuickReport List
|
Қарапайым кестелік есеп беруді құру шаблоны
|
QuickReport Master/detail
|
Master/Detail есеп беруін құру шаблоны.
|
Жаттығу жұмыстары
Қарапайым есеп беруді құру
QuickReport есеп беру негізі көлденен сызық (bands) жиынында. Есеп беруді құру кезінде формаға бірнеше әртүрлі типтегі QRBand (Tpanel мұрагері) компоненттері орналасады.
Қарапайым есеп беруді құру үшін формаға келесі компоненттерді орналастырамыз /4.35-сурет/:
TQRBand – бұл компонент есеп берудің бір бөлігі - мәліметтерді орналастыратын контейнер болады (мысалға, есеп беру тақырыбы, беттің жоғарға немесе төменгі колонтитулы, топтың жоғарға немесе төменгі колонтитулы және т.б. ). TQRBand компоненттері олардың формада орналасуына байланысты емес, олардың қажетті жерде есеп беру типтеріне тәуелді баспаға шығарылады. Бұл компоненттің жиі қолданылатын қасиеті &ndash BandType, «сызық» типі (топтың немесе беттің колонтитулы, мәліметтер «сызығы» және т.б.). Мүмкін мәндері: : rbTitle &ndash есеп беру тақырыбы, rbPageHeader &ndash беттің жоғарғы колонтитулы, rbColumnHeader &ndash бағанның жоғарғы колонтитулы, көп бағанды есеп беруде, rbDetail &ndash кестелі мәліметтер сызығы (жолда есеп беру негізі болатын мәліметтер жинағында неше жол болса, сонша рет қайталанады), rbPageFooter &ndash беттің төменгі колонтитулы, rbOverlay &ndash беттің фоны, әр беттің сол жақ жоғарғы бұрышында баспаға басылады, rbGroupHeader &ndash топтың тақырыбы, rbSubDetail &ndash Detail-кестесі үшін кестелі мәліметтер «сызығы», rbGroupFooter &ndash топтың төменгі колонтитулы, rbSummary &ndash есеп берудің соңында баспаға басылады. Біз құрған компоненттің BandType қасиетіне rbTitle мәнін меншіктейміз.
TQuickReport (бұл компонент форманың есеп беруге айналуына жауапты).
QRBand1 орналасқан TQRLabel (бұл компонент статистикалық мәтінді шығаруға арналған, және оның Caption қасиетіне болашақтағы есеп берудің тақырыбы мәтінін беруге болады).
4.35-сурет. Есеп беру тақырыбын құру
Егер QuickReport1 компонентің тышқанның оң жақ батырмасымен басып, контекстті мәзірден Preview Report опциясын таңдасақ, тақырыбы бар есеп беру беті көрінетін көру терезесі пайда болады.
Есеп беруді модификациялау үшін QRBand1 компонентінің BandType қасиетін rbDetail-ге өзгерту керек және формаға Ttable компонентің қосу қажет. Әрі қарай оның DataBase қасиетіне псевдоним атын орнату қажет, мысалға, BCDEMOS, TableName қасиетіне кесте атын, мысалға, CUSTOMER.DB, сосын Active қасиетін true өзгерту керек. Осыдан кейін формаға TDataSource компонентін қосу қажет және DataSet қасиетіне алдында қосылған Table1 компоненті атын береміз, әрі қарай QuickReport компонентінің DataSource қасиетіне құрылған DataSource1 компоненті атын береміз. Осыдан кейін QRBand1-ге TQRDBText компонентін қосуға болады, оның DataSource қасиетіне алдында құрылған DataSource1 компоненті атын береміз және DataField қасиетінің мәніне керекті жолды таңдаймыз. Егер қажет болса басқа TQRDBText компоненттерін қосуға болады және есеп беруде көрінетін кесте жолдарын басқаша етіп таңдауға болады /4.36-сурет/.
4.36-сурет. Кестелік есеп берудің модификациясы
Егер QuickReport компонентінің контекстті мәзірінен Preview Report опциясын таңдасақ, модифицирленген кестелік есеп беруді көруге болады.
Енді тақырыпты есеп беру және колонтитулды есеп беруді құрып көрейік. Ол үшін есеп беруді құру кезінде TQRBand-тің бірнеше әртүрлі компоненттерін қолданамыз.
Тақырыптық және колонтитулдік есеп беруді құру кезінде жаңа форма құру қажет, формаға төрт TQRBand компонентін орналастырамыз (олар үнсіздік бойынша QRBand2,...., QRBand5 атын алады) және BandType қасиетіне сәйкесінше rbTitle, rbColumnHeading, rbDetail және rbPageFooter орнатамыз. Ары қарай формаға TTable компонентін қосу қажет және DatabaseName қасиетіне BCDEMOS береміз, TableName қасиетіне Customer береміз, сосын Active қасиетіне true қоямыз. Формаға TDataSource компонентін қосу қажет және DataSet қасиетіне алдында қосылған Table1 атын береміз және QuickReport компонентінің DataSource қасиетіне құрылған DataSource1 атын береміз. Сосын есеп беру тақырыбы және сәйкесінше TQRBand компоненттері бағандары үшін бірнеше TQRLabel компонентін қосу керек, әрқайсының Caption қасиетіне қажетті мәндерін беру керек.
Сосын QRBand компонентіне үш QRDBText компонентін орналастыру керек, BandType қасиетіне DetailBand меншіктеп және олардың DataSource қасиетіне DataSource1 меншіктейміз, ал DataField қасиетіне Company, Phone және Fax меншіктейміз. Беттің нөмірі көріну үшін TQRSysData компонентін (бұл компонент мәліметтер құрамына тәуелсіз, бет нөмірі, жыл, уақыт және т.б. арналған) BandType қасиеті rbPageFooter тең TQRBand компонентіне орналастыру қажет және оның Data қасиетіне qrcPageNumber, ал Text қасиетіне &ldquoСтр. &ldquo береміз.
Осыдан кейін форма 3-суреттегідей болады.
Қайтадан Preview Report опциясын таңдап, жаңа есеп беру мазмұнын көруге болады.
4.37-сурет. Тақырыпты және колонтитулды есеп беру
Өзіндік жұмысқа тапсырма
-
"master-detail" есеп беруін құру
-
Есеп беруде графикалық және мемо-жолдардың көрінуін қамтамасыз ету
-
Есеп беруді алдын-ала көру
14 - зертханалық жұмыс.
Қосымшаның анықтамалық жүйесін құру
Әдістемелік нұсқаулар
С++Builder- де жасалатын қосымшаның анықтамалық жүйесін құру келесі 4 кезеңдерден тұрады:
-
Басқару элементтерінің /форма және ондағы компоненттер/ контекст номерлерін тағайындау;
-
Мәтіндік редакторды /мысалы, Word-ты/ пайдаланып анықтамалық жүйенің мәтіндік файлын жасау;
-
Арнаулы компилятор көмегімен анықтама файлын жасау;
-
Анықтама файлын қосымша жобасына апарып қосу.
Компоненттердің контексттік номерлерін тағайындау.
Форма және онда орналасқан компоненттер анықтамалық жүйеге сәйкес контексттік номер ала алады, ол үшін компоненттің HelpContext қасиетіне анықтама файлындағы сәйкесінше тақырыптың номері беріледі. Қосымша орындалған кезде компонентті белгілеп алып F1 пернесін бассаңыз анықтама терезесінде сол компонентке қатысты анықтаманы көре алатын боласыз, егер оған сәйкес бөлім немесе тақырып тағайындалмаған болса сәйкесінше хабарлама шығады.
Жаттығу жұмыстары
Анықтамалық жүйенің мәтіндік файлын жасау.
Анықтамалық жүйенің мәтіндік файлы кез-келген мәтіндік редакторда, бірақ *.rtf форматта жасалады. Мұны жасау үшін Microsoft Word процессорын да пайдалануға болады. Мәтіндік файл жеке тақырыптарды білдіретін бөлімдерден /немесе парақтардан/тұрады.
Microsoft Word -та анықтама мәтіндік файлындағы бөлімдердің атрибуттары сноскалар түрінде беріледі, бөлімге сносканы қою үшін курсорды бөлімнің тақырыбының алдына /немесе соңына/ апарып, Вставка->Сноска / Word 2003/ немесе Ссылки->Вставить сноску / Word 2007/ командаларын орындайды.
1-кезең. С++Builder ортасында екі санды қосуды орындайтын қрапайым қосымша құрыңыз, қосымша терезесі келесі түрде болсын /4.39-сурет/ және қосымшаны жеке бумаға сақтап қойыңыз. Суреттегіге сәйкес форма тақырыбын, Label, Edit және Button компоненттерінің сәйкес қасиеттерін өзгертіңіз. Жоғарыда құрылған ProbHelp.rtf файлындағы бөлімдердің номеріне сәйкес Edit1 компоненттің контекст номеріне яғни HelpContext қасиетіне 2 мән береміз, себебі оған сәйкес анықтама бөлімі Kosilgiw1 –дің реттік номері 2-ге тең, тура сол сияқты Edit2 мен Edit3 –тің HelpContext қасиеті сәйкесінше 3 пен 4 болады да, Button1 компонентінің HelpContext қасиеті өзіне сәйкес бөлімнің реттік номері 5-ші номерді алады.
2-кезең.Бұл кезең Microsoft Word редакторын пайдаланып, бастапқы *.rtf форматтағы анықтаманың мәтіндік файлын құруды қамтиды. Программадағы элементтерге сәйкес оның жалпы көрінісі келесі түрде болады /4.38, 4.39-сурет/ және бұл файлды, қосымша үшін ашылған буманың ішінен MyHelp деген жаңа бума ашыңызда сонда ProbHelp.rtf деген атпен сақтаңыз. Бұл құжаттың терезесінде 4.38- суреттегідей мәтіндерді теру керек /анықтама терезесінде шығатын мәтін өзгеріп кетпес үшін ағылшын әріптері пайдаланылды/ және мұнда ең алғашқы бөлім «Programma turali» Word-тағы Заголовок1 стилімен теріледі, ал қалған бөлімдердің тақырыптарын жай «қалың бояулы» шрифтімен жаса жеткілікті. Мәтін теріліп болған соң әрбір бөлімге сәйкес «сноскалар» қойылады/4.40-сурет, сол жақтағы терезе/. Келесі қадамда курсорды бөлімдерде орналасқан жай мәтіндер мен келесі бөлім тақырыбының арасына қойып, Вставка->Разрыв страницы командасын орындайсыз сонда 5 бөлімге сәйкес 5 терезе шығады /4.40-сурет, ортада және оң жақтағы терезелер/. Файлды *.rtf форматта сақтауды ұмытпаңыз.
3-кезең.
3.1. Microsoft Word -та жасалған MyHelp/ProbHelp.rtf форматтағы мәтіндік файлды анықтамалық жүйенің *.hlp файлына айналдыру үшін арнаулы Microsoft Help Workshop компиляторын ашу керек, ол үшін Programm Files/Borland/СBuilder6/ HELP/TOOLS каталогында Microsoft Help Workshop компиляторының hcrtf.exe файлын іске қосамыз, сонда келесі терезе пайда болады /4.42- сурет/.
3.2. Келесі қадамда File->New командасы орындалады , пайда болған терезеден Help Project таңдалынады.
3.3. Пайда болған Project File Name терезесінде, әуелі манағы даярланған ProbHelp.rtf форматтағы мәтіндік файл сақталған MyHelp бумасын ашып алу керек, сонан соң барып Имя файла тұсындағы терезеге жоба файлының атын, мысалы HelpProjFile1 теріп жазамыз /4.43-сурет./
3.4. «Сохранить» батырмасы басылғаннан кейін пайда болған терезеде HelpProjFile1.hlp файлының параметрлерін тағайындау басталады /4.44-сурет/.
Бұл терезеде келесі параметрлер өзгертіледі:
-
Files параметрі, бұл манағы даярланған ProbHelp.rtf файлына баратын маршрутты беру үшін қолданылады, ол үшін терезедегі сол Files батырмасына шертеміз, сонда Topic Files терезесі шығады, сол терезедегі Add батырмасына шертсеңіз ProbHelp.rtf файлы сақталған MyHelp бумасы ашылу керек, сол бумадағы жалғыз файл ProbHelp файлын белгілеп «Открыть» командасын орындайсыз, нәтижесінде 4.44- суреттегі терезеде келесі жол, Files параметрі пайда болады /4.45-сурет/;
-
Window парметрі, бұл программадағы анықтама шығатын терезенің атын беру үшін қолданылады, бұл параметрді тағайындау үшін Window батырмасына шертіледі, пайда болған Create a Window терезесіндегі курсор тұрған жерге main деп терезенің типін жазасыз, OK басылғаннан соң келесі терезе қасиеттерін беретін Window Properties терезесіндегі Title bar text тұсына терезенің атын, мысалы «АНЫҚТАМА ТЕРЕЗЕСІ» деп жазады, нәтижесінде 4.46- терезеде Window парметрінің жолы пайда болады;
-
Map параметрінің терезесінде ProbHelp.rtf анықтама файлындағы әрбір тақырыпшаға « #» таңбасы арқылы берілген идентификациялық атаудың /ID_1, ID_2, ... , ID_5/ оның «+» арқылы берілген реттік номерлеріне /1,2, ... , 5/ сәйкестігі тағайындалады, ол үшін терезедегі Map батырмасына шертіп, пайда болған терезедегі Add командасы орындалады, пайда болған келесі Add Map Entry терезеде Topic ID параметріне ID_1, ID_2, ... , ID_5 идентификациялық атауларды, ал Mapped Numeric Value парметріне сәйкес 1,2, ... ,5 номерлерді бір-бірлеп жазып және олардың әрқайсысы үшін ОК орындалып отырады, нәтижесінде 4.46-терезедегі Map параметрі пайда болады;
-
Config параметрінің қызметі анықтама файлының конфигурациясына өзгерістер енгізу, мысалы, анықтама файлында >> немесе << батырмаларын пайдаланып алдыға не кейінге оралуды жүзеге асыру үшін ол файлға BrowseButtons() функция-макросын қосу керек болады, ол үшін терезедегі Config батырмасына шертіп, пайда болған Configuration Macros терезесінде Add командасын орындалады, сонон соң шығатын Add Macro терезеде BrowseButtons() деп жазып, ОК басылады, нәтижесінде 4.46-терезеде Config параметрі шығады;
-
Соңғы қадам бұл параметрлері тағайындалған анықтама файлының жобасын компиляцияға жіберу ол үшін терезедегі Save and Compile батырмасына шертесіз, егер жобада қате болмай бәрі дұрыс болса нәтижесінде 4.47-суреттегі терезе шығады.
Өзіндік жұмыстарға тапсырмалары
Келесі мазмұндағы программалардың анықтамалық жүйесін құрыңыз:
1 тапсырма
-
Пирамиданың көлемін табу.
-
Үш қабырғасы бойынша үшбұрыштың ауданын есептеу.
-
Параллелипедтің көлемін есептеу.
-
Тізбектің жалпы кедергісін есептеу (параллель қосылған).
-
Трапецияның ауданын есептеу.
2 тапсырма
-
Азық-түлік дүкенінің ассортименті туралы мәлімет беретін;
-
Поликлиниканың дәрігерлері туралы мәлімет беретін;
-
Математикалық формулалар анықтамалығының қызметін атқаратын;
-
Кітапханадағы картотека қызметін атқаратын;
-
Атына сәйкес түстерді көрсете алатын;
3 тапсырма
№
|
Матрица
|
Тапсырмалар
|
Шектеу
|
1
|
A(5,7)
|
Матрицаның әрбір бағанының оң элементтерінің қосындысын және олардың санын есте сақтау. Нәтижесін екі жол түрінде шығару.
|
Aij>0
|
2
|
A(N,M)
|
Матрицаның әрбір жолының оң элементтерінің қосындысын және олардын санын есептеп есте сақтау.Нәтижесін екі баған түрінде баспадан шығару.
|
N<=4
M<=5
|
3
|
B(N,N)
|
Матрицанын бас диагоналындағы және одан төмен орналасқан элементтердің қосындысын және элементтер санын есептеу.
|
N<=6
|
4
|
B(N,N)
|
Матрицаның бас диагоналынан төмен орналасқан оң элементтерінін қосындысын және олардың элементтер санын есептеу.
|
N<=4
Bij>0
|
5
|
D(K,K)
|
Матрицаның жұп орындағы элементтерінің элементтерінін орнына нольдерді жазып және матрицаны баспаға шығару.
|
K<=5
|
6
|
D(4,4)
|
Матрицаның теріс элементтерінің орнына нөльдерді, ал оң элементтер орнына бірлерді жазу.
|
Dij<0
|
7
|
F(N,M)
|
Матрицаның әрбір жолындағы максималь және минималь элементтерді тауып оларды сәйкесінше осы жолдың бірінші және соңғы элементтерінің орнына жазу керек. Матрицаны баспаға шығару керек.
|
N<=5
M<=3
|
8
|
F(4,3)
|
Элементтері бүтін сан болатын матрицанын әрбір жолынын төртке еселі элементтерінің санын және нәтижелерінің ең үлкенін табу керек.
|
(Nij / 4)*Nij
|
9
|
N(5,3)
|
Элементтері бүтін саң болатын матрицанын әрбір жолынын беске еселі элементтерінің санын және нәтижелерінің ең үлкенін табу керек.
|
(Nij / 5)*Nij
|
10
|
N(5,5)
|
M(3,Kmax) матрицасын құру керек, мұндағы Kmax- N матрицасының оң элементтерінің ең үлкені. Мұндағы M матрица элементтері N матрицаның оң элементтерін ғана ала алады, ал теріс элементтердің орнына ноль жазу керек.
|
|
15 - зертханалық жұмыс.
Қосымшаны таратуға даярлау. Дистрибутивтер. Орнатушы инсталляциялық пакетті Install Shield Express утилитасы арқылы жасау
Әдістемелік нұсқаулар
Install Shield Express - инсталлятор құрудағы қуатты және ыңғайлы құралдардың бірі. Бұл түсінікті интерфейске, және деминимальды жады көлемін алатын профессионалды инсталляторларға тән керекті функциялар жиынтығына ие.
Install Shield Express арқылы инсталляциялық қосымша құру үшін Install Shield Express орындалуга жібереміз. Жаңа жоба құру кезінде жобаның атын енгізіп, қосымша файлдары орналасқан каталогты көрсету қажет /4.49-сурет/.
4.49-сурет. Жаңа дистрибутив құру 0>
Достарыңызбен бөлісу: |