Un exemplu de utilizare a unei liste de indicii

Un exemplu de utilizare a unei liste de indicii

Luați în considerare utilizarea de indicii listează aplicația exemplu DemoList. Când faceți clic pe formularul de cerere este afișat este atribuit un număr de serie. Simultan, coordonatele și numărul punctului înregistrat la proprietățile corespunzătoare TMypixel clasa instanță create. Un pointer la acel obiect la noua lista de elemente pixList.

Ca rezultat, după forma secvenței de purificare toate punctele pot fi restaurate folosind indicii pentru a indica din lista de obiecte.

Lista de puncte pot fi sortate dupa X coordonate, în ordine crescătoare.

Listarea 7.1. Formularul principal DemoList proiect a modulului

Ferestre, Mesaje, SysUtils, Clase, grafică, controale, Formulare,

Dialoguri, StdCtrls, butoane;

Procedura FormCreate (Expeditor: TObject);

Procedura FormClose (Expeditor: TObject; var Acțiune: TCloseAction);

Procedura FormMouseDown (Expeditor: TObject; buton: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Procedura ListBtnClick (Expeditor: TObject);

Procedura ClearBtnClick (Expeditor: TObject);

Procedura DelBtnClick (Expeditor: TObject);

Procedura SortBtnClick (Expeditor: TObject);

PixNum: Integer; public

cu PixList do

. Pentru i: = 0 Count - 1 do TMyPixel (Elemente [i]) FText: = i + 1;

Clasa TMyPixel oferă coordonatele punctelor de stocare și numărul său de serie din serie. Acești parametri sunt trecute la constructorul clasei. Metoda setPixel prevede punctul de desen pe o matriță de contur (a se vedea. cap. 10).

Un exemplu este creat pentru fiecare punct nou atunci când faceți clic în FormMouseDown metoda de tratare. Există, de asemenea, un pointer la noul obiect este stocat în lista creat folosind membru PixList metoda Add. Astfel, programul „își amintește“, locul și ordinea punctelor.

Metoda de tratare a ListBtnClick determină punctele de afișare. Pentru a face acest lucru într-o listă pointer bucla de curent este transmisă la variabila de tip de obiect curPixel. t. e. în această variabilă la un moment dat „vizita“, toate obiectele create, indicii sunt stocate în listă.

Acest lucru se face în scopul de a avea acces la proprietățile obiectelor (direct printr-un pointer care se poate face). O a doua metodă de a aduce tipul celor discutate în handler metodei SortBtnClick.

Înainte de afișajul secundar de puncte nevoie pentru a curăța suprafața matriței. Această operație se realizează prin metoda handler clearBtnClick.

Lista de puncte pot fi sortate dupa X coordonate, în ordine crescătoare. În acest scop, metoda de tratare a metodei SortBtnClick se numește lista Sort PixList. Metoda Parametrul (procedura variabilă de tip) este transmisă funcția PixCompare. care încapsulate în elementele metodei listă sortare algoritm de sortare mecanism de luare a deciziilor de vechime a două elemente învecinate.

Dacă funcția returnează un număr pozitiv, mai mare element de item1 elementul ITEM2. Dacă rezultatul este negativ, atunci item1 mai puțin de ITEM2. În cazul în care elementele sunt egale, funcția ar trebui să revină la zero.

În acest caz, vom compara coordonatele a două puncte X. Ca urmare a acestui tip, în ordine crescătoare obiectele au fost aranjate astfel încât primul element din lista de puncte de la un obiect cu un minim de coordonate X. și ultima - pe această temă cu maximul de coordonate X.

După sortare stânga renumerota toate punctele. Acest lucru face ca metoda de tratare a ciclului SortBtnclick. Să acorde o atenție la aplicarea, în acest caz, procesul de aducere a tipului care ofera un tratament pentru proprietățile instanțe TMypixe l clasă.

Metoda de tratare a DeiBtnClick oferă o listă completă de curățare pixList.