Дилогты терезелер. Open Dialog, Save Dialog, Font Dialog, ColorDialog.
Windows ОЖ-сі файлдарды ашуда, шрифт және түс параметрлерін таңдауда стандартты диалогты терезелерді пайдаланады. Delphi программасы да стандартты диалогты терезелерді қолданады. Бұл компоненттер «Дилоги» тақтасында орналасады. Оларды пішінге орналастырғанда олар көрінбейді. Оларды шақыру үшін « *.execute » процедурасы қолданылады. М/лы: OpenDialog1.Execute, SaveDialog1.Execute, ColorDialog1. Execute, FontDialog1. Execute.
Open Dialog – ашуға тиісті файл атын таңдауда қолданылады. (Фильм 2)
Негізгі қасиеттері:
FileName
|
Таңдалған файл атын қайтарады.
|
InitialDir
|
Таңдалған файл орналасқан каталогты анықтайды
|
Filter
|
Фильтрде көрсетілген файлдарды таңдауға мүмкіндік береді.
|
Default
|
Үнсіз келісім бойынша файл затын бекітеді.
|
Ескерту: Бұл диалогты терезе файлды ашуға емес тек файл атын таңдауға мүмкіндік береді.
Save Dialog – сақтауға тиісті файл атын таңдауда қолданылады. (Фильм 3)
Open Dialog терезесінен айырмашылығы тек «Открыть» батырмасының орнына «Сохранить» батырмасы орналасқан.
FontDialog – шрифті таңдау терезесі. (Фильм 4)
Негізгі қасиеттері:
Font
|
ОЖ-де орнатылған шрифтерді таңдауға және оның параметрін өзгертуге мүмкіндік береді
|
Device
|
Шрифтің қай құрылғыға арналғанын анықтайды
|
fdScreen
|
Экранға арналған
|
fdPrinter
|
Принтерге арналған
|
fdBoth
|
Экран мен принтерге арналған
|
ColorDialog1- түсті таңдау терезесі.
Негізгі қасиеті : Color – таңдалған түсті қайтарады.
Сабақ тақырыбы: Memo басқару элементі
Сабақ мақсаты: Memo басқару элементінің қасиеттерін және әдістерін программалау.
Теориялық бөлім:
Memo компоненті көп қатардан тұратын тексті енгізу, редактрлеуге арналған. Текст Lines қасиетінде сақталады және ол 0-ден бастап нөмірленеді.
BorderStyle, CanUndo, HideSelection, MaxLentgh, Modified, OEMConvert, OnChange, Readonly, SelLength, SelStart и SelText қасиеттері TEdit қасиеттеріне ұқсас. WordWrap қасиеті TLabel -дің дәл осы қасиетіне ұқсас.
Компонент қасиеттері:
TBorderStyle =
bsNone..bsSingle;
property BorderStyle: TBorderStyle;
|
Қоршау стилін көрсетеді:
bsNone –қоршау жоқ; bsSingle - компонент
бір сызықпен қоршалады.
|
property MaxLength: Integers;
|
Текстің макисмал ұзындығын анықтау.
|
property Modified: Boolean;
|
True, егер текст өзгеріске ұшыраса
|
property Readonly: Boolean;
|
True болса тексті өзгерте алмайсыз
|
property SelLength: Integers;
|
Айрықшаланған текст ұзындығы
|
property SelText: Strings-
|
Айрықшаланған текст
|
property Text: String;
|
Барлық текст
|
Компонент әдістеріне мысалдар:
|
Memo1.Сlear;
|
Memo1-дегі тексті тазалау
|
Memo1.lines.add(edit1.text);
|
edit1.text-дегі тексті Memo1-ге енгізу
|
Memo1.SelStart:=5;
|
Курсорды 5 позицияға орналастыру. Программа орындалу барысында іске асырылады және курсор көрінбей кетеді.
|
Memo1.SelLength:=10;
|
Курсор орналасқан жерден бастап 10 символды айрықшаландыру. Ескерту:
Memo1.HideSelection:=false болуы керек.
|
Memo1.Lines.Delete(3);
|
Memo1-дің 4 қатарында орналасқан тексті өшіру.
|
Memo1.Lines.LoadFromFile(OD1.FileName);
|
Диалогты терезеде көрсетілген текстік файлды Memo1-ге жүктеу.
|
memo1.Lines.SaveToFile(SD1.FileName);
|
Memo1-де орналасқан тексті диалогты терезеде көрсетілген файлға сақтау.
|
Практикалық жұмыс
Тексті өңдеуге арналған төмендегідей программа құр.
procedure TForm1.N3Click(Sender: TObject);
begin
if OD1.Execute then
Memo1.Lines.LoadFromFile(OD1.FileName);
end;
procedure TForm1.Button1Click(Sender: TObject);
var k: integer;
begin
k:=pos(edit1.Text,Memo1.text);
Memo1.SelStart:=k-1;
Memo1.SelLength :=Length(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add(edit1.Text);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
memo1.ClearSelection;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
k1:=0;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i,s: integer;
begin
for i:=1 to length(memo1.Text) do
if copy(memo1.Text,i,length(edit2.Text))=edit2.Text then s:=s+1;
label2.Caption:=inttostr(s)+' рет';
end;
procedure TForm1.Button6Click(Sender: TObject);
var i,s: integer;
x: string;
begin
x:=memo1.Text;
i:=1;
while i<= length(x) do
begin
if copy(x,i,length(edit3.Text))=edit3.Text then
begin
delete(x,i,length(edit3.Text));
i:=i-length(edit3.Text);
insert(edit4.Text,x,i);
end;
i:=i+1;
end;
memo1.Clear;
memo1.Text:=x;
end;
procedure TForm1.Button7Click(Sender: TObject);
var i,s: integer;
y,x: string;
begin
x:=memo1.Text;
y:='';
for i:=1 to length(x) do
y:=y+x[i]+x[i];
memo1.clear;
memo1.Text:=y;
end;
procedure TForm1.Button8Click(Sender: TObject);
var i,s: integer;
y,x: string;
begin
x:=memo1.Text;
y:='';
for i:=1 to length(x) do
y:=x[i]+y;
memo1.clear;
memo1.Text:=y;
end;
procedure TForm1.Button9Click(Sender: TObject);
var i,s: integer;
y,x: string;
begin
x:=memo1.Text;
y:='';
for i:=1 to length(x) do
begin
s:=ord(x[i])+2;
y:=y+chr(s);
end;
memo1.clear;
memo1.Text:=y;
end;
procedure TForm1.Button10Click(Sender: TObject);
var i,s: integer;
y,x: string;
begin
x:=memo1.Text;
y:='';
for i:=1 to length(x) do
begin
s:=ord(x[i])-2;
y:=y+chr(s);
end;
memo1.clear;
memo1.Text:=y;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
FD1.Execute;
Memo1.Font:=FD1.Font;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
CD1.Execute;
Memo1.color:=CD1.color;
end;
end.
Delphi тілінде тексті өңдеуге айнымалының келесі типтері қолданылады:
Қысқа жолдар ShortString немесе string[N], мұндағы N<=255;
Ұзын жолдар string;
Жалпақ жолдар WideString;
Нөл-терминалды жолдар Pchar;
Жолдар бір өлшемді символдық жиым сыяқты сақталғандықтан әр символдың нөмірі болады. Жолдарды циклдік алгоритм комнадалары арқылы өңдеуге ыңғайлы.
Жолдарды өңдеуге арналған процедуралар мен функциялар
-
Function AnsiLowerCase(const S: String): String;
|
Барлық бас әріптер кіші әріптермен алмастырылған S жолын қайтарады.
|
Function AnsiUpperCase(const S: String ): String;
|
Барлық кіші әріптер бас әріптермен алмастырылған S жолын қайтарады.
|
Function Concat(Sl [, S2, ..., SN]: String ): String;
|
S1, S2, ... , SN жоларын біріктіру
|
Function Copy(St: String; Index, Count: Integer): String;
|
St жолынан count символдар тізбегін Index символ нөмірнен бастап көшіру
|
Procedure Delete(St: String;
Index, Count:: Integer);
|
St жолынан count символдар тізбегін Index символ нөмірнен бастап өшіру
|
Procedure Insert(SubSt:
String; St, Index: Integer);
|
St жолына SubSt жолын Index нөмірінен бастап кірістіру.
|
Function Length(St: String): Integer;
|
St жолының ұзындығын қайтарады.
|
Тапсырмалар
1. Тапсырма батырмасын басып, бағдарламамен жұмыс істеп көр.
Тапсырмалағы бағдарламаны өзің құрастыр.
2. Memo өрісіне енгізілген тексті әр келесі қатарға 1 символдан қысқартып отырып шығар
Memo өрісіне енгізілген тексте неше сөз бар екенін анықта.
Memo өрісіне енгізілген текстегі бірінші немесе соңғы символ жиі кездесе ме екенін анықта.
Берілген тексте «о» символы жұп нөмірлі орында неше рет кездесетінін анықта.
Берілген текстегі әр түрлі әріптер санын анықта..
Берілген текстегі әр 3-ші әріпті өшіретін бағдарлама құр.
Берілген текстегі 3 сөздің ұзындығын анықта.
Берілген текстегі екінші сөздің бастапқы және соңғы әріптерінің орнын ауыстыр.
Берілген текстегі 3 сөзді керсінше алмастыр.
Берілген текстегі ең қысқа сөзді керсінше алмастыр.
Берілген текстегі кіші әріптерді үлкен әріптермен алмастыр.
Сабақ тақырыбы: TStringGrid – жолдар кестесі. (Дополнительно тақтасында )
TStringGrid компоненті ұяшықтарында тексттік ақпарат орналасатын кестелер жасауға арналған. Кесте 2 бөліктен тұрады: бекітілген және жұмыс. Бекітілген бөлігі қатарлар мен бағандардың атын жазуға, көлемін өзгертуге арналған. FixedCols и FixedRows қасиеттері арқылы бекітілген бөліктегі бағандар немесе қатарлар санын анықтауға болады. Кестеге ақпаратты енгізу үшін Options – goEditing қасиетінің мәнін true қылып қою керек. Кестедегі әр ұяшықтың нөмірі бар, ол 2 сан арқылы анықталады. Мысалы StringGrid1.Cells [1,2] := 'текст'; 2-ші баған мен 3 қатар қиылысуында орналасқан ұяшықта «текст» сөзі шығады. Өйткені қатарлар мен бағандар нөлден бастап нөмірленеді. Кестедегі бағандар санын Colcount, қатарлар санын RowCount қасиеті анықтайды.
Компоненттің негізгі қасиеттері
-
property Col: Longint;
|
Ағымдағы ұяшықтың баған нөмірін қайтарады.
|
property Row: Longing;
|
Ағымдағы ұяшықтың қатар нөмірін қайтарады.
|
property FixedColor: TColor;
|
Бекітілгін бөліктің түсін анықтайды
|
property GridHeight: Integers;
|
Кесте биіктігі
|
property GridLineWidth: Integers;
|
Кесте сызықтарының қалыңдығы
|
property GridWidth: Integers;
|
Кесте ені
|
property Options: TGridOptions;
|
Кесте параметрлерін анықтайды
|
type TScrollStyle = (ssNone,
ssHorizontal, ssVertical,
ssBoth) ;
|
Айналдыру жолақтарын анықтайды: ssNone -жоқ; ssHorizontal – кестеде көлденең айналдыру жолағы пайда болады.
|
goRangeSelect
|
Бірнеше ұяшықты ерекшелеуге мүмкіндік береді. Егер goEdit = true болса онда істемейді.
|
TstringGrid компоненті екі өлшемді жиымдарды өңдеуге өте ыңғайлы.
Мысал 1.
X[5,4] жиымы берілген. 5-тен кіші элементтердің бәрін 1-мен алмастыратын бағдарлама құр.
Бізге 5-қатар және 4-бағаннан тұратын кесте керек. Пішінге TStringGrid компонентін орналастырып қасиеттерін төмендегідей қылып қой:
-
Қасиеттері
|
Мәні
|
name
|
S1
|
FixedCols
|
0
|
FixedRows
|
0
|
Colcount
|
4
|
RowCount
|
5
|
Options – goEditing
|
true
|
Батырманы шерту оқиғасына жазылатын программа коды:
procedure TU12_1.Button1Click(Sender: TObject);
var x: array[0..4,0..3] of integer; {жиымды хабарлау}
i,j : integer;
begin
for i:=0 to 4 do
for j:=0 to 3 do
x[i,j]:= strtoint(s1.Cells[j,i]); {кестеге енгізілген сандарды жиымға түсіру.}
{назар аударыңыз, жиымда бірінші қатар, екінші баған жазылса, кестеде бірінші баған, екінші қатар жазылады. }
for i:=0 to 4 do
for j:=0 to 3 do
if x[i,j]<5 then x[i,j]:=1; { 5-тен кіші сандарды 1-мен алмастыру. }
for i:=0 to 4 do
for j:=0 to 3 do
s1.Cells[j,i]:=inttostr(x[i,j]); {жиымдағы сандарды кестеге түсіру.}
Тапсырмалар
1. В[1..4, 1..3] жиымы берілген. Әр элементті өзінің квадратымен алмастыратын бағдарлама құр.
2. А[1..5, 1..3] жиымы берілген. Теріс элементтерінің индекстерін Memo өрісіне шығарыңыз.
3. С[1..5, 1..3] жиымы берілген. Әр баған және әр қатар элементтерінің қосындысын анықта.
4. В[1..5, 1..5] квадраттық матрицасы берілген. Бас диагоналда орналасқан элементтер көбейтіндісін анықта.
5. С[1..5, 1..5] квадраттық матрицасы берілген. Бас диагоналдың үстінде орналасқан элементтер қосындысын анықта.
6. D[1..5, 1..5] квадраттық матрицасы берілген. Бас диагоналдың астында орналасқан элементтер қосындысын анықта.
7. Әр элементі өз нөмірінің қосындысына тең C[1..5, 1..5] кестесмін жаса.
8. А[1..4, 1..5] жиымы берілген. Әр бағанның арифметикалық ортасын анықта.
9. B[1..5,1..6] жиымы берілген. Бірінші және соңғы баған элементтерінің орнын ауыстыр.
10. C[1..5,1..6] жиымы берілген. Әр қатардың макисмал элементтерінің минималын анықта.
5>