3.1 Label, Edit, Memo мәтіндік құрауыштары. Button батырмасы
Label тамғасы
Иерархиясы:
TObject – TPersistent – TComponent – TControl – TGraphicControl –
TCustomLabel.
Құрауыштар Палитрасының Парағы: Standard.
Тамғалар экранға әртүрлі түсініктеме, атаулар, тақырыптар және т.б. тұратын мәтіндік ақпараттарды орналастыруға тағайындалған. Delphi – дегі тамғалар TLabel класының данасы болып табылады. TLabel класы тамғалардың негізгі сипаттамалары анықталған TCustomLabel класының ұрпақ класы болып табылады. Бұл класс TGraphicControl класының тікелей ұрпақ класы болып табылады, сондықтан ол тек тышқан арқылы берілген оқиғаға ғана әсер етеді.
TCustomLabel класының қасиеттерінен келесілерді белгілейміз:
Тамғаға негізгі қасиет болып TСontrol класынан туындалған Caption қасиеті табылады. Дәл осында экранға шығатын мәтін орналастырылады.
property Caption: TCaption;
type
TCaption = type WideString;
property Alignment: TAlignment;
type
TAlignment = (taLeftJustify, taRightJustify, taCenter);
Қасиет құрауыштағы мәтіннің теңестірілуін анықтайды. Ол келесі мәндерді қабылдауы мүмкін: taLeftJustify – сол жақ шеті бойынша теңестірілу; taRightJustify – оң жақ шеті бойынша теңестірілу, taCenter – ортасы бойынша теңестірілу. Үнсіздік белгісімен теңестірілу сол жақ шеті бойынша ұйымдастырылады.
property AutoSize: Boolean;
Егер қасиеттің мәні True – ге тең болса, онда тамғаның биіктігі мен ені онда орналасқан мәтінге сәйкес автоматты түрде өзгереді.
property Layout: TTextLayout;
type
TTextLayout = (tlTop, tlCenter, tlBottom);
Қасиет тамғаның вертикаль жағдайын анықтайды:
tlTop – жоғарғы бөлігінде орналасқан;
tlCenter – ортасында орналасқан;
tlBottom – төменде орналасқан.
property Transparent: Boolean;
Егер қасиет True мәнінен тұрса, тамғаның фоны басқа құрауыштармен қатынасына қарағанда айқын болады. Үнсіздік белгісімен False мәніне тең.
property WordWrap: Boolean;
Егер қасиет True мәніне тең болса, онда ағымды жол толтырылғаннан кейін мәтіннің жаңа жолға тасымалдануы орындалады. Үнсіздік белгісімен False мәніне тең.
Тамға тышқанды қолданған және құрауыштарды тасымалдаған кез – келген оқиғаны өңдейді. Үнсіздікпен тамға үшін оқиға OnClick оқиғасы болып табылады.
TCustomEdit класы
Delphi – де пернетақта арқылы бағдарламаға әртүрлі символдық ақпараттарды енгізетін және редакциялайтын бірнеше құрауыштар анықталған. Олардың барлығы мынандай мүмкіншіліктерді жүзеге асыра алады, ерекшелеу, көшіру, жою, үзінділерді қою, мәтіннің скроллингі, егер ол терезеге сыймайтын болса және т.б. Барлық редактірлердің жиынынан біз TEdit класының жолды енгізу және мәтін редактірі TMemo – ны қарастрамыз.
Көптеген стандартты редактірлер TCustomEdit класының ұрпақтары болып табылады. TWinControl класының ұрпақ класы болып табылатын TCustomEdit класы барлық мәтіндік редакторларға жалпы болып табылатын сипаттамалар тізімінен тұрады. Ең негізгісі болып келесі қасиеттер табылады:
property AutoSelect: Boolean;
Егер қасиеттің мәні True – ге (мәні үнсіздік бойынша) тең болса, онда мәтін редактір белсенді болғанда ерекшеленеді.
property AutoSize: Boolean;
Егер қасиеттің мәні True – ге тең болса, онда редактордың биіктігі қаріптің биіктігіне сәйкес автоматты түрде өзгереді.
property MaxLength: Integer;
Редактірге орналастырылатын символдардың максимальды санын анықтайды. Егер қасиеттің мәні нольге тең болса (үнсіздікпен қолданылады), онда редактірге символдардың ерікті санын орналастыруға болады.
property PasswordChar: Char;
Редактірге нақты енгізілетін симолдардың орнына бейнеленетін символды береді. Редактірдің мұндай тәртібі бағдарламада парольді қолданғанда керек болады. Егер қасиеттің мәні коды 0-ге тең (мәні үнсіздік бойынша) символ болса, онда енгізілетін символдар түрлендірілусіз бейнеленеді.
property ReadOnly: Boolean;
Егер қасиеттің мәні True – ге тең болса, онда мәтін тек оқуға ғана тағайындалған, яғни оны өзгертуге болмайды. Үнсіздік бойынша мәні False – ге тең.
TCustomEdit класында редактірлеу функцияларын жүзеге асыратын бірнеше әдістер анықталған:
procedure Clear; virtual;
Редактірде орналастырылған барлық мәтінді жояды.
procedure ClearSelection;
Мәтіннің ерекшеленген үзіндісін жояды.
procedure CopyToClipboard;
Мәтіннің ерекшеленген үзіндісін Clipboard буферіне көшіреді.
procedure PasteFromClipboard;
Clipboard буферіндегі мәтінді редактірдің меңзерінің орнына көшіреді.
procedure SelectAll;
Редактірде орналасқан бүкіл мәтінді ерекшелейді.
Көптеген редактірлерде келесі командаларды орындайтын, құрамдас жергілікті менюлер бар:
Undo – мәтіндегі соңғы орындалған операцияны болдырмау;
Cut – ерекшеленген үзіндіні қиып алып, оны алмасу буферіне орналастыру;
Copy – ерекшеленген үзіндіні алмасу буферіне көшіру;
Paste – алмасу буферіндегі үзіндіні мәтіннің меңзер орнынан бастап орналастыру;
Delete – ерекшеленген үзіндіні жою;
Select All – бүкіл мәтінді ерекшелеу.
Edit енгізу жолы
Иерархиясы:
TObject – TPersistent – TComponent – TControl – TWinControl –
TCustomMaskEdit – TCustomEdit.
Құрауыштар Палитрасының Парағы: Standard.
TEdit класының данасы болып табылатын енгізу жолы Edit мәтіннің бір жолын енгізуге және редактірлеуге мүмкіндік береді.
TEdit класы – TCustomEdit класының тікелей ұрпақ классы және оның барлық сипаттамаларын туындайды.
Енгізу жолының негізгі қасиеті болып Text қасиеті табылады:
property Text: TCaption;
type
TCaption = string;
Edit редактіріндегі символдық жолдан тұрады.
Символдық жол қасиетке пішінді құрастыру кезеңінде немесе бағдарламаның орындалуы барысында орналастырылуы мүмкін. Көбінде редактір ақпаратты енгізу үшін қолданылады. Бұл жағдайда пішінді құрастыру кезеңінде Text қасиетіне бос жолды орналастыруға болады, ал бағдарламаның орындалуы барысында одан енгізілген мәндерді алуға болады. Егер сандық берілгендердің символдық белгілері енгізілсе, онда алдыңғы уақытта типті түрлендіретін сәйкес бағыныңқы бағдарламаның көмегімен түрленуі қажет (Б қосымшасына қараңыздар).
Енгізу жолы терезелік басқару элементі болып табылғандықтан, ол пернетақта мен тышқан арқылы берілген хабарламаны, тасымалмен байланысты, активтеу мен активтеуді болдырмау, сонымен қатар OnChange оқиғасын өңдейді:
property OnChange: TNotifyEvent;
Енгізу жолының мәтіні өзгергенде өрбиді. Үнсіздік бойынша TEdit класының енгізу жолының оқиғасы болып табылады.
Memo мәтіндік редактірі
Иерархиясы:
TObject – TPersistent – TComponent – TControl – TWidgetControl –
TCustomEdit – TCustomMemo.
Страница Палитры Компонентов: Standard.
Memo мәтіндік редактірі Edit енгізу жолымен салыстырғанда бір емес, кез – келген жолдар санынан тұруы мүмкін. Memo редактірі TMemo класының данасы болып табылады. Өз кезегінде TMemo класы тікелей TCustomMemo класынан туындаған, онда көп жолды мәтіндік редактірлердің негізгі сипаттамалары берілген.
TCustomMemo класының келесі қасиеттерін белгілейік:
property Lines: TStrings;
TStrings кластық типтің қасиеттері (төменнен қараңыздар). Редактірде орналасқан жолдар тізімін береді.
property ScrollBars: TScrollStyle;
type
TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth);
Скроллингтің сызғыштарының барын береді:
ssNone – сызғыш жоқ,
ssHorizontal – тек көлденең сызғыш,
ssVertical –тек тік сызғыш,
ssBoth –екі сызғыш та бар.
property WantReturns: Boolean;
Enter пернесінің әрекетін анықтайды. Егер мәні True – ге тең болса, онда Enter пернесіне басқанда мәтіннің жаңа жолына ауысу орындалады. Қарсы жағдайда енгізу фоксы пішінге беріледі, ал мәтіннің жаңа жолына көшу Ctrl+Enter пернелерінің комбинациясын басқанда орындалады.
Edit енгізу жолы сияқты, көп жолды Memo мәтіндік редактірі пернетақта мен тышқан арқылы берілген хабарламаны, тасымалмен байланысты, активтеу мен активтеуді болдырмау, сонымен қатар OnChange (үнсіздік бойынша ) оқиғасын өңдейді:
TStrings класы
TStrings – TPersistent класының тікелей ұрпақ класы абстрактілі класс болып табылады. Бұл кластың объектілері жолдар тізімін береді. Әрбір жолмен қандай да бір объект байланысқан болуы мүмкін, мысалы сурет немесе пиктограмма. Егер жолмен ешқандай объект байланыспаған болса, онда оған нұсқағыштың мәні nil – ге тең. TStrings класы жалпы тағайындалған класс болып табылады және Delphi – дегі көптеген құрауыштарға сәйкес типтердің қасиеттерін анықтау үшін қолданылады. TStrings класының негізгі қасиеттерін қарастырайық:
property Count: Integer;
Тізімдегі элементтердің санын анықтайды.
property Objects[Index: Integer]: TObject;
Index индексі бар жолмен ассоциативтелген объектіге нұсқағышты анықтайды.
property Strings[Index: Integer]: string;
Тізімнің Index индексі бар жолын анықтайды. Бірінші жолдың индексі – 0.
property Text: string;
Тізімнің барлық жолдарынан тұрады, бөлгіштерді қоса алғанда – каретканы қайтару символы және жолды аудару (#13#10).
TStrings класында анықталған негізгі әдістер:
function Add(const S: string): Integer; virtual;
Тізімге S жолын қосады және осы жолдың тізімдегі реттік нөмірін қайтарады.
function AddObject(const S: string; AObject: TObject): Integer; virtual;
S жолын және онымен байланысты AObject объектісін тізімге қосады және тізімдегі жол мен объектінің индексін қайтарады.
procedure AddStrings(Strings: TStrings); virtual;
TStrings класының басқа Strings объектісінің тізімін ағымды тізімге қосады.
procedure BeginUpdate;
Тізімді жаңалаудың басын бекітеді. Экранда қайта сурет салу уақытша тоқтатылады.
procedure Clear; virtual; abstract;
Тізімдегі барлық жолдарды және объектіге нұсқағыштарды жояды.
procedure Delete(Index: Integer); virtual; abstract;
Index индексі бар элементті тізімнен жояды.
procedure EndUpdate;
Жаңартудың аяқталуын бекітеді және қажет болған жағдайда жолдарды сұрыптайды.
procedure Exchange(Index1, Index2: Integer); virtual;
Index1 және Index2 индекстері бар екі элементі орындарымен ауыстырады.
procedure Insert(Index: Integer; const S: string); virtual; abstract;
Тізімге Index индекспен S жолын қояды.
procedure InsertObject(Index: Integer; const S: string; AObject: TObject);
Тізімге S жолын және Index индекспен AObject объектісін қояды. procedure LoadFromFile(const FileName: string); virtual;
FileName аты бар файлдан тізімді іске қосады.
procedure Move(CurIndex, NewIndex:Integer); virtual;
Тізімнің элементін CurIndex позициясынан NewIndex позициясына жылжытады.
procedure SaveToFile(const FileName: string); virtual;
тізімді FileName аты бар файлға орналастырады.
Button батырмасы
Иерархиясы:
TObject – TPersistent – TComponent – TControl – TWinControl –
TButtonControl.
Құрауыштар Паоитрасының Парағы: Standard.
Батырманың негізгі тағайындалуы – оған шерткенде оқиғаның қалыптасуы. Батырма оған шерткенде қандай да бір әрекетті орындайтындай қажеттілік туатын пішіннің кез – келген жерінде орналасуы мүмкін. Button батырмасы TButton класының данасы болып табылады, олардың арғы тектері болып TButtonControl және TwinControl кластары табылады. Сондықтан Button батырмасы терезелік басқару элементі болып табылады.
TButton класына келесі қасиеттер қосылған:
property Cancel: Boolean;
Егер қасиеттің мәні True – ге тең болса, онда ESC пернесіне басу, берілген батырмаға басумен мәндес болады.
property Default: Boolean;
Егер қасиеттің мәні True – ге тең болса, онда Enter пернесіне басу, берілген батырмаға басумен мәндес болады, егерде енгізу фокусында қандай да бір басқа батырма орналаспаса.
property ModalResult: TModalResult;
type
TModalResult = Low(Integer)..High(Integer);
Модальды терезелерді жапқанда қолданылатын қасиет. Қарапайым терезелер үшін бұл қасиеттің мәні mrNone – ге тең болуы керек..
TButton класында Click әдісі анықталған:
procedure Click; override;
Бұл әдістің орныдалуы батырмаға шерткенге мәндес келеді, яғни оның орындалуының нәтижесінде батырма үшін OnClick оқиғасы өрбиді.
TButton класының батырмаларының ерекшеліктері оларда Color қасиеті болмайды және фонның түсі Windows операциялық жүйесі арқылы анықталады.
TButton класының батырмалары терезелік басқару элементтері үшін анықталған оқиғаларды өңдейді. Үнсіздік белгісі бойынша батырма үшін оқиға болып OnClick оқиғасы табылады.
Мысал 3.1.1. Label, Edit, Memo және Button құрауыштарын қолдану.
Ағымды коэффициенттері бар () квадрат теңдеудің түбірлерін есептейтін бағдарлама құру
Шешімі:
Меншік қаптамаңызға (№1 – ші зертханалық жұмысқа қараңыздар) MyFirstProject қаптамасын құрыңыздар (кез – келген басқаны да құруға болады).
Негізгі менюдің File | New | Application командасы арқылы жаңа қосымша ашыңыздар.
Form1 пішініне келесі құрауыштарды орналастырыңыздар (3.1.1 суретіне қараңыздар):
Label тамғасының Caption қасиетіне мына мәнді беріңіздер:
«Введите коэффициенты квадратного уравнения
A2*X^2+A1*X+A0=0»
Мәтін екі жолға орналасу үшін және тамғаның ортасы бойынша теңестірілуі үшін қасиеттің келесі мәндерін қажетті түрде орнату керек:
AutoSize – False,
WordWrap – True,
Alignment – taCenter.
Тамғаның өлшемін және оның орналасу жағдайын қолмен ұйымдастыруға болады.
Font қасиетіне келіңіздер және үш нүктесі бар батырмаға шертіңіздер. Пайда болған терезеден қаріптің өлшемін 8 – ден 10 – ға өзгертіңіздер. OK батырмасына басыңыздар .
Label2, Label3 және Label4 тамғалары үшін Caption қасиетіне ‘A0=’, ‘A1=’ және ‘A2=’ - ге тең деп сәйкес орнатыңыздар.
Edit1, Edit2 және Edit3 қасиеттері үшін Text қасиетінің мәнін бос жолға тең деп орнатыңыз.
Memo1 құрауышы үшін Lines қасиетін таңдаңыздар және үш нүктесі бар батырмаға басыңыздар. Пайда болған String List Editor терезесінен ‘Memo1’ жолын жойыңыздар. OK батырмасына басыңыздар.
Button1 және Button2 батырмаларының Caption қасиетіне ‘Решение’ және ‘Очистить’ сәйкес орнатыңыздар.
Екі рет шерту арқылы Решение батырмасын белсенді етіңіз және OnClick оқиға өңдеуішіне келесі жолды қойыңыздар:
procedure TForm1.Button1Click(Sender: TObject);
var
a0, a1, a2, d, x1, x2: Double;
begin
a0 := StrToFloat(Edit1.Text);
a1 := StrToFloat(Edit2.Text);
a2 := StrToFloat(Edit3.Text);
d :=a1*a1-4*a2*a0;
IF d>=0 THEN
BEGIN
x1 := (-a1+sqrt(d))/(2*a2);
x2 := (-a1-sqrt(d))/(2*a2);
Memo1.Lines.Add(’Результат:’);
Memo1.Lines.Add(’x1 = ’+FloatToStrF(x1,ffGeneral,7,2));
Memo1.Lines.Add(’x2 = ’+FloatToStrF(x2,ffGeneral,7,2));
END;
IF d<0 THEN
Memo1.Lines.Add(’Решений нет:’);
end;
Бағдарламаушы терген жолдар жартылай қою қаріппен ерекшеленген.
F12 пернесіне басыңыздар және пішінге қайтып оралыңыздар. Екі рет шерту арқылы Очистить батырмасын белсенді етіңіз және OnClick оқиға өңдеуішіне мына жолды қойыңыздар
Memo1.Clear;
Жобаны C:\…\Мои документы\…\ MyFirstProject қаптамасына сақтаңыздар және F9 функциональды пернесін қолданып қосымшаны іске қосыңыз. Квадрат теңдеуді шешу үшін коэффиценттерді енгізіңіз және Решение батырмасына басыңыз. Редактірлеу терезесін тазалау үшін Очистить батырмасына басыңыздар (сурет 3.1.2 қараңыздар).
Зертханалық жұмыс №7 "Қарапайым Windows-қосымшасын құру"
«Моя первая программа» атты тақырыбы бар пішіннің терезесін экранда бейнелейтін бағдарлама құрыңыздар. Қосымшаны іске қосыңыз.
Бағдарлама өзгертулер енгізіңіздер. Тамғаны пайдалана отырып, терезенің тура ортасына «Hello world!» мәтінін шығарыңыздар. Қаріптің түсін, өлшемін өзгертіңіздер. Қосымшаны іске қосыңыздар.
сәйкес келетін командалық батырманы басқанда «Hello world!» сөзінің үстіне «Я программирую на Delphi» сөзі шығатындай етіп бағдарламаны өзгертіңіздер. Мәтінді шығару үшін Edit құрауышын қолданыңыздар.
Property Visible:Boolean – бастапқыда құрауыш көрінетін бола ма? соны анықтайды.
Құрауыштар ағымды көмекші кеңес тұратындай етіп бағдарламаны толықтырыңыздар.
Property Hint: String – элементтер туралы қысқаша анықтама ақпараттан тұрады. Property ShowHint: Boolean – егер мәні True болса, онда меңзер элементтің үстінде тұрғанда Hint қасиетінде берілген қысқаша анықтамадан тұрады.
Екі айнымалы жарияланғаннан кейін оларға қандай да бір мәндер меншіктелетіндей бағдарлама құрыңыздар. Осы мәндерді көбейтіңіздер және алынған нәтижені экранда бейнелеңіздер. Бүтін санды мәнді жолға айналдыратын функцияны қолданыңыздар.
Негізгі пішіннің терезесіне Memo, Edit, Label құрауыштарын және “OK” және “Close” екі батырмасын орналастырыңыздар. Edit енгізу жолындағы мәтін “OK” батырмасына басқанда өзгеріссіз Label тамғасына және Memo көпжолды редактіріне көшетіндей бағдарлама құрыңыздар.
[имя строки ввода].SetFocus операторының көмегімен терезенің экранда пайда болған кезінде (пішіннің оқиғасын қолданыңыздар) және “OK” батырмасына басқанда енгізу жолы үшін енгізу фокусын орнатыңыздар.
Пішіннің оқиғалары:
Пішін құрылғанда және оның Visible қасиетінің мәні True болғанда, келесі оқиғалар тіркелген ретімен орындалады:
1. OnCreate – пішінді бастапқы құрғанда орындалады.
2. OnShow – пішін көрінер алдында орындалады.
3. OnActivate – пішін белсенді болғанда өрбиді.
4. OnPaint – пішін экранда салынар алдында өрбиді (пішін белсенді болғанда немесе көрінетін болғанда).
OnDestroy оқиғасы – OnCreate қарама - қарсы, пішінді жойғанда орындалады.
№5 – ші тапсырманың бағдарламасын - айнымалылардың мәндері енгізу жолдары арқылы енгізілетіндей етіп өзгертіңіз. Пішінге келесі әрекетке көмекші кеңес беретіндей тамғаны орналастырыңыз.
Ұсыныс: Пішінге 4 құрауышты орналастырыңыз – Button(OK, OK, Close, Результат), 1 – Edit (айнымалылардың мәндерін енгізу үшін), 2 тамға Label - көмек кеңесті және нәтижені шығару үшін. Visible қасиетін және SetFocus әдісін қолданыңыздар.
3.2 Пернетақта арқылы берілген хабарламаны өңдеу
TWinControl класында пернетақтамен жұмыс істегенде пайда болатын оқиғалар анықталған. Оларға келесі оқиғалар кіреді:
property OnKeyDown:TKeyEvent;
Оқиға пернетақтаның пернесі басылғанда өрбиді. Оқиғаны өңдеу типі TKeyEvent:
type
TKeyEvent = procedure(Sender: TObject; var Key: Word;
Shift: TShiftState) of object;
мұндағы Sender – активті басқару элементіне сілтеме жасайтын параметр; Key – басылған перненің коды;
type
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight,
ssMiddle, ssDouble);
Shift – пернетақтаның Alt, Ctrl, Shift пернелерінің және тышқанның пернелерінің күйін қадағалайды (көптіктің типі, оның элементтері: ssShift –Shift батырмасы басылды, ssAlt – Alt батырмасы басылды, ssCtrl – Ctrl батырмасы басылды , ssLeft – тышқанның сол жақ батырмасы, ssRight – тышқанның оң жақ батырмасы, ssMiddle – тышқанның ортаңғы батырмасы, ssDouble – тышқанның батырмасымен екі рет шерту).
Мысал 3.2.1 OnKeyDown оқиғасының өңдеуіші Alt+Ctrl+Z пернелерінің қосындысына басқанда Form1 құрауышының пішіннің фонының түсіне clAqua (көгілдір) мәнін береді.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
IF (Shift=[ssAlt,ssCtrl]) AND (Key=ORD(’Z’)) THEN Form1.Color:=clAqua;
end;
Пернелердің кодын VCL Reference анықтама жүйесінің Virtual Key Codes, Key Codes бөлімдерінен көруге болады.
property OnKeyPress:TKeyPressEvent;
Символдық перне басылғанда өрбитін оқиға. Оқиғаны өңдеу типі TKeyPressEvent:
type
TKeyPressEvent = procedure(Sender: TObject;
var Key: Char) of object;
Key параметрі – басылған перненің ANSI-кодын (символ) анықтайды.
property OnKeyUp:TKeyEvent;
Оқиға пернетақтадағы басылған пернені босатқанда өрбиді. Оқиғаны өңдеу типі TKeyEvent (жоғарыдағы OnKeyDown оқиғасын қараңыздар).
Мысал 3.2.2 OnKeyPress оқиғасының өңдеуіші Form1 құрауышы үшін «R» символдық пернесі басылғанда пішіннің фонының түсін қызылға өзгертеді, ал осы пернені босатқанда OnKeyUp оқиғасының өңдеуіші пішіннің фонының түсіне алғашқы мәнін орнатады (clBtnFace).
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If Key='R' then Form1.Color:=clRed;
end;
{пернеге басқанда пернетақтаның регистрі және тілдік бөлінуі есепке алынады}
procedure TForm1.FormKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
If Key=ORD('R') then Form1.Color:=clBtnFace;
end;
Осымен қатар TwinControl класында терезелік элемент активті болғанда немесе активті болмаған жағдайда өрбитін оқиғалар анықталған:
property OnEnter:TNotifyEvent;
Терезелік элемент енгізу фокусын алғанда өрбитін оқиға. Оқиғаны өңдеу типі TNotifyEvent.
type
TNotifyEvent = procedure(Sender: TObject) of object;
мұндағы Sender оқиға көзі - объектісіне нұсқаудан тұрады.
property OnExit:TNotifyEvent;
Терезелік элемент енгізу фокусын жоғалтқанда өрбиді.
TControl класында басқару элементі тышқан, перне және таймер арқылы қалыптастырылған оқиғаларды қалай қабылдайтынын анықтайтын қасиет бар:
property Enabled: Boolean;
Егер қасиетің мәні TRUE болса, онда – қабылдайды,
FALSE – қабылдамайды.
TScreen класында 2 оқиға анықталған:
property OnActiveControlChange: TNotifyEvent;
Оқиға пішіндегі активті басқару элементі өзгергенде өрбиді.
property OnActiveFormChange: TNotifyEvent;
Оқиға бағдарламада активті элемент өзгергенде өрбиді.
3.3 Тышқан арқылы берілген хабарламаны өңдеу
TControl класында тышқанды басқарғанда өрбитін оқиғалар анықталған.
property OnClick:TNotifyEvent;
Басқару элементін тышқан арқылы таңдағанда өрбитін оқиға (тышқанның көрсеткіші басқару элементінің үстінде орналасқанда тышқанның сол жақ пернесі басылады және босатылады).
property OnDblClick:TNotifyEvent;
Басқару элементіне тышқанның сол жақ пернесімен екі рет шерткенде өрбитін оқиға.
property OnMouseDown:TMouseEvent;
Тышқанның көрсеткіші басқару элементінің үстінде тұрғанда, тышқанның пернесі басылғанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseEvent:
type
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y:Integer) of object;
мұндағы Sender – оқиға болған құрауышқа нұсқайтын параметр;
type
TMouseButton = (mbLeft, mbRight, mbMiddle);
Button параметірінің мәні тышқанның қай батырмасы басылғанын анықтайды (mbLeft – сол жақ, mbRidht – оң жақ , mbMiddle - ортаңғы); Shift – пернетақтаның Alt, Ctrl және Shift пернелерінің және тышқанның пернесінің күйін қадағалайды (жоғарыдағы OnKeyDown оқиғасын қараңыздар); X,Y – Sender құрауышының клиенттік аймағындағы тышқанның көрсеткішінің жергілікті координаталары (пиксельмен беріледі).
property OnMouseMove:TMouseMoveEvent;
Тышқанның көрсеткіші басқару элементінің үстінде орналасқан кезде, оны жылжытқанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseMoveEvent:
type
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X,Y:Integer) of object;
Параметлері OnMouseDown оқиғасындағы сияқты мағынаны береді.
property OnMouseUp:TMouseEvent;
Тышқанның көрсеткіші басқару элементінің үстінде орналасқан кезде, тышқанның пернесін босатқанда өрбитін оқиға. Оқиғаны өңдеу типі TMouseEvent (жоғарыдағы OnMouseDown оқиғасын қараңыздар).
Мысал 3.3.1 Бұл мысал пішінде төрт панелі бар StatusBar1 (Win32 парағы) қалып – күй жолының болуын талап етеді. . Панельді қосу үшін қалып – күй жолының Panels қасиетінің мәндер өрісінің үш батырмасына шерту арқылы Editing StatusBar1.Panels терезесін шақырыңыздар. Редактірлеу терезесінің басқару панельінің Add New батырмасына төрт рет шертіңіздер. (Мысалды орындамас бұрын әрбір панельдің Width қасиетіне 150 мәнін орнатыңыздар). Қолданушы тышқанның батырмасына басқанда, тышқанды жылжытқанда және тышқанның батырмасын босатқанда пішінде тіктөртбұрыш тартылады. Тышқанның батырмасы босатылғанда тіктөртбұрыш пішіннің канвасында пайда болады. Оның сол жақ жоғарғы және оң жақ төменгі бұрыштары тышқанды басқан және босатқан уақыттағы тышқанның көрсеткішінің орналасуымен анықталады. Қолданушы тышқанды жылжытқанда тіктөртбұрыштың сол жақ жоғарғы (Left, Тор) және оң жақ төменгі (Right, Bottom) бұрыштарының координаталары қалып –күй жолында бейнеленеді. Горизонталь осьі солдан оңға қарай жүреді. Вертикаль ось – жоғарыдан төмен қарай бағытталады. Осьтер тек қана оң мәндерден тұрады.
var
StartX, StartY: Integer; {Пішіннің модульінің интерфейс бөлімінде жариялайды}
{Бұл кодты пішіннің OnMouseDown оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
StartX := X;
StartY := Y;
end;
{ Бұл кодты пішіннің OnMouseUp оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
begin
Form1.Canvas.Rectangle(StartX, StartY, X, Y);
StatusBar1.Panels[0].Text := '';
StatusBar1.Panels[1].Text := '';
StatusBar1.Panels[2].Text := '';
StatusBar1.Panels[3].Text := '';
end;
{ Бұл кодты пішіннің OnMouseMove оқиғасының өңдеуіші ретінде қолданыңыздар: }
procedure TForm1.FormMouseMove(Sender: TObject;
Shift: TShiftState; X,Y: Integer);
begin
if ssLeft in Shift then { батырманың басылғанын тексеріңіздер }
begin
if Y > StartY then
begin
StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(StartY);
StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(Y);
end
else
begin
StatusBar1.Panels[0].Text := 'Top: ' + IntToStr(Y);
StatusBar1.Panels[2].Text := 'Bottom: ' + IntToStr(StartY);
end;
if X > StartX then
begin
StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(StartX);
StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(X);
end
else
begin
StatusBar1.Panels[1].Text := 'Left: ' + IntToStr(X);
StatusBar1.Panels[3].Text := 'Right: ' + IntToStr(StartX);
end;
end;
end;
Зертханалық жұмыс №8 “TForm объектісі”
Жаңа жоба құрыңыздар. Пішінге тақырып беріңіздер "Лабораторная работа №8, Фамилия Имя". Жеке каталогқа жобаны сақтаңыздар.
Пішіннің өлшемін 500 де 400 пиксельге және орнын экранның центрі бойынша орнатыңыз.
Пішінге өзіңіздің фирмалық иконыңызды орнатыңыз. Осы иконканы қосымшаға да орналастырыңыздар. (Қосымшаны көріңіздер).
Пішінге "Моя формочка" деген көмекші кеңесті орнатыңыздар. Көмекші кеңестің түсіне қошқыл жасыл түс беріңіздер. (clLime).
Тышқанның көрсеткішін пішіннің үстімен жылжыту кезінде, ол өз түсін бұрыштардағы мәндерге байланысты баяу өзгерту керек: сол жақтағы жоғарғы бұрыштың түсі - қара, сол жақтағы төменгі бұрыштың түсі - көгілдір, оң жақтағы жоғарғы - қызыл, оң жақ төменгі - ақ. Ctrl-Alt-C басу арқылы осы режимді қосуға/өшіруге болады.
Тышқанның екі рет шертілгенде немесе Alt-X батырмаларының комбинациясына немесе F10 батырмасына басқанда пішін жабылады (рұқсат сұрату арқылы).
Бағыттары көрсетілген пернелерге басқанда пішін жылжиды (экранның шекарасында).
Тышқанның оң жақ батырмасына басқанда пішін жан – жағынан 5 пиксельге кішірейеді. Тышқанның оң жақ батырмасы мен Shift пернесіне басқанда пішін жан – жағынан 5 пиксельге үлкейеді.
Өздіктеріңнен.
Пішіннің өлшемі өзгергенде шертпенің дыбысы шығады, ал өлшемнің өзі экранның төменгі жағындағы минимизация терезесінде көрсетіледі.
Тышқанның ортаңғы батырмасына немесе екі шеткі батырмаларына басқанда пішін тышқанның көрсеткішінің нұсқағышына байланысты центрленеді.
Қосымша.
Beep(0) процедурасы қысқа дыбыстық дабылды шақырады.
RGB(r,g,b) функциясы r,g,b (от 0 до 255) параметрінің мәніне байланысты қызыл, жасыл және көк түстердің реттік нөмірін қайтарады.
Application объектісі бағдарламаның маңызды қасиеттері мен әдістерін инкапсуляция жасайды Application объектісінің кейбір қасиеттері:
HintColor
|
Оперативті көмекші кеңестің таңбашасының түсі.
|
HintHidePause
|
Көмекші кеңестің таңбашасы пайда болып және жоғалғанға дейін миллисекунд тұратын үзіліс.
|
Icon
|
Минимизацияланған бағдарлама батырмасының пиктограммасы.
|
Title
|
Минимизацияланған бағдарлама батырмасындағы мәтін.
|
Screen объектісі ДК экранының жұмысын жеңілдететін маңызды қасиеттер мен әдістерден тұрады. Screen объектісінің кейбір қасиеттері:
Fonts
|
Барлық экрандық қаріптердің тізімі.
|
Height, Width
|
Экранның ұзындығы мен ені.
|
IconFont
|
Минимизацияланған бағдарлама батырмасының мәтінінің қаріпі.
|
PixelsPerInch
|
Пиксельден дюмге өтетін экранның рұқсат беретін қабілеті.
| 3.4 Басқару элементтерінің тасуын қамтамасыз ететін сипаттамалар (Drag & Drop тетігі)
Экранда бейнеленетін басқару элементтері құрауыштар сияқты ерекше қасиеттерге ие, оларды экран бойынша жылжытуға болады және оларды басқа басқару элементтеріне түсіруге болады. Тасу (Drag & Drop) сәйкес басқару элементін тышқанмен керекті орынға сүйреу арқылы жүзеге асады. Тышқанның сол жақ батырмасын босатқанда құрауыштың сол жақ жоғарғы бұрышы тышқанның көрсеткіші нұсқаған нүктеге орналасады.
Басқару элементтерін тасуға тағайындалған TControl класының негізгі сипаттамаларын қарастырайық.
Қасиеті (Properties):
property DragCursor: TCursor;
type
TCursor = -32768..32767;
Басқару элементін тасыған уақыттағы тышқанның көрсеткішінің түрін анықтайды.
property DragMode: TDragMode;
type
TDragMode = (dmManual,dmAutomatic);
Басқару элементін тасудың режимін орнатады: егер dmAutomatic (Автоматты түрде) мәнін қабылдаса, онда басқару элементін тікелей тышқанның көмегімен тасуға болады, егер dmManual (Қолмен) мәні тағайындалса, онда тікелей тышқанның көмегімен тасу мүмкін емес.
Оқиғалар (Events):
property OnDragDrop: TDragDropEvent;
Басқару элементіне басқа тасылатын басқару элементі түсірілгенде өрбитін оқиға. Оқиғаның өңдеуіші TDragDropEvent типінен тұрады:
type
TDragDropEvent = procedure(Sender, Source: TObject;
X, Y: Integer) of object;
мұндағы Sender тасылатын басқару элементі түсірілген объект; Source – тасылатын басқару элементі; X, Y – Source басқару элементін түсірген сәттегі тышқанның көрсеткішінің координаталары (Sender клиенттік аймағының координаталар жүйесіндегі). Оқиға шынымен Source басқару элементін Sender объектісіне түсірген кезде ғана өрбиді.
property OnDragOver: TDragOverEvent;
Sender басқару элементінің үстіне басқа тасылған Source басқару элементі орналастырылғанда өрбитін оқиға. Оқиғаның өңдеуіші TDragOverEvent типінен тұрады:
type
TDragOverEvent = procedure(Sender, Source: TObject; X,Y:Integer;
State: TDragState; var Accept: Boolean) of object;
Sender, Source, X, Y параметрлері OnDragDrop оқиғасындағы сияқты мағына алады; State – тасу режимінің күйін анықтайды (dsDragEnter – тасылатын объект басқару элементіне түседі, ол арқылы оны жылжытуға болады; dsDragLeave – тасымалданатын элемент осы басқару элементін тастап кетеді; dsDragMove – тасылатын элемент басқару элементінің бойымен жылжиды); Accept – егер Sender объектісі тасымалданған элементті қабылдайтын болса, онда оқиғаның өңдеуіші True мәнін, ал кері жағдайда False мәнін беретін параметр.
property OnEndDrag: TEndDragEvent;
Ағымды басқару элементін тасу аяқталғанда өрбитін оқиға. Оқиғаның өңдеуіші TEndDragEvent типінен тұрады:
type
TEndDragEvent = procedure(Sender, Target: TObject;
X, Y: Integer) of object;
мұндағы Sender тасылатын басқару элементі; Target – үстінде тасылған басқару элементі орналасқан объект; X, Y – тасу аяқталған кездегі тышқанның көрсеткішінің координаталары. Оқиға кез – келген тасуды аяқтағанда және Target Sender басқару элементін қабылдағанда, қабылдамағанда өрбиді. Соңғы жағдайда тасылатын басқару элементі өз орынында қалады.
property OnStartDrag: TStartDragEvent;
Ағымды басқару элементі тасылғанда өрбитін оқиға. Оқиғаның өңдеуіші TStartDragEvent типінен тұрады:
type
TStartDragEvent = procedure(Sender: TObject;
var DragObject: TDragObject) of object;
мұндағы Sender – тасылатын басқару элементі; DragObject – тасу кезінде басқару элементінің кескінін қалыптастыратын арнайы объектіге сілтемеден тұрады. Үнсіздікпен nil – ге тең болады, яғни құрауыштың өзі тасылатын болады.
Бұл оқиғалардың барлығы қорғалған, бірақ ұрпақтар класында олар жинақталған болып жарияланады, сондықтан объект инспектрінде пайда болады. Оқиғалар қажетті түрде жазатын әдістерге нұсқағыш болып табылады, талап еткен жағдайда сәйкес оқиғаны өңдеп береді. Бұл әдістің дайындамасын қалыптастыру үшін инспектор объектісінен сәйкес оқиғаны тышқанның көмегімен активтеу керек.
TControl класында сүйреу режимін іске қосатын әдіс анықталған:
procedure BeginDrag(Immediate: Boolean;
Threshold: Integer = -1);
BeginDrag әдісі бағдарламаның кодында басқару элементінің DragMode қасиетінің мәніне dmManual орнатылғанда шақырылады. Егер DragMode – dmAutomatic, онда әдіс автоматты түрде шақырылады.
Егер параметр Immediate - TRUE, онда тышқанның көрсеткіші DragCursor қасиетінде берілген түрді қабылдайды және жылжыту тез арада басталады. Егер Immediate – FALSE, онда тышқанның көрсеткішінің түрі өзгермейді, және қолданушы тышқанның көрсеткішін Threshold параметрінде көрсетілген пиксель санына жылжытқанша сүйреу басталмайды. Егер әдісті шақырғанда Threshold параметрі түсірілсе, онда BeginDrag Mouse ауқымды айнымалысының DragThreshold қасиетінің мәнін қолданады.
Immediate – қа FALSE орнататын болсақ, онда басқару элементі тасу амалын бастамай – ақ тышқанның шертуін қабылдайды.
Мысал 3.4.1 Басқару элементін тасуды қамтамасыз ететін бағдарлама.
Басқару элементін тасуды жүзеге асыратын бағдарлама жазайық. Ол үшін пішінге GroupBox тақырыбы бар панель мен Button батырмасын орналастырайық. Батырма мен оған орналасқан панельді пішіннің бойымен жылжытайық.
Батырманы жылжыту үшін оның DragMode қасиетіне dmAutomatic мәнін беру керек, ал пішін мен панель үшін OnDragDrop және OnDragOver оқиғаларының өңдеуішін жазу керек. Батырмаға OnStartDrag және OnEndDrag оқиғаларының қолданылғанын көрсету үшін батырмалардың аттарын өзгертетін оқиғалардың өңдеуішін жазу керек.
Тапсырманың шешімін келесі түрде ұйымдастыруға болады:
Button1 қасиетінің DragMode қасиетіне dmAutomatic мәнін тағайындайық. Ол оның жылжуын тікелей тышқанның көмегімен асыруға мүмкіндік береді.
Пішін тасылатын батырманы қабылдайтындай күйде болатындай шартты ұйымдастырайық. Ол үшін пішіннің OnDragOver оқиғасының өңдеуішін қалыптастырайық.
procedure TForm1.FormDragOver(Sender, Source: TObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:= True; {Оқиға пішіннің жаңа орнына жылжығаннан кейін батырманың босатылуына мүмкіндік береді}
end;
Пішінге батырманы тасуды аяқтауда қажетті әрекетті іске асыратын OnDragDrop оқиғасының өңдеуішін құрайық:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
WITH Source AS TButton DO {Source параметрін TButton типіне әкелу, өйткені тасылатын батырма осындай типтен тұрады}
BEGIN
Parent:= Pointer(Sender); {Батырмаға үлкен құрауыш беріледі - Parent қасиетіне Sender (басқару элементі түсірілетін құрауыш) қасиетінің мәні тағайындалады, оны алдын – ала Pointer типіндегі нұсқағышқа айналдырамыз}
Left:= X; {Басқару элементінің сол жақ жоғарғы бұрышының
Top:= Y; координаталарына басқару элементі түсірілген құрауыштың ішіндегі тышқанның көрсеткішінің жергілікті координаталары меншіктеледі
END;
end;
Аналогиялық түрде панель үшін OnDragOver және OnDragDrop оқиға өңдеуішін құрастырайық. Олар пішін үшін құрастырылған өңдеуіштерден аттары бойынша ғана өзгеретіндіктен, құрылған әдістерді меншіктеуді қолдануға болады.
Батырма үшін оны тасудың басы мен аяғының оқиғасының өңдеуішін құрастырайық (OnStartDrag және OnEndDrag оқиғалары), олар батырманың атын өзгертеді.
procedure TForm1.ButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
begin
WITH Sender AS TButton DO
BEGIN
Caption:= ’Перемещается’; {Егер тасымалданатын басқару элементі TButton типін немесе TButton типінің ұрпағын иемденсе, онда батырмаға«Перемещается» деген ат беріледі}
END;
end;
Аналогиялық түрде батырмаға OnEndDrag оқиғасының өңдеуішін құрайық:
procedure TForm1.ButtonEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
WITH Sender AS TButton DO
BEGIN
Caption:= ’Не перемещается’; {Егер тасымалданатын басқару элементі TButton типін немесе TButton типінің ұрпағын иемденсе,
онда батырмаға«Не перемещается» деген ат беріледі}
END;
end;
Бұл өңдеуіште Sender - тасыланатын басқару элементі (батырма); Target – тасылатын басқару элементі түсірілген құрауыш (пішін немесе панель).
Зертханалық жұмыс №9 "Экрандық объектілерді сүйреу"
Экрандық объектілерді сүйреу тышқанның көмегімен жеке құрауыштардың арасында ақпаратты тиімді тасымалдауға мүмкіндік береді. Жолды бір тізімнен екінші тізімге сүйреу тетігін мысалда қарастырайық. Жоғарғы жақта жазбасы бар ListBox1 және ListBox2 құрауыштарынан тұратын жоба құрыңыздар. Бірінші тізімді апта аттарының атымен толтырыңыздар. Келесі қадамдар сүйреудің төрт қадамынан тұратын хабарламаны өңдеу мысалдарынан тұрады.
1 этап. Сүйреудің басталуы. Тышқанды сол жақ батырмасына басып жылжытқанда өрбиді. ListBox1 құрауышының DragMode қасиетіне dmAutomatic орнатыңыздар, яғни құрауыш өзіне осы этаптың өңделуін алады. Егер осы қасиетке dmManual орнататын болсақ, онда бағдарлама құрушы сүйреудің басын (мысалы, MouseDown оқиғасы бойынша) және оның тетігін іске қосуды (BeginDrag әдісі) өзі қолмен анықтауы керек болады. Сүйреуді бастау сәтінде құрауыш OnStartDrag оқиғасын өрбітеді. Осы қасиетті өңдеу оқиғасына мына жолды жазыңыздар:
Color:=clRed;
2 этап. Құрауыштан объектіні сүйреу. Тышқанның көрсеткішін құрауыштың үстінен жылжытқанда болатын сүйреуде ол OnDragOver оқиғасын өрбітеді. Осы оқиғаны өңдеудің келесі параметрлерін қарастырайық: Source - объект — сүйреудің көзі, X,Y – тышқанның көрсеткішінің координаталары, Accept – құрауыш сүйреп әкелінген ақпаратты қабылдай ма? жоқ па?, соны анықтайтын буль типтес айнымалы. ListBox2 құрауышының осы оқиғасы үшін келесі жолды жазыңыздар, ол тек ListBox1 құрауышынан ғана сүйреуге рұқсат береді:
Accept := Source=ListBox1;
3 этап. Ақпаратты толық құрауышқа лақтыру. Құрауыштан тышқанның батырмасын босатқан сәтте орындалатын сүйреу OnDragDrop оқиғасын өрбітеді. Осы оқиғаның өңдеуішіне сүйреу сәйкес келетін қимыл жазылуы керек. Біздің жағдайда ол жолды сол жақ тізіменен оң жақ тізімге тасымалдау қимылы. ListBox2.OnDragDrop оқиғасының өңдеуішіне ListBox1 тізімінде ерекшеленген жолды ListBox2 тізіміне қосатын операторды жазыңыздар:
with ListBox1 do ListBox2.Items.Add(Items[ItemIndex]);
4 этап. Сүйреуді аяқтау. Құрауыш - сүйреудің көзі оны босатқан сәтте OnEndDrag оқиғасын өрбітеді, оның Target параметрі басқа толық құрауышқа сәйкес келеді (біздің жағдайда ListBox2). Бұл оқиғаның өңдеуішіне бірінші тізімнен таңдап алынған жолды жоятын операторды және пішіннің түсін өзгертетін операторды жазыңыздар:
if Target = ListBox2 then
with ListBox1 do Items.Delete(ItemIndex);
Color := clYellow;
Компиляцияны орындаңыздар және сүйреу тетігінің жұмысын тексеріңіздер.
Өздік жұмысқа тапсырма №9_1
Екі ListBox тізімінен, Edit құрауышынан, Panel құрауышынан, екі батырмадан және төрт жазбадан тұратын жоба құрыңыздар. Берілген жоба келесі функциялардың жұмысын қамтамасыз етуі керек:
жолды Edit құрауышынан екі тізімге тасымалдау;
жолды бірінші тізімнен екінші тізімге тасымалдау және керісінше;
жолды қара панельге сүйреу арқылы жою;
файлдағы жолды бірінші тізімде оқу;
екінші тізімнің жолдарын файлға сақтау.
Көп таңдау жасалғанда барлық таңдап алынған жолдарды тасымалдау.
Edit - тен <Ctrl> пернесі басылған тасымал жасалғанда, көшірме алынады (тышқанның көрсеткішінің түрі – crCross).
Өздік жұмысқа тапсырма №9_2
Екі ListBox тізімдерінен, Edit құрауышынан және екі батырмадан тұратын жоба құрыңыздар. Ерекшеленген сөзді тасымал жасағанда орындалатын функцияларды іске асыратын бағдарлама құрыңыздар:
ListBox1 пішін: ListBox1 – дегі сөз қосарланады;
ListBox2 пішін: ListBox2 – дегі сөз жойылады;
ListBox1 ListBox2: сөздердің қарапайым тасымалдануы;
ListBox1 Edit1, ListBox2 Edit1: сөздердің орынмен ауысуы;
Edit1 ListBox1, Edit1 ListBox2: тышқанның сол жақ пернесі – тасымал, оң жағы – сөздің көшірмесі.
ListBox1 (ListBox2) Button1: файлдан барлық тізімді оқу;
ListBox1 (ListBox2) Button2: барлық тізімді файлға сақтау.
Көп таңдау жасалғанда барлық таңдап алынған жолдарды тасымалдау.
Edit1 – ден көшірмесін алғанда тышқанның көрсеткішінің түрі – crCross.
Ұсыныс :
Edit1 – ден сүйреудің бастамасын өңдеуді қолмен ұймдастырыңыздар, яғни Edit1.DragMode=dmManual орнатыңыздар және Edit1.OnMouseDown өңдеуішіне келесіні жазыңыздар (бұл толық емес):
if (Button=mbLeft) and (Edit1.Text<>'') then
Edit1.BeginDrag(False);
3.5 Диалог терезелері. Dialogs парағындағы Delphi құрауыштары (Open Dialog, Save Dialog, Font Dialog және т.б.)
Windows жанұясының операциялық жүйелері файлды ашуға және сақтауға, қаріпті, түсті, принтерді және басқаларды таңдауға және баптауға тағайындалған стандартты диалог терезелерінен тұрады. Delphi ортасы да стандартты диалог терезелерінен тұрады. Ол үшін Delphi – дің құрауыштар кітапханасында өз кезегінде тікелей TComponent класының ұрпақ класы болып келетін TCommonDialog (Жалпы диалог) бір ата – тек класына қатысты арнайы кластар анықталған. Диалог терезелері көрнекілік емес құрауыштардың мысалы болып табылады. Бұны мынадан байқауға болады, конструктірлеу кезеңінде пішінге орналастырылатын құрауыштың сыртқы көрінісі бағдарламаның орындалу барысындағы диалог терезесінің сыртқы көрінісімен сай келмейді.
Delphi - дің диалог терезелерін жүзеге асыру ерекшелігі олардың Windows жанұясының операциялық жүйесіндегі стандартты мүмкіншіліктерді қолдануы болады. Мысалы, Delphi - дің диалог терезелері операциялық жүйеде қолданылатын тілдегі ақпараттан тұрады.
Dialogs – Құрауыштар Палитрасындағы стандартты диалогтардың парағы.
Open Dialog – ашылатын файлдың атын таңдауға тағайындалған диалог терезелері.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Ашылатын файлдың атын таңдауға арналған диалог терезелері TOpenDialog класының данасы болып табылады. Ол компьютердің файлдық жүйесін көруге және керекті файлдың атын таңдауға тағайындалған (3.5.1 суретін қараңыздар).
Байқағандарыңыздай Open Dialog құрауышы файлды автоматы түрде ашуға тағайындалмаған. Ол тек қолданушының таңдаған файлының атын ғана алуға мүмкіндік береді. Файлды тікелей ашу Object Pascal тілінің стандартты процедураларының көмегімен немесе арнайы әдістермен жүзеге асырылады. Мұндай әдістер мысалы TStrings класында анықталған.
TOpenDialog класының негізгі қасиеттерін қарастырайық.
property DefaultExt: String – егер файлдың кеңейткіші көрсетілмесе оның атына қосылып жазылатын кеңейткіштен тұрады. Бөлетін нүктені қоспағанда үш символдан тұруы мүмкін.
property FileName: TFileName;
type
TFileName = String;
Ол таңдап алынған файлдың атынан тұрады. Ол ат диалог терезесінің Имя файла: (File Name:) жолына орналастырылады.
property Files: TStrings – ерекшеленген файлдардың аттарының тізімінен тұрады. Қасиет тек оқуға ғана тағайындалған.
property Filter: String – бір немесе бірнеше файлдық сүзгілердің сипаттамасынан тұрады. Файлдық сүзгі – арнайы символдардан тұратын файлдың атының (файлдың қалқасы) бір немесе бірнеше шаблоны. Мысалы, *.pas қалқасы қолданушыға диалог терезесінде тек қана .pas кеңейткіші бар файлдарды ғана бейнелеуге көмектеседі. Filter қасиетінде көлбеу сызықтармен бөлінген бірнеше символдар тізбегінің жұбы болуы мүмкін. Әрбір осындай жұп бір файлдық сүзгіге сай келеді және өз кезегінде көлбеу сызықпен бөлінген екі бөліктен тұрады. Бірінші бөлік берілген сүзгі үшін диалог терезесінің Тип файлов: (Files of type:) аралас жолында шығатын мәтінді береді, ал екінші бөлім сүзгінің өзінен тұрады. Сүзгі үтір мен нүкте арқылы аударылған файл қалқасын береді. Мысалы, оператордың орындалуының нәтижесінде
OpenDialog1.Filter := Delphi модульдерінің файлдары(*.pas)|*.pas|' +
'Мәтіндік құжаттар (*.txt, *.doc)|*.txt;*.doc';
диалог терезесінің Тип файлов: аралас жолы екі жолдан тұратын болады:
Delphi модульдерінің файлдары (*.pas)
және
Мәтіндік құжаттар (*.txt, *.doc)
Бірінші жолға *.pas файлдық сүзгі, ал екінші жолға *.txt; *.doc файлдық сүзгі сай келеді. Сәйкес бірінші сүзгіні таңдағанда файлды ашу диалог терезесінде .pas кеңейткіші бар файлдар ғана бейнеленеді, ал екінші сүзгіні таңдағанда - .txt немесе .doc кеңейткіші бар файлдар бейнеленеді.
Пішінді конструктірлеу кезеңінде Объект Инспектірінен осы қасиетті таңдағанда көмекші терезе ашылады, оның көмегімен көлденең бөлгіш сызықтарды жазбай – ақ сүзгінің мәтінін және сүзгінің өзін беруге болады. property FilterIndex: Integer – диалог терезесі ашылғанда үнсіздікпен сүзгінің қандай элементі көрсетілетінін анықталады. Элементтерді нөмірлеу бір санынан басталады. Әдетте сүзгінің бірінші элементі қолданылады.
property InitialDir: String – құрамы диалог терезесі ашылғанда пайда болатын қапшықты анықтайды. Егер осы қасиеттің мәні тағайындалмаса, онда ағымды қапшық немесе қолданушының диалог терезесіне соңғы рет қатынағанда ашылған қапшық ашылады.
property Title: String – диалог терезесінің тақырыбын береді.
property Options: TOpenOptions;
type
TOpenOption = (ofReadOnly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofShowHelp, ofNoValidate, ofAllowMultiSelect, ofExtensionDifferent, ofPathMustExist, ofFileMustExist, ofCreatePrompt, ofShareAware, ofNoReadOnlyReturn, ofNoTestFileCreate, ofNoNetworkButton, ofNoLongNames, ofOldStyleDialog, ofNoDereferenceLinks);
TOpenOptions = set of TOpenOption;
Ол диалог терезесінің сипаттамасын орнатады және мән ретінде келесі шамалардың кез – келгенін ала алады:
ofReadOnly – Только для чтения файлының ашылуының қосқышын береді (орнатады),
ofOverwritePrompt – файлды сақтағанда хабарлама шығады, егер мұндай файл бар болатын болса, онда файлды ауыстыруға растауды сұрайды,
ofHideReadOnly – Только для чтения файлының ашылуының қосқышын тығып қояды (үнсіздікпен беріледі),
ofFileMustExist – бұл мән берілгенде тек бар файлдарды ғана беруге болады, қарсы жағдайда файл жоқ деген хабарлама шығады,
ofNoReadOnlyReturn – бұл параметр берілгенде Только для чтения файлын таңдағанда файлды ашуға болмайды деген хабарлама шығады,
ofAllowMultiSelect – бірден көп файлдарды ерекшелеуге мүмкіндік береді.
Файлды ашу диалог терезесін қолданғанда ерекше орынды TOpenDialog класында анықталған Execute әдісі алады.
function Execute: Boolean; override;
Диалог терезесін экранға модальды режимде орналастырады. Модальды режим дегеніміз - қосымшаның орындалуы қолданушы модальды терезені жаппағанша тоқтамайды. Функция True мәнін қайтарады, егер терезе Открыть батырмасы арқылы жабылса, және False, егер Отмена батырмасы арқылы жабылса.
TOpenDialog класында OnFolderChange, OnSelectionChange және OnTypeChange оқиғалары анықталған:
property OnFolderChange: TNotifyEvent;
Диалог терезесінің көмегімен қандай да бір қапшық ашылғанда немесе жабылғанда өрбиді.
property OnSelectionChange: TNotifyEvent;
Ерекшеленген файл өзгергенде өрбиді.
property OnTypeChange: TNotifyEvent;
Берілген сүзгі бойынша анықталған, диалог терезесінде бейнеленетін файлдардың типі өзгергенде өрбиді.
Мысал 3.5.1 Button1 құрауышының OnClick оқиға өңдеуіші ашылатын файлдың атын таңдауға арналған диалог терезесін ашады және таңдап алынған файлдың бірінші жолын Edit1 құрауышына орналастырады.
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
S: String;
begin
IF OpenDialog1.Execute THEN {Экранға файлды ашу диалог терезесін шығару}
BEGIN {Егер терезе Открыть батырмасы арқылы жабылған болса, онда ...}
{Диалог терезесінің файл атында таңдап алынған атты файлдық айнымалымен байланыстыру}
AssignFile(F,OpenDialog1.FileName);
Reset(F); {Файлды ашу}
Readln(F,S); {Файлдан бірінші жолды S жолдық айнымалысына есептеу }
Edit1.Text:=S; { Edit1құрауышындағы S жолын шығару}
CloseFile(F); {Файлды жабу}
END;
end;
Мысал 3.5.2 Button2 құрауышы үшін OnClick оқиға өңдеуіші ашылатын файлдың атын таңдауға арналған диалог терезесін ашады және файлдың мәтінін Memo1 құрауышына орналастырады.
procedure TForm1.Button2Click(Sender: TObject);
var fFileName: TfileName;
begin
WITH OpenDialog1 DO
BEGIN
Filter := 'All files|*.*'+'Text files|*.txt,*.doc';
FilterIndex := 2;
IF Execute THEN
BEGIN
{Таңдап алынған файлды Memo1 құрауышында ашады}
Memo1.Lines.LoadFromFile(FileName);
{ fFileName айнымалысына таңдап алынған файлдың толық атын жазу}
fFileName := OpenDialog1.FileName;
{Файлдың толық атын пішіннің тақырыбына шығару}
Form1.Caption := fFileName;
{Label1 құрауышына толық атынан бөліп алып, дискі және каталогтың атынсыз файлдың атын шығару}
Label1.Caption := ExtractFileName(fFileName);
END;
END;
end;
Save Dialog – сақталатын файлдың атын таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog – TOpenDialog.
Save Dialog диалог терезесі Open Dialog терезесіне өте ұқсас, бірақ одан айырмашылығы ол файлды сақтауда қолданылады (сурет 3.5.2 көріңіздер).
Сақталатын файлдың атын таңдау диалог терезесі TOpenDialog класынан туындаған және оның барлық сипаттамаларына ие болатын TSaveDialog класының данасы болып табылады.
TSaveDialog класында TOpenDialog класының аналогиялық функциясы атқаратын іс - әрекетті орындайтын өзінің Execute функциясы анықталған.
Өздерінің құрылымдары және сыртқы бейнесі бойынша Save Dialog және Open Dialog диалог терезелерінің айырмашылықтары аз ғана.
Мысал 3.5.3 Button2 құрауышы үшін OnClick оқиға өңдеуіші сақталатын файлдың атын таңдауға арналған диалог терезесін ашады және Memo1 құрауышындағы мәтінді осы файлға сақтайды.
procedure TForm1.Button2Click(Sender: TObject);
begin
IF SaveDialog1.Execute THEN
BEGIN
Form1.Caption := SaveDialog1.FileName;
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
END;
end;
Font Dialog – қаріпті таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Қаріпті таңдау Font Dialog диалог терезесі қолданушыға қаріпті таңдауға және оның сипаттамаларын орнатуға мүмкіндік береді (сурет 3.5.3 қараңыздар).
Font Dialog құрауышы тікелей TCommonDialog класынан туындаған TFontDialog класының данасы болып табылады.
TFontDialog класының негізгі қасиеттерін қарастырайық.
property Device: TFontDialogDevice;
type
TFontDialogDevice = (fdScreen, fdPrinter, fdBoth);
Ол қандай құрылғы үшін қаріп тағайындалатынын анықтайды. Келесі мәндерді қабылдауы мүмкін:
fdScreen – экран үшін қаріп,
fdPrinter – принтер үшін қаріп,
fdBoth – экран және принтер үшін қаріп.
Үнсіздікпен қаріп экран үшін беріледі.
property Font: TFont – қаріптің сипаттамаларын береді. Мәтінді бейнелеу үшін Windows операциялық жүйесінде тіркелген көптікке тиісті қаріп қолданылады.
property Options: TFontDialogOptions –TFontDialogOptions типті қасиет:
type
TFontDialogOption = (fdAnsiOnly, fdTrueTypeOnly, fdEffects, fdFixedPitchOnly, fdForceFontExist, fdNoFaceSel, fdNoOEMFonts, fdNoSimulations, fdNoSizeSel, fdNoStyleSel, fdNoVectorFonts, fdShowHelp, fdWysiwyg, fdLimitSize, fdScalableOnly, fdApplyButton);
TFontDialogOptions = set of TFontDialogOption;
Ол диалог терезесінің сипаттамаларын береді және мәні ретінде келесі шамалардың көптігін қабылдай алады:
fdAnsiOnly – бұл параметр тағайындалғанда символдары Windows операциялық жүйесінің көптік символдарына кіретін қаріпті ғана таңдауға болады,
fdEffects – бұл параметр тағайындалғанда диалог терезесі қаріптің астын сызуды және қайта сызуды анықтайтын Effects терезесінен және қаріптің түсін анықтайтын Color терезесінен тұрады,
fdForceFontExist – бұл параметр тағайындалғанда және жоқ қаріптің атын енгізгенде дұрыс енгізілмеген туралы хабарлама шығады,
fdLimitSize – бұл параметр тағайындалғанда қаріптің максимальды және минимальды өлшемін беруге болады,
fdApplyButton – бұл параметр тағайындалғанда Применить (Apply) батырмасы пайда болады.
property MaxFontSize: Integer – қаріптің максимальды (ең үлкен) өлшемін береді. Егер мәні нольге тең болса, онда максимальды өлшем берілмеген.
property MinFontSize: Integer – қаріптің минимальды (ең кіші) өлшемін береді. Егер мәні нольге тең болса, онда минимальды өлшем берілмеген.
Open Dialog және Save Dialog құрауыштарындағы сияқты қаріпті таңдау диалог терезесі Execute әдісінің көмегімен активтеледі.
TFontDialog класында бір оқиға – OnApply анықталған .
property OnApply: TFDApplyEvent;
type
TFDApplyEvent = procedure (Sender: TObject; Wnd: HWND) of object;
где Wnd – терезенің сандық идентификаторы.
Оқиға терезенің Применить (Apply) батырмасына басқанда өрбиді. Бұл батырма OnApply оқиғасының өңдеуіші бар болғанда немесе Options қасиетінде fdApplyButton параметрі берілгенде пайда болады.
Мысал 3.5.4 Button1 құрауышы үшін OnClick оқиғасының өңдеуіші қаріпті таңдау диалог терезесін активтейді және таңдап алынған сипаттамаларды Label1 құрауышының қаріпіне береді.
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
S: String;
begin
WITH FontDialog1 DO
BEGIN
{Options қасиетіне fdLimitSize параметрін береді}
Options := Options + [fdLimitSize];
MaxFontSize := 14; {Қаріптің максимальды өлшемін береді = 14 пункт}
MinFontSize := 8; {Қаріптің минимальды өлшемін береді = 8 пункт}
IF Execute THEN {Қаріпті таңдау диалог терезесін активтейді}
Label1.Font:=Font; {Егер терезе ОК батырмасымен жабылса, онда таңдап алынған сипаттамалар , Label1құрауышының қаріпіне беріледі}
END;
end;
Мысал 3.5.5 Бұл мысал пішінде орналастырылған келесі басқару элементтерін қолданады: Edit, Main Menu, Rich Edit. Қолданушы Шрифт менюінің пунктіне шерткенде, қаріпті таңдау диалогы активтелінеді. Қолданушы диалог терезесінің Применить (Apply) батырмасына шерткенде сол сәтте таңдап алынған қаріптің сипаттамалары активті басқару элементіне қолданылады.
procedure TForm1.Menu_FontClick(Sender: TObject);
begin
{Options қасиетіне fdApplyButton параметрін қосады}
FontDialog1.Options := FontDialog1.Options + [fdApplyButton];
FontDialog1.Execute; {Қаріпті таңдау диалог терезесін активтейді}
end;
procedure TForm1.FontDialog1Apply(Sender: TObject; Wnd: HWND);
begin
IF ActiveControl IS TEdit THEN {Егер активті басқару элементі TEdit типті объект ( немесе оның ұрпақтарының бірі) болса, онда ...}
WITH ActiveControl AS TEdit DO
Font.Assign(TFontDialog(Sender).Font) {Активті басқару элементінің Font қасиетіне қаріпті таңдау диалог терезесінде таңдалған сипаттамаларды бекіту}
ELSE IF ActiveControl IS TRichEdit THEN {Егер активті басқару элементі TRichEdit типті объект (немесе оның ұрпақтарының бірі) болса, онда ...}
WITH ActiveControl AS TRichEdit DO
SelAttributes.Assign(TFontDialog(Sender).Font) {Активті басқару элементінің ерекшеленген мәтініне қаріпті таңдау диалог терезесінде таңдалған сипаттамаларды бекіту}
ELSE
Beep;
end;
Color Dialog – түсті таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Түсті таңдау диалог терезесі TColorDialog класының данасы болып табылады. Ол Windows операциялық жүйесінде берілген стандартты түсті таңдап алуға және меншік түсті беруге мүмкіндік жасайды (сурет 3.5.4 қараңыздар).
TColorDialog класының негізгі қасиеттерін қарастырайық:
property Color: TColor – түстің таңдап алынған мәндерінен тұрады.
property CustomColors: TStrings – Қолданушымен анықталған 16 түстен тұрады. Әрбір жол мынандай пішімнен тұрады: Со1оrХ=NNNNNN, мұндағы Х – А – дан Р – ға дейінгі әріптер, олар түстің нөмірін анықтайды, NNNNNN – RGB пішіміндегі түстің он алтылық көрсетілімі.
property Options: TColorDialogOptions – диалог терезесінің сипаттамаларын береді.
Мысал 3.5.6 Button1 құрауышы үшін OnClick оқиға өңдеуіші түсті таңдау үшін диалог терезесін ашады және ол түсті пішіннің көрінісінің түсіне береді.
procedure TForm1.Button1Click(Sender: TObject);
begin
IF ColorDialog1.Execute THEN
Form1.Color := ColorDialog1.Color;
end;
Print Dialog – баспа режімін таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Баспа режімін таңдау диалог терезесі TPrintDialog класының данасы болып табылады. Сол және басқа құжаттарды баспаға шығарғанда қолданылатын параметрлер қатарын беруге мүмкіндік жасайды.
Printer Setup Dialog – принтердің параметрлерін таңдау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Принтердің параметрлерін таңдау диалог терезесі TPrinterSetupDialog класының данасы болып табылады. Құжаттарды баспаға шығару үшін қолданылатын принтердің параметрлер қатарын беруге мүмкіндік жасайды. Бұл параметрлер Windows операциялық жүйесінде анықталған және диалог терезесінде бейнеленген.
Құрауыш принтердің типіне байланысты принтердің параметрлерін баптау терезесін құрады. Бұл диалог принтердің драйверімен қарым – қатынаста болады және бағдарламаға ешқандай ақпаратты қайтармайды, сондықтан оның Execute әдісі функция емес, процедура болады.
Find Dialog – мәтіннің үзіндісін іздеу диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog.
Мәтіннің үзіндісін іздеу диалог терезесі TFindDialog класының данасы болып табылады. Ол мәтіннен сол және басқа үзіндіні анықтауға мүмкіндік береді (сурет 3.5.5 қараңыздар).
Класс келесі негізгі қасиеттерден тұрады.
property FindText: String – ізделінетін мәтіннің үзіндісінен тұрады.
property Position: TPoint – диалог терезесінің экрандағы сол жақ жоғарғы бұрышын анықтайды.
property Options: TFindOptions – TFindOptions типті қасиет:
type
TFindOption = (frDown, frFindNext, frHideMatchCase, frHideWholeWord, frHideUpDown, frMatchCase, frDisableMatchCase, frDisableUpDown, frDisableWholeWord, frReplace, frReplaceAll, frWholeWord, frShowHelp);
TFindOptions = set of TFindOption;
Ол диалог терезесінің сипаттамаларын береді және мән ретінде келесі шамалардың кез – келген көптігін қабылдай алады (солардың кейбіреулері):
frHideMatchCase – егер осы параметр берілсе, жолдық және бас әріптердің айырмашылығын есепке алу қосқышы шығарылмайды,
frHideUpDown – егер осы параметр берілсе, іздеу бағытын таңдау ауыстырып қосқышы шығарылмайды,
frWholeWord – егер осы параметр берілсе, бүтін сөздердің ғана ізделінуі іске асырылады.
TFindDialog класында бір OnFind оқиғасы анықталған.
property OnFind: TNotifyEvent;
Оқиға іздеу үшін мәтіннің үзіндісін таңдағаннан кейін диалог терезесінің Найти далее (Find Next) батырмасын басқанда өрбиді.
Мысал 3.5.7. Бұл мысал пішінде орналастырылған: Rich Edit, Button және Find Dialog басқару элементтерін қолданады. Батырмаға шерткенде мәтіннің үзіндісін іздеу диалогы активтелінеді (іздеу бағыты – іздеу алға қарай). Образец (Find what)жолы толтырылғанда және Найти далее (Find Next) батырмасы басылғанда алдыңғы таңдаудың артынан ілесетін Rich Edit құрауышының үлгіге сәйкес келетін жолы ерекшеленгенеді.
procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width,
RichEdit1.Top);
FindDialog1.Execute; {Мәтіннің үзіндісін іздеу диалог терезесін активтейді}
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
WITH RichEdit1 DO
BEGIN
IF SelLength <> 0 THEN {Мәтіннің ерекшеленген бөлігінің ұзындығы нольге тең болмаса, онда…}
{Іздеу ағымды таңдаудан кейін басталады, егр ол бар болса}
StartPos := SelStart + SelLength;
{SelStart –мәтіннің ерекшеленген бөлігінің мәтіннің басынан бастағанда бірінші символын анықтайды (символдарды нөмірлеу 0 – ден басталады 0). Егер мәтін ерешеленбеген болса, онда алдында мәтіндік нұсқағыш орналасқан символға нұсқалынады}
ELSE
StartPos := 0; {Басқаша, іздеу мәтіннің басынан басталады}
{ToEnd – Rich Edit құрауышындағы мәтіннің StartPos - тан мәтіннің аяғына дейінгі символдық ұзындығы}
ToEnd := Length(Text) - StartPos;
FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd,
[stMatchCase]);
{FindText –мәтіннен диалог терезесінде берілген жолды іздейді және сәтті іздеуде оның бірінші символының индексін қайтарады. StartPos – іздеудің басы; ToEnd – жолдың ұзындығы, [stMatchCase] – іздеу кезінде жолдық және бас әріптердің айырмашылықтары ескерілетінін айтады}
IF FoundAt <> -1 THEN
BEGIN
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
END;
END;
end;
Replace Dialog – мәтіннің үзіндісін іздеу және айырбастау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog – TFindDialog.
Мәтіннің үзіндісін іздеу және айырбастау диалог терезесі тікелей TFindDialog класынан туындайтын және оның барлық сипаттамаларына ие болатын TReplaceDialog класының данасы болып табылады. Ол мәтіннен сол және басқа үзіндіні табуға және қажет жағдайда оны басқа үзіндіге ауыстыруға мүмкіндік береді (сурет 3.5.6 қараңыздар).
Бұл класта қосымша ReplaceText қасиеті анықталған.
property ReplaceText: String – мүмкін табылған үзіндіге айырбас жасалатын мәтін анықталады.
Бұл класта тағы OnReplace оқиғасы анықталған.
property OnReplace: TNotifyEvent;
Оқиға диалог терезесінің Заменить (Replace) немесе Заменить все (Replace All) батырмалары басылғанда өрбиді.
Мысал 3.5.8 ReplaceDialog1 құрауышы үшін келесі OnReplace оқиға өңдеуіші TMemo класының Memo1 құрауышынан FindText - ті іздейді және оны ReplaceText – ке айырбастайды. Ол TMemo класының SelStart, SelLength және SelText қасиеттерін қолданады.
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var
SelPos: Integer;
begin
WITH TReplaceDialog(Sender) DO
BEGIN
{ Memo1 – дегі FindText регистірін есепке алғандағы ауқымды іздеу}
SelPos := Pos(FindText, Memo1.Lines.Text);
{Pos функциясы Memo1құрауышының мәтінінің шегіне дейін FindText – ті іздейді және осы мәтіннің шегіндегі FindText - тің бірінші символын бүтін санды мәнді қайтарады. Егер FindText табылмаса, онда Pos нөлді қайтарады}
IF SelPos > 0 THEN
BEGIN
Memo1.SelStart := SelPos - 1;
Memo1.SelLength := Length(FindText);
Memo1.SelText := ReplaceText; {Таңдап алынған мәтінді ReplaceText – ке ауыстыру}
END
ELSE
MessageDlg(Concat('Could not find "', FindText, '" in Memo1.'),
mtError, [mbOk], 0);
END;
end;
Open Picture Dialog – графикалық файлды ашу диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog – TOpenDialog.
Графикалық файлды ашу диалог терезесі TOpenDialog класынан туындаған және оның барлық сипаттамаларына ие болатын TOpenPictureDialog класының данасы болып табылады.
Ол графикалық кескіні бар файлды таңдауға тағайындалған. Диалог терезесіне қарау терезесі қосылған, онда сол сәтте ерекшеленген графикалық файл бейнеленеді.
property Filter: String – Windows стандартты графикалық файлдары үшін сүзгілер жиынынан тұрады.
Мысал 3.5.9 Button1 құрауышы үшін OnClick оқиға өңдеуіші ашылатын графикалық файлдың атын таңдауға арналған диалог терезесін ашады және оны Image1 құрауышына орналастырады.
procedure TForm1.Button1Click(Sender: TObject);
begin
IF OpenPictureDialog1.Execute THEN
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
end;
Save Picture Dialog – графикалық файлды сақтау диалог терезесі.
Иерархиясы:
TObject – TPersistent – TComponent – TCommonDialog – TOpenDialog – TOpenPictureDialog.
Графикалық файлды сақтау диалог терезесі тікелей TSavePictureDialog класының туындамасы және оның барлық сипаттамаларына ие болатын TSavePictureDialog класының данасы болып табылады.
Ол графикалық кескінді файлға сақтауға арналған.
Мысал 3.5.10 Button2 батырмасына шерткенде сақталатын графикалық файлдың атын таңдауға арналған диалог терезесі ашылады және Image1 құрауышындағы кескін осы файлға жазылады.
procedure TForm1.Button2Click(Sender: TObject);
begin
IF SavePictureDialog1.Execute THEN
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
0>
Достарыңызбен бөлісу: |