Un exemplu de aplicație simplă cu mai multe fire

CURSURI DE CALCULATOR „POISK”

Un exemplu de aplicație simplă cu mai multe fire

Plasați trei componenteTProgressBar pe formularul principal, oferindu-le tuturor celor treiOrientation = pbVertical orientare verticală. Atribuim valoarea1000 proprietățiiMax, care descrie valoarea maximă a scalei. Sub fiecare componentăTProgressBar, plasați un controlTCheckBox (căsuță de selectare). Plasați trei elementeTTrackBar (glisor) în partea dreaptă a formularului. Pentru componentele corespunzătoareTCheckBox șiTTrackBar, modificați valoarea proprietățiitag :

  • CheckBox1 și TrackBar1: Tag = 1
  • CheckBox2 și TrackBar2: Tag = 2
  • CheckBox3 și TrackBar3: Tag = 3

Ultimele trei componente ale proiectului - eticheteTLabel - plasați deasupra scalelorTProgressBar

simplă

Ultimele trei componente ale proiectului - eticheteTLabel - plasați deasupra scalelorTProgressBar

Folosind controaleleTTrackBar, vom schimba prioritățile firelor respective. Selectați toate componenteleTTrackBar în același timp și setați proprietatea lorMax la 3. Valoarea 0 va corespunde priorității minimetpIdle, valoarea 3 va corespunde prioritate normalătpNormal.

Gata cu controalele. Să ne ocupăm de fluxuri. Pentru a face acest lucru, selectați elementul de meniuFișier → Nou → Altele.

multe

În fereastraNew Items, subDelphi Files, selectați pictogramaThread Object și faceți clic peOK. Denumiți clasa firului creatTMyThread. Salvați modulul nou creat cu șablonul de cod de fir caThreadUnit.pas.

multe

Conform listei de mai jos, faceți modificări lamodululThreadUnit :

Când creăm fire de execuție, le legăm la controaleleTProgressBar șiTLabel. Vă atrag atenția asupra faptului că toate cele trei instanțe de thread sunt create suspendate și încep practic împreună după ce le sunt aplicate toate setările.

Pentru a nu uita, descriem imediat evenimentul de închidere a formularului, în care distrugem secvenţial toate cele trei fire:

Este timpul pentru controlulTTrackBar. Sarcina componentei este să stabilească prioritatea firului corespunzător. Selectați oricare dintre aceste componente și descrieți handlerul de evenimenteOnChange() după cum urmează:

Faceți ca handlerul de evenimenteOnChange() descris mai sus să fie comun tuturor componentelorTTrackBar.

Descrieți handlerul de evenimenteOnClick() pentru oricare dintre componenteleTCheckBox conform codului de mai jos și faceți-l comun tuturor componentelor casetei de selectare. Scopul acestei proceduri este de a întrerupe/relua execuția unui fir.

fire

Faceți acest handler comun tuturor elementelorTCheckBox. Aplicația este gata.

Sursa: D.Osipov - Delphi. Programare profesională.

Codul sursă pentru exemplu este aici. Fabricat în Delphi XE.