15.2-listing. NkEdit komponentasi moduli.
unit NkEdit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TNkEdit class(TEdit)
private
FNumb: single; tahrirlash maydonidagi soni
Fnumb maydoniga ma`lumot kiritish va qayta ishlash
function GetNumb: single;
procedure SetNumb(value:single);
protected
procedure KeyPress(var Key: Char);
override;
public
published
constructor Create(AOwner:TComponent);
override;
property Numb : single komponentaning hususiyati
read GetNumb;
write SetNumb;
end;
procedure Register;
implementation
komponentani qayd qilish protsedurasi
procedure Register;
begin
RegisterComponents('Samples',[TNkEdit]);
end;
komponenta konstruktori
constructor TNkEdit.Create(AOwner:TComponent);
begin
don't forget to call the ancestors' constructor
inherited Create(AOwner);
end;
FNumb maydoni bilan ishlash funksiyasi
function TNkEdit.GetNumb:single;
begin
try Text maydoni bo`sh bo`lishi mumkin
Result : StrToFloat(text);
except
on EConvertError do begin
Result : 0; text :' ' ;
end;
end;
end;
Fnumb maydoniga yozish protsedurasi
procedure TNkEdit.SetNumb(Value:single);
begin
Fnumb : Value;
Text : FloatToStr(value);
end;
KeyPress xodisalarni qayta ishlash protsedurasi
procedure TNkEdit.KeyPress(var key:char) ;
begin
case key of
'0'.. '9', #8, #13: ; '-': if Length(text)<>0 then key : #0;
else
if not ((key DecimalSeparator) and
(Pos(DecimalSeparator, text) 0)) then key : #0;
end;
inherited KeyPress(key);
Ota klassidagi OnKeyPress protsedurasini chaqirish
end;
end.
TNkEdit klassini tavsiflashda tahrirlash maydoniga kiritilgan sonni o’ziga oluvchi Numb hususiyati e`lon qilingan. Bu hususiyat qiymatini saqlash uchun Fnumb maydoni kiritilgan. GetNumb funksiyasi Fnumb maydoniga kiritish, setNumb esa hususiyat qiymatini belgilash maqsadida qo`llangan.
TNkEdit klassi konstruktori dastlab ota klassi konstruktori- TEdit ni chaqirib, uning Text hususiyatiga qiymat beradi va Numb hususiyati qiymatini aniqlaydi.
NkEdit komponentasining biror tugma bosilishiga reaktsiyasi TNkEdit.KeyPress protsedurasi bilan aniqlanadi. Bu protsedura parametr sifatida bosilgan tugma kodini oladi. Ota klassidagi OnKeyPress protsedu- rasini chaqirishdan avval bosilgan tugmadan haqiqiy sonlarni yozishda qo`llash mumkinligi aniqlanadi. Agar NkEdit uchun mumkin bo`lmagan tugma bosilgan bo`lsa, u holda kiritilgan kod nol bilan almashtiriladi. Ma`lumki, NkEdit komponentasi uchun raqamlar, ajratuvchi belgi (nuqta yoki vergul), "minus", (noto`g’ri kiritilgan belgini o`chiradi) va tugmalaridan foydalanish mumkin halos.
Shuni yodda tutish kerakki, dastur matnida sonning butun va kasr qismi nuqta bilan ajratiladi. Ma`lumotlarni kiritishda Windows sozlani-shiga (настройка) qarab, nuqta yoki verguldan foydalaniladi. Keltirilgan OnKeyPress protsedurasi Windows sozlanishi o`zgarishi mumkinligini e`tiborga oladi va kiritilgan belgini konstanta bilan emas, balki qiymati ajratuvchi belgiga teng bo`lgan DecimalSeparator global o`zgaruvchi qiymati bilan taqqoslaydi.
Komponenta moduli matni kiritilganidan so`ng, kompilyatsiya qilinadi va saqlab qo`yiladi.
Do'stlaringiz bilan baham: |