CATEGORII DOCUMENTE |
-> o componenta Tbutton a carei Caption se initializeaza cu 'Extrage'
-> Se aduc pe formular o componenta de tip TstringGrid (din pagina de componente Aditional) pentru care se modifica proprietatile FixedCols si FixedRows la 0
-> Se schimba proprietatea Name a formularului in Loto
-> Se declara la sectiunea private variabilele Prima de tip Boolean si Buton de tip sir de la 1 la 5 de componente TBitBtn ( Array[1..5] of TbitBtn )
-> Se adauga la lista uses, de la sectiunea interface, cuvantul cheie Buttons
->Se genereaza evenimentul Form Create. In cadrul acestui eveniment se initializeaza variabila Prima cu valoarea True si se apeleaza generatorul de numere aleatoare (Randomize;)
-> Se genereaza evenimentul FormActivate unde se declara variabila locala i de tip integer. Tot aici se initializeaza pentru componenta StringGrid proprietatile Width la 245, Height la 100, ColCount la 15, RowCount la 6, latimile si inaltimile tuturor celulelor la 15, numele fontului la Times New Roman, culoarea fontului la Blue, marimea fontului la 8, si se initializeaza toate celulele cu numarul corespunzator pozitiei in obiectul StringGrid:
with StringGrid1 do
begin
Width:=245;
Height:=100;
ColCount:=15;
RowCount:=6;
for i:=0 to ColCount-1 do ColWidths[i]:=15;
for i:=0 to RowCount-1 do RowHeights[i]:=15;
Font.Name:='Times New Roman';
Font.Color:=clBlue;
Font.Size:=8;
for i:=0 to 89 do
Cells[(i mod 15), (i div 15)]:=IntToStr(i+1);
end;
-> Se genereaza evenimentul Button1Click in cadrul caruia se declara variabilele locale Act, i, j, k de tip Byte, Wins de tip sir de la 1 la 5 de tip Byte (Array[1..5] of Byte) si Extras de tip set of Byte:
var
Act, i, j, k:Byte;
Wins: array [1..5] of Byte;
Extras: set of Byte;
Tot aici se trateaza extragerea propriu-zisa :
daca nu suntem la prima extragere trebuie sa eliberam memoria alocata obiectelor create dinamic la extragerea anterioara:
if not Prima then
for i:=1 to 5 do Buton[i].Free;
se goleste lista de numere extrase
Extras:=[];
se face extragerea propriuzisa si pentru fiecare numar extras, daca nu a mai fost extras la tragerea curenta, se memoreaza in sirul Wins[] si in lista de numere extrase:
j:=0;
while j<5 do
begin
Act:=Random(90)+1;
if not (Act in Extras) then
begin
j:=j+1;
Wins[j]:=Act;
Extras:=Extras+[Act];
end;
end;
se creeaza cele cinci butoane de tip TBitBtn din sir cu parintele Self (el insusi), apoi, in functie de valorile din sirul Wins se calculeaza indicii j si k ai celulei din StringGrid unde urmeaza sa fie pozitionat si se seteaza pentru fiecare dintre butoane proprietatile Left, Top, Width, Height, Font.Name, Font.Size, Font.Color si Caption.
for i:=1 to 5 do
begin
Buton[i]:=TBitBtn.Create(Self);
Buton[i].Parent:=Self;
j:=(Wins[i] mod 15);
k:=(Wins[i] div 15);
if j=0 then
begin
j:=15;
k:=k-1;
end;
Buton[i].Left:=StringGrid1.Left+(j-1)*16;
Buton[i].Top:=StringGrid1.Top+k*16;
Buton[i].Width:=16;
Buton[i].Height:=16;
Buton[i].Font.Name:='Times New Roman';
Buton[i].Font.Size:=8;
Buton[i].Font.Color:=clRed;
Buton[i].Caption:=IntToStr(Wins[i]);
end;
se semnalizeaza pentru urmatoarele extrageri ca prima extragere a fost deja tratata:
Prima:=False;
-> Se genereaza evenimentul FormDestroy in care se declara variabila locala i de tip integer. In cazul in care a avut loc cel putin o extragere, inainte de inchiderea aplicasiei, se trece la eliberarea memoriei ocupata de obiectele create dinamic in timpul extragerii
if not Prima then
for i:=0 to 5 do Buton[i].Free;
La executie se obtine:
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1120
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved