- •Лабораторная работа № 2
- •Лабораторная работа № 3 Разработка приложений для обработки данных с использованием графики в Delphi
- •Лабораторная работа № 4 Работа с графикой в Delphi
- •Лабораторная работа № 5 Разработка элементов интерфейса приложений
- •Лабораторная работа № 7 Работа с текстом и рисованной таблицей
- •Лабораторная работа № 8 Работа с процедурами, функциями и файлами
Лабораторная работа № 7 Работа с текстом и рисованной таблицей
Цель работы: изучение основ работы с текстом и рисованной таблицей.
Содержание: разработка приложения для работы с текстом.
13. Вырезать, Копировать, Вставить. Текст вставлять в окно редактора Меmо, которое нужно поместить на форму. На форме поместить кнопку Слова. Вывести слова наибольшей длины.
unit Unit1;
interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, StdActns, ActnList, ComCtrls, ToolWin, ImgList,
ExtActns;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
help1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Memo1: TMemo;
PopupMenu1: TPopupMenu;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N14: TMenuItem;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
FileExit1: TFileExit;
ImageList1: TImageList;
FontDialog1: TFontDialog;
N20: TMenuItem;
N21: TMenuItem;
FontDialog2: TFontDialog;
RichEditBold1: TRichEditBold;
Button1: TButton;
Memo2: TMemo;
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Math;
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
begin
if OpenDialog1.Execute=true then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
if SaveDialog1.Execute=true then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Application.MessageBox('Выполнила Тусова Александра -> Tu$','Текстовый редактор');
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption:='Тусова Александра -> Tu$';
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Caption:='Тусова Александра -> Tu$';
end;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
if FontDialog1.execute=true then
begin
memo1.Font:=FontDialog1.Font;
end;
end;
procedure TForm1.N21Click(Sender: TObject);
begin
if fontdialog1.Execute=true then
begin
Memo1.Font:=FontDialog1.Font;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
//Множество разделителей слов.
D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
S, StrW, StrWMax : String;
Q: array [1..100] of String;
i,j, k,Pos1, Len, LenW, LenWMax, Cnt,dlin,dlin_1 : Integer;
begin
//Исходный текст.
S := Memo1.Text;
//Поиск координат первого из самых длинных слов.
Len := Length(S);
LenWMax := 0;
StrWMax := '';
Cnt := 0;
Pos1 := 0;
k:=2;
for i := 1 to Len do begin
//Пропускаем разделители.
if S[i] in D then Continue;
//Отслеживаем начало слова.
if (i = 1) or (S[i - 1] in D) then Pos1 := i;
//Отслеживаем конец слова.
if (i = Len) or (S[i + 1] in D) then begin
//Вычисляем длину слова.
LenW := i - Pos1 + 1;
//Выделяем слово.
StrW := Copy(S, Pos1, LenW);
dlin:=length(StrW);
dlin_1:=length(StrWMax);
//Если слово совпадает с текущим наибольшим по длине, тогда увеличиваем счётчик.
if dlin= dlin_1 then
begin
Cnt := Cnt + 1;
//Добавляем в масив новые слова
Q[k]:=StrW;
k:=k+1;
end
else if LenW > LenWMax then begin
//Если это очередное слово длиннее всех ранее найденных слов, то
//запоминаем его, его длину и сбрасываем счётчик.
StrWMax := StrW;
LenWMax := LenW;
Cnt := 1;
//Обнуление масива
for j:=1 to k do
Q[j]:='';
Q[1]:=StrWMax;
k:=2;
// SetLength(Q,0);
end;
end;
end;
//Показываем результат.
if StrWMax <> '' then begin
ShowMessage(
'Количество самых длинных слов в тексе' + IntToStr(Cnt) + ' раз.'
);
// if k>2 then Memo2.Lines.add(StrWmax);
for i:=1 to k do begin
Memo2.Lines.add(Q[i]);
end;
end else begin
ShowMessage('В строке нет слов.');
end;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
end;
end.