Delphi-Help

  • Increase font size
  • Default font size
  • Decrease font size

Текстовый редактор (Memo)

Оцените материал
(2 голосов)

Текстовый редактор (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;

 

Другие материалы в этой категории: Многострочные окна редактирования Memo и RichEdit »

Авторизация



Счетчики