Folosind componenta stringgrid

Ca exemplu de utilizare a componentei stringGrid pentru a introduce o matrice, luați în considerare un program care calculează media aritmetică a elementelor matrice. Caseta de dialog pentru program este prezentată în Fig. 5.3. Componenta stringGrid este utilizată pentru a introduce o matrice, componentele Label1 și Label2 pentru a afișa textul explicativ și rezultatul calculului, Buttoni pentru a porni procesul de calcul.

Fig. 5.3. Caseta de dialog a programului Introducerea și procesarea unui tablou

Adăugarea componentei stringGrid la formular este exact aceeași cu celelalte componente. După adăugarea unei componente în formular, trebuie să o configurați în conformitate cu Tabelul. 5.2. Valorile pentru proprietățile de înălțime și lățime trebuie să fie setate cu mouse-ul astfel încât dimensiunea componentei să fie egală cu dimensiunea rândului.

Textul programului este prezentat în Lista 5.2.

Tabelul 5.2. Valori de proprietate pentru componenta StringGrid1

Listing 5.2. Introducerea și procesarea unei matrice de numere întregi

Ferestre, Mesaje, SysUtils, Variante,

Clase, Grafică, Controale, Formulare, Dialoguri, Grile, StdCtrls;

procedura ButtonlClick (expeditor: TObject); privat

procedura TForml.ButtonlClick (expeditor: TObject); var

a. array [1..5] de integer; // array

summ: integer; // suma elementelor

sr: adevărat; // media aritmetică

i: întreg; // index

// presupune că dacă celula este goală, atunci corespunzătoare

// elementul matricei sale este zero

dacă Lungimea (StringGridl.Cells [i-1, 0]) <>0

apoi [i]: = StrToInt (StringGridl.Cells [i-1,0])

summ: = suma + a [i]; sr: = suma / 5;

Rezultatul rezultatului este Label2.Caption: =

'Suma elementelor:' + IntToStr (summ)

+ # 13 + 'Media aritmetică:' + FloatToStr (sr);

După derularea procesului de program există dorința de a face schimbări în procesul de intrare în matrice. Deci, ar fi bine dacă cursorul sa mutat automat în celula următoare a mesei, de exemplu, ca urmare a apăsării unei taste . Puteți face acest lucru folosind procedura de procesare a evenimentelor onKeyPress. Puteți aloca sarcina de a filtra tabelele de date introduse în celulă în aceeași procedură. În cazul nostru, trebuie doar să introduceți numere în celulă.

Textul procedurii de procesare a evenimentului OnKeyPress este afișat în Lista 5.3. Ar trebui să acordați atenție proprietății Col, care, în timpul executării programului, conține numărul coloanei în tabelul în care este localizat cursorul. De asemenea, puteți utiliza această proprietate pentru a muta cursorul în celula de tabelă dorită. Cu toate acestea, trebuie să țineți cont de faptul că coloanele tabelului, la fel ca și rândurile, sunt numerotate de la zero.

Listing 5.3. Procedura de procesare a evenimentului OnKeyPress

procedura TForm1.StringGridlKeyPress (Expeditor: TObject;

# 8, '0' .. '9'. ; // numere și o cheie

# 13: // cheie

dacă StringGridl.Col

apoi StringGridl.Col: = StringGridl.Col + 1;

alt cheie: = Chr (0); // nu sunt permise alte caractere

Dacă doriți să introducă o serie de numere în virgulă mobilă (a: array [1. 5] de reale), apoi procedura eveniment onkeypress mai complicat, astfel încât în ​​plus față de numărul de caractere admisibile sunt caracterul separator (virgulă sau perioada - depinde de setările de Windows) și .. minus. În scopul de a oferi un program de ușurința în ceea ce privește utilizatorul poate aplica adevărat utilizator truc substitut de inserare incorectă delimitator. Pentru a determina ce caracter separator este valabil în configurația curentă Windows, puteți să consultați variabila globală Decimaiseparator.

În lista 5.4 se afișează textul modulului de aplicație pentru introducerea și prelucrarea unui număr numeric fracționat. Procedura de procesare a evenimentului OnKeyPress oferă o intrare în celula tabelară permisă numai atunci când scrieți un număr fracționat de caractere.

Listing 5.4. Introducerea și procesarea unei serii de numere fracționate

Windows, Mesaje, SysUtils, Variante, Clase,

Grafică, Controale, Formulare, Dialoguri, Grile, StdCtrls;

ȘTIRI ALE FORUMULUI
Cavalerii teoriei eterului

Despre acest lucru Kornilov a scris pe pagina sa în sotsseti.

Potrivit lui Kornilov, mesajul său a fost primit cu neîncredere.

Acum, Vladimir Kornilov a decis să se întoarcă la acest subiect, în legătură cu care se publică în fotografiile mele de pe Facebook misterioase israelienilor care au luat parte la masacrul de la Odessa.

Printre numeroasele probleme pe care Kornilov, a spus el, ar dori să primească un răspuns, de exemplu:

"De ce au mers accidental în jurul Odisei cu echipament medical, mănuși de cauciuc, de unde știau în prealabil că vor fi răniți și uciși? Sau de ce soldatul a uitat brusc limba engleză, când și-a dat seama că a fost înregistrat?

apa lacurilor, mărilor și oceanelor prin lushariya --------- nordice roti spre m Lc - p-in-k-i, iar apa din polushariya sudic - ra - conductive dizolvată -a-po-așa săgeți, -represiunea - gig-ant-ski-e-water-ovo-companii.

Principalul motiv pentru rotirea eddiilor este vântul local.
Iar cu cât este mai mare viteza vântului, cu atât este mai mare viteza de rotație a vaporilor și, în consecință, cu atât este mai mare forța centrifugă a vaporilor, crescând astfel nivelul apelor mărilor și oceanelor.
Și cu cât forța centrifugală a bazinelor este mai mică, cu atât nivelul apei și oceanelor este mai scăzut.

Viteza curenților de-a lungul perimetrului mărilor și oceanelor nu este aceeași peste tot și depinde de adâncimea coastei. În partea superficială a mării, viteza curenților crește, iar în apele adânci ale mării scade.
fluctuațiile sezoniere ale nivelului apei ceas-tsya nu în jurul valorii de coasta mărilor și oceanelor-s, dar numai în acele coaste unde -mare viteza unghiulară a fluxurilor și a forței centrifuge, prin urmare, de mare a apei. (Forța centrifugă F = v / r).
Pe coastele rectilinii, unde curenții nu au viteză unghiulară, nivelul apei nu crește.

Articole similare