Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_укр.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.07 Mб
Скачать

4. Обробка компонентів як масиву

Групу однотипних компонентів можна обробляти як масив. 

Наприклад, нехай є форма виду:

 

 

Для кнопки напишіть код, який підраховує середнє значення тільки в заповнених полях і відображає результат у полі під кнопкою. Для відокремлення поля з результатом від інших полів задамо у властивості Tag цього поля значення 1.

Для кнопки напишемо код:

 

procedure TForm1.Button1Click(Sender: TObject);

var i,kol:integer; s:real;

begin

    //спочатку кількість і сума рівні 0

    kol:=0;

    s:=0;

    //у циклі проходимо по всіх компонентах

    for i:=0 to controlcount-1 do

        //якщо поточний компонент текстове поле

        if controls[i].classname='TEdit' then

            //якщо це не поле результату і поле не порожнє

            if (controls[i].tag<>1) and (tedit(controls[i]).text<>'') then

            begin

                //додаємо його до суми

                s:=s+strtofloat(tedit(controls[i]).text);

                //збільшуємо кількість полів на 1

                kol:=kol+1;

            end;

 

    //для видачі результату треба знайти поле із властивістю Tag=1

    //у циклі проходимо по всіх компонентах

    for i:=0 to controlcount-1 do

        //якщо поточний компонент текстове поле

        if controls[i].classname='TEdit' then

            //якщо це поле результату (tag=1)

            if controls[i].tag=1 then

                //якщо кількість не 0 (є не пусті поля у масиві)

                if kol<>0 then

                    //у полі результату відображаємо середнє

                    //і округляємо до 2 знаків

                    tedit(controls[i]).Text:=floattostr(roundto(s/kol,-2))

              //якщо кількість дорівнює 0 (поля у масиві не заповнювалися) 

              else

                    //поле результату очищаемо

                    tedit(controls[i]).Text:='';

end;

 

Для роботи цього коджу треба підключити модуль Math.

 

5. Сортування даних у компонентах

Розглянемо принцип сортування даних у текстових полям методом «пухирця». Для цього методу існує стандартний алгоритм, яком ми і скористаємося.

Нехай є форма виду:

 

 

Для роботи сортування необхідно виконати єдину умову: текстові поля повинні створюватися послідовно і розміщуватися на формі у порядку створення.

 

procedure TForm1.Button1Click(Sender: TObject);

var i,k:integer; b:real;

begin

    case radiogroup1.ItemIndex of

    //якщо обрано перший перемикач   

    0:

    begin

        //сортуємо текстові поля за зростанням       

        for k:= controlcount-2 downto 1 do

            for i:= 0 to k - 1 do

                if controls[i].classname='TEdit' then

                    if strtofloat(tedit(controls[i]).text) > strtofloat(tedit(controls [i+1]).text) then

                    begin

                        b:= strtofloat(tedit(controls[i]).text);

                        tedit(controls[i]).text:= tedit(controls[i+1]).text;

                        tedit(controls[i+1]).text:= floattostr(b);

                end;

    end;

    //якщо обрано другий перемикач   

    1:

    begin

        //сортуємо текстові поля за убуванням      

        for k:= controlcount-2 downto 1 do

            for i:= 0 to k - 1 do

                if controls[i].classname='TEdit' then

                    if strtofloat(tedit(controls[i]).text) < strtofloat(tedit(controls [i+1]).text) then

                    begin

                        b:= strtofloat(tedit(controls[i]).text);

                        tedit(controls[i]).text:= tedit(controls[i+1]).text;

                        tedit(controls[i+1]).text:= floattostr(b);

                    end;

    end;

    end;

end;

 

Питання для самоконтролю

1. Для цього створюють універсальні підпрограми в оброблювачах подій?

2. Як звернутися до поточного компонента на формі не за ім'ям? Приклад.

3. Який метод використовують для переходу на наступний компонент?

4. Як звернутися до довільного компонента на формі не за ім'ям? Приклад.

5. Як визначити тип компонента на формі? Приклад.

6. Як визначити загальну кількість компонентів на формі?

7. Як обробити набір компонентів на формі?

8. Яким чином можна у групі однотипних компонентів  відокремити потрібні?

Лекція №9

Тема: Створення програмних модулів.

Мета: Придбати знанння та навчитися створювати власні програмні модулі.

Перелік питань, що розглядаються на лекції:

1. Принципи модульного програмування

2. Принцип «приховання даних»

3. Поняття модуля в Object Pascal

4. Структура модульного файлу

5. Створення модуля в Object Pascal

6. Створення модуля з переліком стандартних діалогів

4. Використання текстових констант у модулях

8. Створення підпрограм для обробки компонентів

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]