батырмасын басса ғана пайда болады. Егер анықтаманы шығару қажет болмаса, онда параметрдің мәні 0-ге тең болу керек.
Мысалы: r:= MessageDlg (‘санды 0 –ге бөлуге болмайды' , mtError,[ mbOK, mbCancel],ø);
Memo және RichEdit- компоненттері көпжолдық редакторлар болып табылады. Бұл компоненттер көмегімен бірнеше жолдан тұратын мәліметтер өңделеді.
Көпжолды редактор мәтіндермен жұмыс жасау үшін Delphi-да MEMO компоненті қызмет атқарады. Memo компоненті үлкен көлемді мәтінді енгізуге рұқсат береді, сондықтан оны символдық массивтерді енгізу үшін қолдану тиімді. Memo компоненті формаға басқа компоненттер сияқты қойылады. Memo компонентінің белгішесі Standard парақшасында орналасқан.
Көп жолды редактор бір жолды редактор орындайтын әрекеттерді орындай алады. Көп жолды редактор бір жолды редактордан айырмашылығы ол бірнеше жолдарды қамтиды. Көп жолды редактордың барлық мазмұнына қатынасу үшін.
String типті Text қасиетін пайдаланамыз.
Бұл жағдайда MEMO – компонентінің барлық мазмұны бір жол түрінде көрсетеді.
MEMO – компонентінің жеке жолдарымен жұмыс жасау үшін Tsring типті Lines қасиетін пайдаланамыз. Жолдық массивтің реті 0-ден басталады
Мысалы: Көп жолды редактормен және оның жолдарымен әрекеттер орындау.
MEMO 1. Lines [2]:=“мысал”;
MEMO1.Clear
MEMO1.Lines.Add(‘жол қосу’);- жол қосады.
Memo компонентінің қасиеттері
Қасиеті
|
Анықтамасы
|
Name
|
Компонент атауы. Программада компоненттің кейбір қасиеттеріне рұқсат ретінде пайдаланылады.
|
Text
|
Memo өрісінде орналасқан мәтін. Бүтін ретінде қарастырылады.
|
Lines
|
Memo өрісінде орналасқан мәтін. Жолдар жиынтығы ретінде қарастырылады. Жолға өту жолдың номері арқылы жүзеге асады.
|
Lines.Count
|
Memo өрісіндегі жолдар саны
|
Left
|
Өрістің сол жақ шетінен форманың сол жақ шетіне дейінгі ара қашықтығы
|
Top
|
Өрістің жоғарғы жақ шетінен форманың жоғарғы жақ шетіне дейінгі ара қашықтығы
|
Height
|
Өрістің биіктігі
|
Width
|
Өрістің ені
|
Font
|
Енгізілген мәтін мазмұнын көрсету қарібі
|
ParentFont
|
Форма қарібінің мінездемесін мұрат ету белгісі
|
Memo компонентін қолдану кезінде массив элементтерінің мәндерін енгізген кезде әр жолға енгізу қажет және массив элементтерін енгізгеннен кейін пернесін басу керек.
Memo өрісінің мәтін жолына өту үшін тік жақшада керек жол нөмірін (нөмірлеу 0-дан басталады) көрсету арқылы Lines қасиеті көмегімен жүзеге асырылады.
Төменде 5.5 листингта көрсетілген программа Memo компоненті көмегімен символдық массивті енгізудің мысалын көрсетеді.
Символдық массивті Memo компоненті көмегімен енгізу процедурасының негізгі циклы мынандай түрде болуы мүмкін:
For i:=1 to SIZE do
a[i] := Memo1.Lines[i];
мұндағы:
SIZE – массив өлшемін көрсететін атаулы тұрақты;
a – массив;
Memo1 – Memo компонентінің аты;
Lines – әр элементі Memo компонентінің бір жолынан тұратын, массив болатын Memo компонентінің қасиеті.
Программа формасы 5.1- суретте көрсетілген. Memo өрісінен басқа онда, шерткен кезде Memo өрісіне массив элементтері мәндері жазылатын, командалық батырма (Button1) орналасқан.
Мысал. Memo компонентінен массив жолдарын енгізу
Unitfr_memo_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
type
TForm1 = class (TForm)
Label1: Tlabel;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5; // массив өлшемі
var
a :array [1..SIZE] of string; //массив
n: integer; // Memo өрісіне енгізілген жолдар саны
st: integer; //массив элементінің индексі
i: integer;
begin
n:=Memo1.Lines.Count;
if n = 0 then
begin
ShowMessage(‘Бастапқы мәліметтер енгізілмеген!’);
Exit; // оқиғаны өңдеу продурасынан шығу
end;
// Memo өрісінде мәтін бар
if n> SIZE then
begin
ShowMessage(‘Жолдар саны массив өлшемінен артық.’);
n:=SIZE; тек бірінші SIZE жолдарды енгіземіз
end;
for i:=1 to ndo
a[i]:=Form1.Memo1.Lines[i-1]; // Memo жолдары 0-дан бастап нөмірленген
// массивті хабарлама терезесіне шығару
if n>0 then
begin
st:=’Енгізілген массив: ’+#13;
for i:=1 to ndo
st:=st+IntToStr(i)+’ ‘+a[i]+#13;
ShowMessage(st);
end;
end;
end.
Негізгі жұмысты, алдымен Memo1 өрісінде мәтін бар жоғын анықтайтын, TForm1.Button1Click процедурасы орындайды. Егер мәтін болатын болса (бұл жағдайда Lines.Count қасиетінің мәні 0-ден үлкен), онда процедура енгізілген жолдар мен массив өлшемін салыстырады. Егер енгізілген солдар саны массив өлшемінен үлкен болатын болса, онда программа n-нің мәнін өзгертеді, сонымен тек бірінші SIZE жолдарды ғана енгізеді.
6 суретте Массивті енгізу қосымшасының диалогтық терезесі көрсетілген. Енгізу командалық батырмасын шерткеннен кейін, Memo өрісінен алынған массив элементтері мәндерінен тұратын терезе пайда болады (7 сурет).
Memo-компоненттінің мазмұнын файлдан жүктеуге болады және Memo өрісіндегі мазмұнды файлға сақтауға болады.Ол үшін:
Жүктеу-LoadFromFile(constfilename:string)
Cақтау- SaveToFile(constfilename:string)
Бұл екі әдісіміз Tstring-класынан шығады.Filename параметрі текстік файлдың аты.
Memo1.LoadFromFile(‘C:\Мои дакументі\adves.txt’)
Memo1.SavetoFile (‘c:\odv5.txt’)
Memo-компонентінің өрісіндегі мәтінді әртүрлі тәсілмен түзеуге болады.
Taligament-типті aligamentқасиеті келесі мәндердін бірін қабылдайды.
1)taleftjujtify-сол жақ
2)taCenter-центр бойынша
3)taRidhtjujtifu-оң жақ
Memo-компанентіндегі ақпаратты қарауға ыңғайлы болу үшін, оған жылжыту жолағы орналастырады. Оның қабылдайтын мәндері:
Tscrollstyle – Scroll Bars
SSNone – айналдыру жолағы болмайды (үнсіз жолақ)
SSHorizontal – көлденең айдандыру жолағы
SSVertical – тік айналдыру жолағы
SSBoth – горизонтальды және вертикальды жылжыту жолағы пайда болады.
Бір жолды редактордан Memo компонентінің ерекшелігі Memo – Enter – клавишасын басуға реакция береді, яғни бұл жағдайда жаңа жолды енгізуді орындау үшін
Boolean - типті Wantrefurns қасиетіне True мәні меншіктелуі керек.
Көп жолды редактор RichEDIT – WIN32
Ақпаратты редактрлеуге арналған үшін барлық компоненттер бір-біріне ұқсас болады. Өстіп жалпы әдістерге оқиғаоарға, қасиеттерге ие болады. Редактрдің мазмұнын өзгерту кезінде
TNotifEvent – типті OnChang оқиғасы пайда болады.
Сонымен қатар редактордың мәліметтерін өзгертү үшін
Boolean -типті Modrfild қасиетті бар. Өзгеріс енгізілсе ол True мәнін қабылдайды.
Редактрлеу элементінде максималды қанша символ енгізуге рұқсатты, қамтамасыз ету үшін.
Integer – типті Maxlength қасиеті бар.
Seltext,Autoselect, Selstart,Selength – қасиеттері мәтінін ерекшеленген жеке бөліктерінен жұмыс жасауға мүмкіндік жасайды.
Boolean -типті Autoselect – қасиеті мәтін енгізу фоксын қабылдаған кезеңде,редактрлау элементтерінің мәні автоматты түрде ерекшелетінін анықтайды.
String - типті seltext – қасиеті ерекшеленген мәтін бөлігін анықтайды.
Integer –типті sellength және бастапқы позициясын және ерекшеленген бөліктің ұзындығын анықтайды.
Егер де бөлігі программалық түрде ерекшеленетін болса, мысалы: х жолды іздеу жағдайда ол қандай да бір түспен ерекшеленуі керек болса онда
Boolean – типті HideSelection қасиетіне False мәнін орнату қажет.
Мәтіннің ерекшеленген бөліктерімен амалдар орындау үшін
Select All, CopyToClipBoard;
CutToClipBoard әдістер қолданады
SelectAll - әдісі редактрлеу өрісіндегі барлық мәтінді ерекшелейді.
CopyToClipBoard - әдістерді алмастыру буферіне мәтіннің ерекшеленген бөлігін көшіреді, ал CutToCipBoard әдісі.
Алмастыру буферімен жұмыс жасау үшін
PasteFromClipBoard - әдісін пайдаланамыз. Ол алмастыру буферіндегі мәтіннің бөлігін курсор тұрған қажетті орынға қояды.
Редакрлеу элементіне енгізілген мәтінді тексеру үшін OnExit – оқиғасын пайдалануға болады.