Текстовый редактор (Memo)
Сейчас я покажу пример на Delphi, как можно создать простой текстовый редактор похожий на Блокнот, с использованием компонента Memo.
Для нашего текстового редактора мы будем использовать компонент Memo. И так, компонент Memo на форме, очищаем его от стандартного текста Memo1 Memo.Lines.Clear, растягиваем на всю форму Memo.Align := alClient, теперь делаем нашему текстовому редактору вертикальные и горизонтальные полосы прокрутки Memo.ScrollBars := ssBoth и уберём границы Memo.BorderStyle := bsNone. При запуске наш текстовый редактор должен быть на весь экран, для этого в нашей форме меняем свойство Form1.WindowState := wsMaximized. Добавим нашему редактору меню, бросьте на форму компонент MainMenu и кликните на него 2 раза. Сперва сделаем 1 вкладку "Файл". Копию Блокнота мы делать не будем, поэтому на первой вкладке сразу добавим пункт "Открыть". Ну уже понятно что нам нужен компонент OpenDialog. Бросаем его на форму и переходим на пункт "Открыть" и кликаем по нему, получится:
procedure TForm1.N2Click(Sender: TObject);
begin
end;
|
Вставляем между begin и end;
if OpenDialog.Execute then
EditFile := Form1.OpenDialog.FileName;
Memo.Lines.LoadFromFile(EditFile);
Form1.Caption := ExtractFileName(EditFile)+' - Блокнот';
|
Теперь наш текстовый редактор может открывать текстовые файлы. Для красивости можно сделать в нашем редакторе небольшой отступ сверху и слева, код:
procedure TForm1.FormCreate(Sender: TObject);
var
Rect: TRect;
begin
SendMessage(Memo.Handle, EM_GETRECT, 0, LongInt(@Rect));
Rect.Left:= 4;
Rect.Top:= 4;
SendMessage(Memo.Handle, EM_SETRECT, 0, LongInt(@Rect));
Memo.Refresh;
Form1.Caption := 'Безымянный - Блокнот';
end;
|
И поменяем шрифт как в Блокноте, Memo.Font.Name := 'Lucida Console'; и Memo.Font.Size := 10; Вот теперь мы становимся похожим на стандартный текстовый редактор под названием Блокнот :) Ну теперь создадим вкладку "Сохранить" и в помощь нам приходит компонент SaveDialog. Но сперва добавим в var глобальную переменную EditFile: String;. Теперь сама процедура сохранения:
procedure TForm1.N3Click(Sender: TObject);
begin
if EditFile='' then
if SaveDialog.Execute then
begin
EditFile := SaveDialog.FileName;
Case Form1.SaveDialog.FilterIndex of
1 : EditFile:=ChangeFileExt(EditFile,'.txt');
end;
end;
(ActiveMDIChild as TForm);
Memo.Lines.SaveToFile(EditFile);
(ActiveMDIChild as TForm).Caption := EditFile;
Memo.Lines.SaveToFile(EditFile);
end;
|
Теперь создаём процедуру "Сохранить как...":
procedure TForm1.N4Click(Sender: TObject);
begin
if SaveDialog.Execute then
begin
EditFile := SaveDialog.FileName;
Case Form1.SaveDialog.FilterIndex of
1 : EditFile:=ChangeFileExt(EditFile,'.txt');
end;
end;
(ActiveMDIChild as TForm);
Memo.Lines.SaveToFile(EditFile);
(ActiveMDIChild as TForm).Caption := EditFile;
end;
|
Уже наш текстовый редактор может открывать файл, сохранять файл и сохранять как. Ну раз у нас это текстовый редактор, значит мы должны открывать текстовые файлы. Нажимаем на OpenDialog переходим и Object Inspector -> Filter. В таблице Filter Name пишем Текстовые документы (*.txt), в Filter пишем *.txt. Ниже в таком же порядке: Все файлы и *.*. Тоже самое проделайте с SaveDialog. Рано конечно но всё же создадим вкладку "Выход" и код:
procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;
|
Создаём новую вкладку "Правка" и пункты: Вырезать, Копировать, Вставить, Удалить и Выделить всё.
Вырезать
Memo.CutToClipboard; |
Копировать
Memo.CopyToClipboard; |
Вставить
Memo.PasteFromClipboard; |
Удалить
Memo.ClearSelection; |
Выделить всё
Memo.SelectAll; |