Mainform модулінің соңғы бағдарламалық коды

varball:byte;

Begin

ball:=0;

if TestDlg.RadioGroup1.ItemIndex=0 then ball:=ball+1;

if TestDlg.RadioGroup2.ItemIndex=

...

...

ResultDlg.Label1.Caption:=’Ваш результат:’+IntToStr(Ball);

ResultDlg.ShowModal;

end;

Тестілеу нәтижесінде әрбір дұрыс жауап 1 балл деп есептелінеді және балдардың жалпы қосындысы, максимум 5 жағдайында, Результатпішініне шығуы керек. Көрнекілік бағдарламалау құралдарының көмегімен бұл есепті шешу мүмкін емес, сондықтан қарапайым бағдарламалауға көшейік.

procedure TForm1.N6Click(Sender: TObject);

процедурасы тестілеу нәтижесінің балдарын қосады және нәтижені ballайнымалысына орналастырады. Тестен өтуші дұрыс жауабы бар радиобатырмаға басқан кезде ғана бал есептелінеді. Әрбір радиотопта бір ғана батырма дұрыс және ол бағдарламада өзінің топтық нөмірінің индексі бойынша белгіленеді, 0 – ден басталады. Бұл сұрақта дұрыс жауап бірінші жауап, радиобатырманың индексі 0 – ге тең және т.б. Бағдарламалық жолда

if TestDlg.RadioGroup1.ItemIndex=0 then ball:=ball+1;

шартты көшу командасы орындалады. Мұнда былай деп айтылады, егер тышқанмен бірінші топтың бірінші батырмасына шертсек (элемент индексі ItemIndex=0), онда ball айнымалысына 1 балл (ball:=ball+1) қосылады. Басқа жағдайда бұл команда орындалмайды. Осылайша TestDlg пішінінің барлық радиотобына жазып шығамыз. Тәжірибелік тұрғыдан алғанда бірдей жолдарды енгізуді жеңілдету үшін бірінші жолды жазғаннан кейін оны ерекшелеп, Edit менюінің Сору және Pasteкомандаларын қолдана отырып, тағы да төрт көшірме жасап, оған сәйкесінше өзгертулер енгізіңіздер.

Бағдарламалық жолда

ResultDlg.Label1.Caption:=’Ваш результат:’+IntToStr(Ball);

ResultDlgпішінінде орналасқан Label1 құрауышының Captionқасиетіне 'Ваш результат:' деген мәтін және алынған балдар саны меншіктелінеді, IntToStr(Ball) (Integer to string сөздерінің басқы әріптері— бүтінді жолға айналдыру) функциясы ball айнымалысындағы бүтін санды жолдық форматқа айналдырады.

ResultDlg.ShowModal;

командасы Результатпішінін демонстрация жасайды.

Ø Бағдарламаны орындап, онда өз жолдастарыңызды тестен өткізіңіздер және оларға Паскаль тілінде мұндай бағдарламаны құру үшін 1500 – ге жуық жол жазу керек, ал ол бір жұмалық немесе айлық уақытты алатынын айтыңыздар. Delphi тілін меңгеру арқылы мұндай бағдарламаны 30 минут уақыт ішінде жасауға болады. Delphi сияқты күшті, әрі әдемі бағдарламалық тілді үйреніп, біліп жатқандарыңызға мақтаныңыздар.

Тексеру сұрақтары:

1. Көрнекілік бағдарламалау дегеніміз не және оның қарапайым бағдарламалаудан айырмашылығы неде?

2. Жоба дегеніміз не, жаңа жобаны қалай бастаймыз және дайын жобаны қалай орындайды?

3. Пішін дегеніміз не, жаңа пішінді қалай қосамыз, жобада сіздер пішіннің қандай шаблонын қолдандыңыздар?

4. Delphi терезесі қандай элементтерден тұрады?

5. Құрал – саймандар панельі дегеніміз не? Құрал – сайман батырмаларына мысал келтіріңіздер.

6. Құрауыш, құрауыштар палитрасы дегеніміз не, палитра құрауыштарының қандай құрауыштар тобын білесіздер, өз жобаңызда қандай құрауыштарды қолдандыңыздар ?

