void __fastcall TForm2::Edit2KeyPress(TObject *Sender,
char &Key)
{
if(Key>='0' || Key<='9') ; // бұл 0- 9 цифрларды кӛрсету
if(Key==8) ; // Backspace -ӛшіру пернесінің ішкі коды
if(Key==13) // ENTER перенсінің ішкі коды
Edit3->SetFocus();
}
Ал, форма терезесіндегі барлық терезелік компоненттерде басқару фокустарының
ӛзара ауысып отыруын ұйымдастыру үшін Form компонентінің SelectNext (TWinControl*
CurControl, bool GoForward, bool CheckTabStop); әдісі қолданылады. Қосымшадағы Memo
терезесін мәтіндік файлдарды ашып оқу үшін немесе терезедегі мәтінді тексттік файлға
жазып сақтау үшінде қолдануға болады. Ол үшін оның LoadFromFile (FileName) әдісі-
терезедегі мәтінді файлға жазуды, ал SaveToFile (FileName) әдісі-керісінше файлдағы
мәтінді Memo терезесіне шығаруды қамтамасыз етеді. Мысалы:
...
AnsiString FileName = "C:\\WINDOWS\\WIN.INI";
// файлдың аты
Form1->Memo1->Lines->LoadFromFile(FileName);
Form1->Memo1->Lines->SaveToFile(ChangeFileExt
(FileName, ".BAK"));
...
Жаттығу жұмыстары
Үшбұрыштың ауданын, биіктігі мен табаны бойынша есептеуді орындайтын
қарапайым қосымша құру. Қосымша терезесі келесі түрде болуы қажет /4.4-сурет(а,б)/.
4.4-сурет. а) Форма терезесі
4.4-сурет. в) Қосымша терезесі
Орындалуы:
1.
File New Application командалары орындалады.
2.
Жаңа құрылған жобаны сақтау үшін Filе
Save All командасы орындалады. Жоба
құрамына кіретін файлдардың бір бумада сақталуы қажет.
3.
Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және
олардың келесі қасиеттері ӛзгертіледі:
Компоненттің аты
Қасиетінің аты Мәні
Form1
Caption
Үшбұрыштың ауданын есептеу
Memo1
Lines
Үшбұрыштың ауданын биіктігі мен табаны бойынша есептейтін программа
құрыңыз
Label1
Caption
Биіктік
Label2
Caption
Табан
Label3
Caption
Үшбұрыштың ауданы
Edit1
Text
Edit2
Text
Edit3
Text
Button1
Caption
Есептеу
«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код
жазылады:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int biktik, taban;
float audan;
biktik=StrToInt(Edit1->Text);
taban=StrToInt(Edit2->Text);
audan=float(biktik*taban)/2;
Edit3->Text=FloatToStr(audan);
}
Ӛзіндік жұмыс тапсымалары
Келесі мазмұндағы есептерді шеше алатын қосымша құрыңыз:
1.
Пирамиданың кӛлемін табу.
2.
Үш қабырғасы бойынша үшбұрыштың ауданын есептеу.
3.
Параллелипедтің кӛлемін есептеу.
4.
Тізбектің жалпы кедергісін есептеу (параллель қосылған).
5.
Трапецияның ауданын есептеу.
6.
Тізбектің жалпы кедергісін есептеу (тізбектей қосылған).
7.
Екі қабырғасы және арасындағы бұрышы бойынша үшбұрыштың ауданын есептеу.
8.
Бүтін сандармен арифметикалық амалдарды орындай алатын калькулятор программа
жасау.
9.
Тригонометриялық функцияларды және түбір табуды орындай алатын калькулятор
жасау.
10.
Цилиндр кӛлемін табу.
4 - зертханалық жұмыс.
Қосымша құруда тізімдерді пайдалану
Әдістемелік нұсқаулар
C++Builder ортасында құрылатын қосымшалардағы тізімнің кӛмегімен таңдау
жұмысын ұйымдастыру үшін Standart панелінің ListBox, ComboBox компоненттерін
қолдануға болады.
Standart панелінің ListBox, ComboBox компоненттері. ListBox компоненті қарапайым
тізімдерді жасауда қолданылады.
Мысалы,
ComboBox1->Items.LoadFromFile(„с:\Gruppa\Family.txt‟);
Жаттығу жұмыстары
Студент пен оқытушы туралы ақпарат бере алатын қарапайым қосымша құру керек.
Әрбір студент немесе оқытушы туралы ақпарат оның фамилиясына сәйкес аталатын *.txt
файлда сақталсын. Қосымша құруда тізімдерді пайдаланыңыз.
Орындалуы. Қосымша үш /4.5, 4.6, 4.7 –суреттер/ терезеден тұрады. «Анықтама»
терезесіндегі батырмалар кӛмегімен «Студенттер» немесе «Оқытушылар» терезелерінің
біріне кӛшуге болады. Бұл терезелерде сәйкесінше студент немесе оқытушы туралы нақты
мәлімет алынады.
«Анықтама» терезесі (Form1) үшін жазылған программа мәтіні:
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
4.5-сурет. Анықтама терезесі
4.6-сурет. Студенттер терезесі
4.7-сурет. Оқытушылар терезесі
// «Студенттер» батырмасының оқиға ӛңдеуші коды
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show();
}
// «Оқытушылар» батырмасының оқиға ӛңдеуші коды
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form3->Show();
}
//«Программаны жабу» батырмасының оқиға ӛңдеуші коды
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Form1->Close();
}
«Студенттер» терезесі (Form2) үшін жазылған программа мәтіні:
#include "Unit2.h"
#include "Unit1.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
// «КЕЙІН» батырмасының оқиға ӛңдеуші коды
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Form1->Show();
Form3->Hide();
Form2->Hide();
}
// Студенттер тізімі жазылған ListBox1 компонентін шерту оқиғасының коды
void __fastcall TForm2::ListBox1Click(TObject *Sender)
{
if (Form2->ListBox1->ItemIndex==0) M
Memo1->Lines->LoadFromFile("Жаркынбек.txt");
(Form2->ListBox1->ItemIndex==1)
Memo1->Lines->LoadFromFile("Жумагазы.txt");
if (Form2->ListBox1->ItemIndex==2)
Memo1->Lines->LoadFromFile("Имангалиева.txt");
}
«Оқытушылар» терезесі (Form3) үшін жазылған программа мәтіні:
#include "Unit3.h"
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm3 *Form3;
//---------------------------------------------------------------------------
void __fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
// Оқытушылар тізімі жазылған ComboBox1 компоненті оқиғасының коды
void __fastcall TForm3::ComboBox1Change(TObject *Sender)
{
if(ComboBox1->ItemIndex==0)
Memo1->Lines->LoadFromFile("Мухтаров.txt");
if(ComboBox1->ItemIndex==1)
Memo1->Lines->LoadFromFile("Асанова.txt");
}
//«КЕЙІН» батырмасының оқиға ӛңдеуші коды
void __fastcall TForm3::Button1Click(TObject *Sender)
{
Form1->Show();
Form3->Close();
Form2->Hide();
}
Ӛзіндік жұмыс тапсырмалары
Тізімдерді және олардың қасиеттері мен әдістерін, уақиғаларын пайдалана отырып:
1.
Азық-түлік дүкенінің ассортименті туралы мәлімет беретін;
2.
Поликлиниканың дәрігерлері туралы мәлімет беретін;
3.
Математикалық формулалар анықтамалығының қызметін атқаратын;
4.
Кітапханадағы картотека қызметін атқаратын;
5.
Атына сәйкес түстерді кӛрсете алатын;
6.
Атына сәйкес фигураларды кӛрсете алатын;
7.
Атына сәйкес музыка ойнай алатын;
8.
Фильмдер картотекасының қызметін атқаратын;
9.
Футбол клубтары туралы анықтамалар беретін;
10.
Қаладағы мәдени орталықтарда ӛтетін іс-шаралар туралы ақпарат беретін;
5 –зертханалық жұмыс.
Қосымшадағы ауыстырғыштардың қызметі
Әдістемелік нұсқаулар
C++Builder ортасында программалауда, программа ұсынатын мүмкіндіктердің бірін
немесе қатарынан бірнешеуін таңдау үшін ауыстырғыштар (переключатель, флажок)
қолданылады. Программада мұндай ауыстырғыштардың қызметін Standart панелінің
CheckBox, RadioButton және RadioGroup компоненттері атқарады. Ауыстырғыш екі күйде
ғана бола алады: «қосылған» (ν немесе ●) және «ажыратылған» (□ немесе ○ ).
Ауыстырғыштарды мүмкіндігіне қарай екі топқа бӛледі: тәуелсіз және ӛзара тәуелді.
Тәуелсіз ауыстырғыштардың жұмысы басқа ауыстырғыштарға байланыссыз, тәуелсіз
болады.
CheckBox компоненті. Программада CheckBox компонентінің кӛмегімен жасалатын
ауыстырғыш, тәуелсіз ауыстырғыштар тобына жатады. Әдетте, қажет болған жағдайда
бірнеше ауыстырғыштарды бір топқа біріктіріп пайдаланады, ол үшін контейнердің ролін
атқаратын арнаулы GroupBox және Panel және т.б. компоненттер қолданылады.
Әдетте қосымшада ауыстырғыштың күйін ӛзгерту үшін тышқанның сол жақ
батырмасына шертеді, яғни қандай болғанына қарамастан әйтеуір күйі ӛзгеретін болса, онда
CheckBox компоненті үшін міндетті түрде OnClick оқиғасы пайда болады. Бұл оқиғаны
ӛңдеуге арналған функция, кӛбінесе ауыстырғыштың күйіне байланысты белгілі бір
әрекеттердің немесе операторлардың орындалуын қамтамасыз ету үшін қолданылады.
Мысалы,
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked = = true)
Memo1->Font->Size=10;
}
RadioButton компоненті. RadioButton компоненті тәуелді ауыстырғыштар қатарына
жатады, яғни, бір контейнерде орналасқан RadioButton түріндегі бірнеше
ауыстырғыштардың біреуі «қосылған» күйде болса, онда қалғандарының барлығы бірдей
автоматты түрде «ажыратылған» күйге кӛшеді.
Жаттығу жұмыстары
1-жаттығу. Кездейсоқ сандар генераторын (random) пайдаланып жасалған массивтің
max және min элементтерін табуды және массивті сұрыптауды қолданушының сұранысына
байланысты бір-біріне тәуелсіз орындай алатын қосымша құрыңыз. /4.8-суреттегідей/
4.8-сурет. Қосымша терезесі.
#include "Unit1.h"
#include "stdlib.h"
TForm1 *Form1;
float a[100];
int Elem_sani=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---Орындау батырмасының коды ----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float max=a[0];
float min=a[0];
if (Edit1->Text=="")
{ShowMessage("Massiv elementterinin sanin beriniz");
Edit1->SetFocus();}
if (CheckBox1->Checked == True) //max элементті табу
{for (int i=0;i
if (a[i]>max) max=a[i];
}
Edit2->Text=FloatToStrF(max,ffFixed,5,2);
}
if (CheckBox2->Checked == True) //min элементті табу
{for (int i=0;iif (a[i]Edit3->Text=FloatToStrF(min,ffFixed,5,2);
}
if (CheckBox3->Checked == True)
// массивті ӛсу ретімен сұрыптау
for(int i=0;i{ max=a[i]; int Nmax=i;
for(int j=i;jif (a[j]>max) {max=a[j]; Nmax=j;}
a[Nmax]=a[i]; a[i]=max;
Memo2->Lines->Add("a["+Int
ToStr(i)+"]= "+FloatToStrF(max,ffFixed,5,2)); }
}
//------Массивті толтыру батырмасының коды-----------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (Edit1->Text=="")
{ShowMessage("Massiv elementterinin sanin beriniz");
Edit1->SetFocus();}
Elem_sani=StrToInt (Edit1->Text);
for(int i=0; i{ a[i]= (float) random(100)/7-3;
Memo1->Lines->Add("a["+IntToStr(i)+"]=
"+FloatToStrF(a[i],ffGeneral,3,1));}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{Edit1->SetFocus();}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{Form1->Close();}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{Memo1->Clear(); Memo2->Clear();
Edit1->Clear(); Edit2->Clear(); Edit3->Clear();}
//---------------------------------------------------------------------------
2-жаттығу.
Студенттер туралы мәліметтер (фамилиясы, аты және туған жылы) класс түрінде
анықталған. Группадағы студенттер туралы мәліметтерді сұрыптауды (фамилиясын немесе
атын алфавит бойынша, туған жылдарын кему реті бойынша орналастыру) орындайтын
программа жазыңыз. Программа терезесі 4.9- суретте кӛрсетілген.
4.9-сурет. Студенттер туралы мәліметтер
Терезедегі компоненттер қасиеттерінің және оқиғаларының мәндері:
Компоненттің аты
Қасиеттерінің мәндері, оқиғалары
Form1
Caption = 'RadioButton компонентiн пайдалану мысалы'
Label1
Caption = 'Фамилия'
Label2
Caption = 'Аты'
Label3
Caption = 'Туган жылы'
Memo1
Lines.Strings = ( ')
Edit1
Text қасиеті тазаланады, OnKeyPress = Edit1KeyPress
Edit2
Text қасиеті тазаланады, OnKeyPress = Edit2KeyPress
Edit3
Text қасиеті тазаланады, OnKeyPress = Edit3KeyPress
Button1
Caption = 'ЕНГIЗУДI ОРЫНДАУ', OnClick = Button1Click
Button2
Caption = 'СУРЫПТАУДЫ ОРЫНДАУ', OnClick =
Button2Click
RadioGroup1
Caption = 'Сурыптау'
Items.Strings = (
'Фамилия бойынша'
'Аты бойынша'
'Туган жылы бойынша ')
Программаның мәтіні:
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
class stud
{public:
AnsiString fam, ati;
int tugG;
};
stud grup[10]; int n=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
// 'ЕНГIЗУДI ОРЫНДАУ' батырмасының коды
{
grup[n].fam=Edit1->Text;
grup[n].ati=Edit2->Text;
grup[n].tugG=StrToInt(Edit3->Text);
Memo1->Lines->Add(grup[n].fam+" "+
grup[n].ati+" "+IntToStr(grup[n].tugG));
n++;
Edit1->Clear();Edit2->Clear();Edit3->Clear();
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Edit3->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender,
char &Key)
{
if(Key==13) Button1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
// 'СУРЫПТАУДЫ ОРЫНДАУ' батырмасының коды
{
if(RadioGroup1->ItemIndex==0) //fam boinsha syriptay bastaldi
{ Memo1->Clear();
for(char i='А';i<='Я';i++)
for (int j=0;jif(grup[j].fam[1]==i)
Memo1->Lines->Add(grup[j].fam+" "+
grup[j].ati+" "+IntToStr(grup[j].tugG));
} // fam boinsha syriptay bitti
if(RadioGroup1->ItemIndex==1) //ati boinsha syriptay bastaldi
{ Memo1->Clear();
for(char i='А';i<='Я';i++)
for (int j=0;jif(grup[j].ati[1]==i)
Memo1->Lines->Add(grup[j].ati+" "+
grup[j].fam+" "+IntToStr(grup[j].tugG));
} //ati boinsha syriptay bitti
if(RadioGroup1->ItemIndex==2) //tugG boinsha syriptay bastaldi
{Memo1->Clear();
for(int i=0;i{ stud max=grup[i]; int maxI=i;
for (int j=i;jif(grup[j].tugG > max.tugG)
{max=grup[j]; maxI=j;}
Memo1->Lines->Add(max.ati+" "+
max.fam+" "+IntToStr(max.tugG));
grup[maxI]=grup[i];
grup[i]=max;
}
}//tugG boinsha syriptay bitti
}
Ӛзіндік жұмыс тапсымалары:
1.
Қолданушының таңдауына сәйкес тізбек мүшелерін арифметикалық, геометриялық
прогрессия ережелері немесе т.б. заңдылықтар бойынша құратын және алынған
тізбектің min –элементін табатын және тізбек элементтерін кему реті бойынша
орналастыратын программа жазыңыз.
2.
Қолданушының таңдауына сәйкес ―Ӛте жақсы―, ―ӛте жақсы және жақсы―, ―жақсы
және қанағаттанарлық―, ‖тек қанағаттанарлық― бағалармен оқитын студенттердің
тізімін шығарып беретін программа жазыңыз.
3.
Қолданушының таңдауына сәйкес фамилиясы ―A‖-дан басталатын қызметкерлер
тізімін, орташа жалақыдан жоғары жалақы алатын қызметкерлер тізімін, орташа
жалақыдан тӛмен жалақы алатын қызметкерлер тізімін шығарып беретін программа
құрыңыз.
4.
Қолданушының таңдауына сәйкес аяқ киім дүкенінің ассортиментінен әйел адамның
аяқ киімдерін, ер адамдар аяқ киімдерін, балалар аяқ киімдерін олардың құнымен,
шығарған фирмасымен және размерімен кӛрсететін программаны жазыңыз. Ең
қымбат және ең арзан балалар аяқ киімін де кӛрсететін болсын.
5.
Қолданушының таңдауына сәйкес автосалондағы машиналарды маркасына, шыққан
жылына және бағасына және түсіне қарай сұрыптап шығарып беретін программа
жазыңыз.
6.
Қолданушының таңдауына сәйкес поликлиникадағы дәрігерлердің аты-жӛні
бойынша, мамандығы бойынша және еңбек ӛтілі бойынша сұрыптап шығаратын
программа құрыңыз.
7.
Кітапханадағы кітаптарды, авторы, шыққан жылы, бағасы және тиражы бойынша
сұрыптайтын программа құрыңыз.
8.
Нақты сандардан тұратын бір ӛлшемді масивтегі оң және теріс элементтерді сұрыптап
шығаратын және оң элементтердің ең үлкенін табатын программа құрыңыз.
9.
Аэропорт анықтамалық бюросының мәліметтеріне сәйкес рейстерді бағыттары
бойынша, апта күндері бойынша және номерлері бойынша сұрыптайтын программа
құрыңыз.
10.
Стоматологқа келушілердің тізімінен қажет фамилияларды бас әрпі бойынша, келген
күні бойынша және дәрігері бойынша сұрыптап шығарып беретін программа
құрыңыз.
6 - зертханалық жұмыс.
Қосымшадағы терезелердің және мәзірлердің жұмысын ұйымдастыру. Форма және
мәзірлер
Әдістемелік нұсқаулар
Мәзірлер. Барлық Windows қосымшаларында қолданушы интерфейсінің элементі
ретінде ең кӛп тараған элемент – мәзір. Мәзір – қосымшада орындалатын командаларды
атқаратын қызметтеріне немесе т. б. белгілеріне қарай бір топқа біріктіріп тиімді пайдалану
үшін қолданылады. Windows қосымшаларында қолданылатын мәзірлерді келесі түрлерге
бӛледі:
-
Жүйелік мәзір ( SystemMenu) – бұл, Windows қосымшаларының барлығына тән мәзір
түрі, сондықтан C++Builder-де қосымша құрғанда жүйелік мәзір форманың ӛзімен қоса
анықталады. Жүйелік мәзірдің сурет-таңбасы, форманың тақырыптар зонасының сол
жағында, ал оның командаларына сәйкес сурет-таңбалар (, , немесе ) оң жағында
орналасады және оларды форманың BorderIcons (типі TBorderIcons) қасиетіндегі
biSystemMenu (типі Boolean) мәнін false ӛзгерту арқылы алып тастауға болады.
Қосымшадағы негізгі мәзір (немесе оны бас мәзір, горизонталь мәзір деп те атайды)
формаға MainMenu компонентінің кӛмегімен қойылады. Қосымшаның жекелеген
элементтеріне арналып жасалатын контекстік мәзір (тышқанның оң жақ батырмасын
басқанда пайда болатын мәзір) қосымшаға визуальдық емес PopupMenu компонентінің
кӛмегімен енгізіледі.
Мәзір конструкторын пайдалану. C++Builder ортасында формаға қойылған мәзірдің
пункттерімен жұмыс жасау үшін Мәзір конструкторын ( Menu Designer) қолданады. Оны
шақыру үшін формада орналасқан MainMenu немесе PopupMenu компоненттеріне екі рет
шерту керек, я болмаса олардың Items қасиеті шақырылады /4.10-сурет/.
4.10- сурет. Мәзір дизайнерінің терезесі.
Достарыңызбен бөлісу: |