7.1-rasm. StringGrid komponentasi
Bu komponenta yacheykalari matnli ma`lumotlarni saqlaydi. 7.1-jadvalda StringGrid komponentasining ayrim hossalari keltirilgan.
StringGrid komponentasining hususiyatlari 7.1-jadval
Hususiyati
|
Mazmuni
|
Name
|
Komponentaning nomi.
|
ColCount
|
Jadvalning ustunlari soni
|
RowCount
|
Jadvalning satrlari soni
|
Cells
|
ustun va satr kesishgan yacheyka - cells [col, row]
|
FixedCols
|
chapdan fiksirlangan ustunlar soni.
|
FixedRows
|
YUqoridan fiksirlangan satrlar soni.
|
Options . goEditing
|
yacheykani tahrirlashga ruxsatnoma.
|
Options . goTab
|
tugmasidan foydalanishga ruxsatnoma.
|
Options. GoAlways. ShowEditor
|
Komponentaning tahrirlash rejimida bo`lishi alomati.
|
DefaultColWidth
|
Jadval ustunlarning kengligi
|
DefaultRowHeight
|
Jadval satrlarining balandligi
|
GridLineWidth
|
Jadval yacheykalarini ajratuvchi chiziq kengligi
|
Height
|
Jadvalning balandligi
|
Width
|
Jadvalning kengligi
|
Masala-1: A[1:5] massiv elementlarining o`rta arifmetik qiymatini hisoblang.
Yechish g’oyasi: masalaning dialog oynasi 7.3-rasmda keltirilgan. StringGrid komponentasi massiv elementlarini kiritish, Label1 va Label2 komponentalari esa izohlash va natijani ko`rsatish uchun formaga joylangan. Button1 — hisoblash jarayonini boshlaydi.
7.3-rasm. Massivni kiritish va qayta ishlash uchun dialog oyna
StringGrid komponentasi formaga boshqa ob’yektlar kabi joylashtiriladi. Shundan keyin uni 6.2-jadvalga muvofiq sozlash lozim. Height va width hossalarini forma hamda komponenta o`lchamlarini e`tiborga olib o`rnatiladi. Dasturning matni 6.2- listingda keltirilgan.
StringGrid1 komponentasining hususiyatlari 6.2-jadval
Hususiyati
|
qiymatlari
|
ColCount
|
5
|
FixedCols
|
0
|
RowCount
|
1
|
DefaultRowHeight
|
24
|
Height
|
24
|
DefaultColWidth
|
64
|
Width
|
328
|
Options . goEditing
|
True
|
Options . AlwaysShowEditing
|
True
|
Options .goTabs
|
True
|
Listing 6.2. Butun sonlarni kiritish va qayta ishlash
procedure Tform1.ButtonlClick(Sender: TObject);
var a : array[1..5] of integer; massiv
summ: integer; elementlar yig’indisi
sr: real; o`rta arifmetik qiymat
i: integer; indeks
begin
massivni kiritish.
for I : 1 to 5 do
if Length(StringGrid1.Cells[i-1, 0]) <>0 then
a[i] : StrToInt(StringGrid1.Cells[i-1,0]) else a[i] : 0;
summ : 0;
for i :1 to 5 do summ : summ a[i];
sr : summ 5;
natijani chiqarish
Label2.Caption : 'Elementlarning yig’indisi: ' IntToStr(summ) #13 'O`rta arifmetik qiymati: ' FloatToStr(sr);
end;
end.
Yacheykaga matn kiritilganidan so`ng, ENTER tugmasi bosilganida kursorning keyingi yacheykaga o`tishi talab qilinsin. Bu masalani onKeyPress protsedurasi (7.3-listing) hal qiladi. Shu protseduraga kiritilayotgan ma`lumotlarni nazorat qilishi ham topshirish mumkin.
OnKeyPress protsedurasidagi Col hususiyatiga alohida e`tibor bering. Uning qiymati dastur davomida kursor turgan yacheyka nomeriga teng. Bu hususiyatdan kursorni kerakli yacheykaga o`tkazish uchun ham foydalanish mumkin. Suni yodda tutish kerakki, ustunlar va satrlar noldan boshlab nomerlanadi.
7.3-listing. OnKeyPress xodisalarni qayta ishlash protsedurasi
procedure TForm1.StringGrid11KeyPress(Sender: TObject;
var Key: Char);
begin
case Key of
#8,'0'..'9' : ; raqamlar va klavishasi
#13: klavishasi
if StringGridl.Col < StringGrid1.ColCount — 1
then StringGridl.Col : StringGridl.Col 1;
else key : Chr(0); qolgan belgilar ta`qiqlangan
end;
end;
Haqiqiy sonlar kiritishni nazorat qilishga to`g’ri kelsa, OnKeyPress protsedurasi bir oz murakkablashadi. Chunki, raqamlardan tashqari ajratuvchi belgi (vergul yoki nuqta) hamda minus belgilarini ham hisobga olish kerak bo`ladi. Noto`g’ri kiritilgan ajratuvchi belgini to`g’risiga almashtiriladi. Windows ning joriy sozlanishi uchun qaysi belgi ajratuvchi ekanligini Decimalseparator global o`zgaruvchisi aniqlab beradi.
7.4-listingda haqiqiy sonlar massivini kiritish va qayta ishlash kodi keltirilgan. OnKeyPress protsedurasi faqat mumkin bo`lgan belgilarni kiritishni ta`minlaydi.
7.4-Listing. Haqiqiy sonli massivni kiritish va qayta ishlash
procedure TForm1.Button1Click(Sender: TObject);
var a : array[1..5] of real; massiv
summ: real; elementlar yig’indisi
sr: real; o`rta arifmetik qiymat
i: integer; indeks
begin
Massiv kiritish. Agar yacheyka bo`sh bo`lsa, uni nol deymiz
for i : 1 to 5 do
if Length(StringGrid1.Cells[i-l,0])<>0 then
a[i] : StrToFloat(StringGrid1.Cells[i-1, 0]) else a[i] : 0;
summ : 0;
for i : 1 to 5 do summ : summ a[i];
sr : summ 5;
natijani chiqarish
Label2.Caption:'Elementlar yig’indisi: 'FloatToStr(summ) #13'O`rta arifmetigi: ' FloatToStr(sr);
end;
Faqat mumkin bo`lgan belgilar kiritilishini nazorat qilish
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9' : ; raqamlar va tugmasi
#13: klavishasi
if StringGrid1.Col < StringGrid1.ColCount – 1 then
StringGrid1.Col : StringGrid1.Col 1;
'.',',': begin butun va kasr qismni ajratuvchi belgi
if Key <> DecimalSeparator then Key:DecimalSeparator; ajratuvchi belgini to`g’risiga almashtirish
if Pos(StringGrid1.Cells[StringGridl.Col, 0], DecimalSeparator)
<>0 then Key : Chr(0); ikkinchi ajratuvchi belgini ta`qiqlash
end;
' -' : minusni faqat birinchi belgi qilib kiritish mumkin
if Length(StringGrid1.Cells[StringGrid1.Col, 0]) <>0 then
Key : Chr(0) ;
else qolgan belgilar ta`qiqlanadi
key : Chr(0);
end;
end;
end.
Do'stlaringiz bilan baham: |