7. Құрауыштардың қасиеті дегеніміз не, Объект Инспектіріне үшін қажет,құрауыш пен объект арасында қандай байланыс бар?

8. Бірнеше құрауыштарды және олардың қасиеттерін атап өтіңіздер.

9. Модульдің және жобаның бағдарламалық коды дегеніміз не, оларды экранда қалай көрсетеді ?

10. «Модульді қосу» дегеніміз не? Жобаға қандай модульдер қосылды?

11. Модуль қандай бөліктерден тұрады?

12. Жоба файлының құрылымы.

13. Меню дегеніміз не? Ол қандай элементтерден тұрады?

14. Оқиға дегеніміз не? Оқиғаларға мысалдар келтіріңіздер.

15. «Оқиғаны өңдеу» дегеніміз не? Оқиғаны өңдеуге мысалдар келтіріңдер.

16. Қандай процедуралар пішінді демонстрацияға шақырады ?

17. «Тест» жобасында нені өзгертер едіңіз және не қосар едіңіз?

 

Зертханалық жұмыс №4 "Квадрат теңдеуді шешу"

Label, Edit, Memo және Button құрауыштарын қолдану.
Ағымды коэффициенттері бар ( ) квадрат теңдеудің түбірлерін есептейтін бағдарлама құру

Шешімі:

1. Меншік қаптамаңызға (№1 – ші зертханалық жұмысқа қараңыздар) MyFirstProject қаптамасын құрыңыздар (кез – келген басқаны да құруға болады).

2. Негізгі менюдің File | New | Application командасы арқылы жаңа қосымша ашыңыздар.

3. Form1 пішініне келесі құрауыштарды орналастырыңыздар (3.1.1 суретіне қараңыздар):

4. Label тамғасының Caption қасиетіне мына мәнді беріңіздер:
«Введите коэффициенты квадратного уравнения
A2*X^2+A1*X+A0=0»
Мәтін екі жолға орналасу үшін және тамғаның ортасы бойынша теңестірілуі үшін қасиеттің келесі мәндерін қажетті түрде орнату керек:
AutoSize – False,
WordWrap – True,
Alignment – taCenter.
Тамғаның өлшемін және оның орналасу жағдайын қолмен ұйымдастыруға болады.
Font қасиетіне келіңіздер және үш нүктесі бар батырмаға шертіңіздер. Пайда болған терезеден қаріптің өлшемін 8 – ден 10 – ға өзгертіңіздер. OK батырмасына басыңыздар .

5. Label2, Label3 және Label4 тамғалары үшін Caption қасиетіне ‘A0=’, ‘A1=’ және ‘A2=’ - ге тең деп сәйкес орнатыңыздар.

6. Edit1, Edit2 және Edit3 қасиеттері үшін Text қасиетінің мәнін бос жолға тең деп орнатыңыз.

7. Memo1 құрауышы үшін Lines қасиетін таңдаңыздар және үш нүктесі бар батырмаға басыңыздар. Пайда болған String List Editor терезесінен ‘Memo1’ жолын жойыңыздар. OK батырмасына басыңыздар.

8. Button1 және Button2 батырмаларының Caption қасиетіне ‘Решение’ және ‘Очистить’ сәйкес орнатыңыздар.

9. Екі рет шерту арқылы Решение батырмасын белсенді етіңіз және OnClick оқиға өңдеуішіне келесі жолды қойыңыздар:

procedure TForm1.Button1Click(Sender: TObject);

Var

a0, a1, a2, d, x1, x2: Double;

Begin

a0 := StrToFloat(Edit1.Text);

a1 := StrToFloat(Edit2.Text);

a2 := StrToFloat(Edit3.Text);

d :=a1*a1-4*a2*a0;

IF d>=0 THEN

BEGIN

x1 := (-a1+sqrt(d))/(2*a2);

x2 := (-a1-sqrt(d))/(2*a2);

Memo1.Lines.Add(’Результат:’);

Memo1.Lines.Add(’x1 = ’+FloatToStrF(x1,ffGeneral,7,2));

Memo1.Lines.Add(’x2 = ’+FloatToStrF(x2,ffGeneral,7,2));

END;

IF d<0 THEN

Memo1.Lines.Add(’Решений нет:’);

end;

Бағдарламаушы терген жолдар жартылай қою қаріппен ерекшеленген.

