If P=Nil
then MessageBeep(0)
|
Егерадрес ноөлдік болса (үлгі табылған жоқ), онда дыбыстық дабыл генерацияланады.
|
else begin
Memo1.SelStart:=P-Buff;
Memo1.SelLength:=Length(FindText)
end;
|
Әйтпесе, егер үлгі табылса, ол Memo1 – де ерекшеленеді.
|
FreeMem(FT);
FreeMem(Buff,BuffLen);
end;
end;
|
Процедура аяқталғанда динамикалық айнымалылар бүлінеді.
|
Қадам 20. ReplaceDialog1 құрауышы үшін OnFind өңдеуішін FindDialog1 құрауышының оқиғасы ретінде (Object Inspector терезесінде) көрсету керек (сондықтан бұл процедурада FindText іздеу жолы нақты FindDialog1 немесе ReplaceDialog1 құрауыштарынан емес, оқиға көзі Sender – ден алынады.).
Қадам 21. ReplaceDialog1 құрауышы үшін OnReplace оқиға өңдеуішінің мәтінін енгізу.
Өңдеуіштің мәтіні
|
Түсініктеме
|
With ReplaceDialog1 do
Repeat
|
Цикл ұйымдастырылады.
|
if Memo1.SelText<>FindText
then FindDialog1Find(Sender);
|
Егер ерекшеленген үзінді іздеу үлгісіне сай келмесе, онда FindDialog1 құрауышының OnFind оқиға өңдеуішін шақыру арқылы келесі сай келетін үзіндіні табу.
|
if Memo1.SelLength=0 then Break;
|
Егер үзінді табылмаса, онда цикл жабылады.
|
Memo1.SelText:=ReplaceText;
|
Ерекшеленген үзіндіні айырбас үлгісіне айырбастау.
|
until not (frReplaceAll in Options);
|
Егер “Заменить все” режимі таңдалмаса, онда циклді тоқтату керек.
|
Өз беттеріңше: (тәжірибелік жұмыстан 5 деген баға алам деушілер 3 және 6 пункттерін орындаулары қажет)
1. Панельге келесі функцияларды орындауға мүмкіндік беретін батырманы қосу
Вариант
|
Тапсырма
|
1, 6, 11, 16, 21, 26
|
Мәтінді жолдағы сөздер саны бойынша сұрыптау
|
2, 7, 12, 17, 22, 27
|
Жолдарды кері ретпен қою
|
3, 8, 13, 18, 23, 28
|
Мәтінді жолдағы цифрлар саны бойынша сұрыптау
|
4, 9, 14, 19, 24, 29
|
Мәтінді жолдағы бос орын саны бойынша сұрыптау
|
5, 10, 15, 20, 25, 30
|
Жолдарды ереже бойынша қою 0-1, 2-3, 4-5,…
|
2. Панельге ‘proba.txt’ файлына келесілерді сақтауға мүмкіндік беретін батырманы қосу
Вариант
|
Тапсырма
|
1, 7, 13, 19, 25
|
Соңғы K жолды
|
2, 8, 14, 20, 26
|
Жұп санды сөздерден тұратын жолды
|
3, 9, 15, 21, 27
|
L - ден басталатын K жолды
|
4, 10, 16, 22, 28
|
Тура К сөзден тұратын жолды
|
5, 11, 17, 23, 29
|
Бірдей сөздер кезігетін жолды
|
6, 12, 18, 24, 30
|
Барлық символдары өзгеше жолдарды
|
K және L сандары панелде орналасқан SpinEdit құрауышына енгізіледі (SpinEdit - тегі мәндер мәтіннің жағдайына сай келуі керек).
3. Панельге файлдан (файлдың аты диалог терезесінде анықталады) 2 – ші тапсырмада (варианта – сіздікінен кейінгі вариант) берілген жолдарды есептеуге мүмкіндік беретін батырманы қосу. Жолдар бар мәтінді ауыстырады немесе оған қосылып жазылады (басына, аяғына, N – ші жолдан кейін – қолданушының таңдауына қарай). Барлық баптау диалогтың уақытында негізгіні айырбастайтын диалог панельінде анықталады. Диалогты болдырмау мүмкіндігін де қарастырыңыздар.
4. Мәтіннің көрінісінің түсін таңдауға тағайындалған батырманы қосу.
5. TMainMenu құрауышының көмегімен жобаның негізгі менюін ұйымдастыру қажет, оған негізгі панельдің барлық батырмаларының функциясын саналы түрде орналастырыңыздар (Әрине, бұл функцияларды қайта жазбай, меню пунктінің OnClick оиғасының дайын өңдеуішін тағайындауға (атын қайта өзгерту) болады).
6. Тәжірибелік жұмыстан 5 деген баға алам деушілер, жобада қосымшаның 2 және 3 пункттерін іске асырулары қажет (төменнен қараңыздар).
Қосымша:
1. Memo - құрауышы қосымшамен жұмыс істегенде ғана қолдануға болатын қасиеттердентұрады.
Қасиет
|
Мән
|
SelText
|
Мәтіннің ерекшеленген үзіндісі
|
SelLength
|
Ерекшеленген үзіндінің ұзындығы
|
SelStart
|
Ерекшеленген үзіндінің бірінші символының нөмірі, барлық мәтіннің басынан бастағанда. Егер ерекшелеу жоқ болса, онда тышқанның нұсқағышы мәтіннің ішінде
|
Modified
|
TRUE, егер мәтін өзгерсе.
|
2. Келесі бағдарламалық код Memo1 құрауышындағы тышқанның ңұсқағышының орынын анықтауға мүмкіндік береді:
var X,Y : Integer;
begin
Y:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
X:=Memo1.Perform(EM_LINEINDEX, Y, 0);
Y:=Y+1;
X:=Memo1.SelStart-X+1;
end;
3. Memo1 редактіріндегі әрекетті болдырмау үшін келесі бағдарламалық кодты қолдануға болады:
Memo1.Perform(EM_UNDO, 0, 0);
Әрекетті болдырмау мүмкіндігін тексеру үшін функцияның мәнін нөлмен салытыруға болады:
Memo1.Perform(EM_CANUNDO, 0, 0);
Достарыңызбен бөлісу: |