This repository has been archived on 2024-12-25. You can view files and clone it, but cannot push or open issues or pull requests.
2023-06-20 21:49:58 +03:00

91 lines
3.1 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
{$resource 'Open.png'}
{$resource 'Save.png'}
uses System.Windows.Forms;
const
TextFileExt = 'txt';
TextFileFilter = 'Текстовые файлы (*.'+TextFileExt+')|*.'+TextFileExt;
var
myForm: Form;
TextBox1: TextBox;
procedure SaveFile(FileName: string);
begin
//Создаем файловый поток с кодировкой Windows 1251, необходимо для корректного сохранения русских букв
var f := new System.IO.StreamWriter(FileName, false, System.Text.Encoding.Default);
f.Write(TextBox1.Text);
f.Close;
end;
procedure OpenFile(FileName: string);
begin
//Создаем файловый поток с кодировкой Windows 1251, необходимо для корректного чтения русских букв
var f := new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
TextBox1.Text := f.ReadToEnd;
f.Close;
end;
procedure FormClose(sender: object; args: System.EventArgs);
begin
myForm.Close;
end;
procedure MenuSaveClick(sender:object; args:System.EventArgs);
begin
//Диалог для выбора файла
var sd := new SaveFileDialog;
//Расширение поумолчанию
sd.DefaultExt := TextFileExt;
//Фильтр для диалга
sd.Filter := TextFileFilter;
if sd.ShowDialog=DialogResult.OK then
//если результат выполнения sd.ShowDialog это нажатие кнопки подтверждения то
SaveFile(sd.FileName);
end;
procedure MenuOpenClick(sender:object; args:System.EventArgs);
begin
var sd := new OpenFileDialog;
sd.DefaultExt := TextFileExt;
sd.Filter := TextFileFilter;
if sd.ShowDialog = DialogResult.OK then
OpenFile(sd.FileName);
end;
begin
myForm := new Form;
myForm.Text := 'Простой текстовый редактор';
TextBox1 := new TextBox;
TextBox1.Multiline := True;
TextBox1.Height := 100;
TextBox1.Dock := DockStyle.Fill;
//Полосы прокрутки
TextBox1.ScrollBars := ScrollBars.Both;
//Устанавливаем шрифт
TextBox1.Font := new System.Drawing.Font('Courier New',10);
myForm.Controls.Add(TextBox1);
//Создаем меню
var toolStrip1 := new ToolStrip;
toolStrip1.GripStyle := System.Windows.Forms.ToolStripGripStyle.Hidden;
var miFile := new ToolStripMenuItem('Файл');
miFile.DropDownItems.Add(new ToolStripMenuItem('Открыть', new System.Drawing.Bitmap(GetResourceStream('Open.png')),MenuOpenClick));
miFile.DropDownItems.Add(new ToolStripMenuItem('Сохранить как...',new System.Drawing.Bitmap(GetResourceStream('Save.png')),MenuSaveClick));
miFile.DropDownItems.Add(new ToolStripMenuItem('Выход',nil,FormClose));
toolStrip1.Items.Add(miFile);
myForm.Controls.Add(toolStrip1);
//Посмотрим в аргументы командной строки
//Если их количество = 1, то открываем
if CommandLineArgs.Length = 1 then
OpenFile(CommandLineArgs[0]);
Application.Run(myForm);
end.