10. F12 пернесіне басыңыздар және пішінге қайтып оралыңыздар. Екі рет шерту арқылы Очиститьбатырмасын белсенді етіңіз жәнеOnClick оқиға өңдеуішіне мына жолды қойыңыздар

Memo1.Clear;

11. Жобаны C:\…\Мои документы\…\ MyFirstProject қаптамасына сақтаңыздар және F9 функциональды пернесін қолданып қосымшаны іске қосыңыз. Квадрат теңдеуді шешу үшін коэффиценттерді енгізіңіз және Решение батырмасына басыңыз. Редактірлеу терезесін тазалау үшін Очиститьбатырмасына басыңыздар (сурет 3.1.2 қараңыздар).

 

 

Зертханалық жұмыс №5 "Экрандық объектілерді сүйреу"

Экрандық объектілерді сүйреу тышқанның көмегімен жеке құрауыштардың арасында ақпаратты тиімді тасымалдауға мүмкіндік береді. Жолды бір тізімнен екінші тізімге сүйреу тетігін мысалда қарастырайық. Жоғарғы жақта жазбасы барListBox1және ListBox2құрауыштарынан тұратын жоба құрыңыздар.Бірінші тізімді апта аттарының атымен толтырыңыздар. Келесі қадамдар сүйреудің төрт қадамынан тұратын хабарламаны өңдеу мысалдарынан тұрады.

1 этап. Сүйреудің басталуы. Тышқанды сол жақ батырмасына басып жылжытқанда өрбиді. ListBox1құрауышының DragMode қасиетіне dmAutomatic орнатыңыздар, яғни құрауыш өзіне осы этаптың өңделуін алады. Егер осы қасиетке dmManual орнататын болсақ, онда бағдарлама құрушы сүйреудің басын (мысалы, MouseDownоқиғасы бойынша) және оның тетігін іске қосуды (BeginDrag әдісі) өзі қолмен анықтауы керек болады. Сүйреуді бастау сәтінде құрауыш OnStartDragоқиғасын өрбітеді. Осы қасиетті өңдеу оқиғасына мына жолды жазыңыздар:

Color:=clRed;

2 этап. Құрауыштан объектіні сүйреу. Тышқанның көрсеткішін құрауыштың үстінен жылжытқанда болатын сүйреуде ол OnDragOver оқиғасын өрбітеді. Осы оқиғаны өңдеудің келесі параметрлерін қарастырайық: Source - объект — сүйреудің көзі,X,Y– тышқанның көрсеткішінің координаталары,Accept – құрауыш сүйреп әкелінген ақпаратты қабылдай ма? жоқ па?, соны анықтайтын буль типтес айнымалы. ListBox2құрауышының осы оқиғасы үшін келесі жолды жазыңыздар, ол тек ListBox1құрауышынан ғанасүйреуге рұқсат береді:

Accept := Source=ListBox1;

3 этап. Ақпаратты толық құрауышқа лақтыру. Құрауыштан тышқанның батырмасын босатқан сәтте орындалатын сүйреу OnDragDropоқиғасын өрбітеді. Осы оқиғаның өңдеуішіне сүйреу сәйкес келетін қимыл жазылуы керек. Біздің жағдайда ол жолды сол жақ тізіменен оң жақ тізімге тасымалдау қимылы. ListBox2.OnDragDrop оқиғасының өңдеуішіне ListBox1тізімінде ерекшеленген жолды ListBox2тізіміне қосатын операторды жазыңыздар:

with ListBox1 do ListBox2.Items.Add(Items[ItemIndex]);

4 этап.Сүйреуді аяқтау. Құрауыш - сүйреудің көзі оны босатқан сәтте OnEndDragоқиғасын өрбітеді, оның Target параметрі басқа толық құрауышқа сәйкес келеді (біздің жағдайда ListBox2). Бұл оқиғаның өңдеуішіне бірінші тізімнен таңдап алынған жолды жоятын операторды және пішіннің түсін өзгертетін операторды жазыңыздар:

if Target = ListBox2 then
with ListBox1 do Items.Delete(ItemIndex);

Color := clYellow;

Компиляцияны орындаңыздар және сүйреу тетігінің жұмысын тексеріңіздер.