Выбрать главу

Обработчик события OnClick для пункта Формат→Шрифт:

procedure TForm1.N10Click(Sender: TObject);

begin

 //Определяем все настройки шрифта и отображаем их

 //в диалоговом окне

 FontDialog1.Font.Color:= Memo1.Font.Color; //цвет шрифта

 FontDialog1.Font.Style:= Memo1.Font.Style; //стиль

 FontDialog1.Font.Size:= Memo1.Font.Size; //размер

 FontDialog1.Font.Charset:= Memo1.Font.Charset; //кодировка

 FontDialog1.Font.Name:= Memo1.Font.Name; //название шрифта

 if FontDialog1.Execute then

 begin // применяем все выбранные настройки

  Memo1.Font.Color:= FontDialog1.Font.Color;

  Memo1.Font.Style:= FontDialog1.Font.Style;

  Memo1.Font.Size:= FontDialog1.Font.Size;

  Memo1.Font.Charset:= FontDialog1.Font.Charset;

  Memo1.Font.Name:= FontDialog1.Font.Name;

 end;

end;

Перед тем как открыть диалоговое окно выбора шрифта, мы определяем все текущие настройки шрифта, чтобы затем отобразить их в диалоговом окне. После того как пользователь нажал в этом окне кнопку OK, все выбранные настройки шрифта применяются к полю Memo.

Теперь осталось только реализовать автоматическую загрузку файлов, связанных с нашим блокнотом в файл-менеджерах. Для этого создадим обработчик события OnCreate главной формы:

procedure TForm1.FormCreate(Sender: TObject);

var

 Str: String; //путь к параметру

 i: Integer;

begin

 xr_num:= '2'; //по умолчанию смещение = 2

 if (ParamCount > 0) then begin

  Str:= ParamStr(1); //Формируем путь к аргументу

  for i:=2 to ParamCount do Str:= Str + ' ' + ParamStr(i);

 end;

 {Если на вход программы поступили параметры, то отображаем содержимое соответствующего файла в поле Memo}

 if Str <> '' then Memo1.Lines.LoadFromFile(str);

end;

Здесь мы задаем начальное значение для смещения и проверяем, поступили ли на вход программы какие-либо параметры. Если да, то узнаем путь к файлу и отображаем его содержимое в поле Memo. Пример шифрования со смещением 10 представлен на рис. 7.3.

Рис. 7.3. Пример шифрования со смещением 10

Полный исходный код модуля

Полный исходный код модуля программы Блокнот-шифровальщик представлен в листинге 7.1.

Листинг 7.1. Модуль программы Блокнот-шифровальщик

unit Unit1

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls Forms, Dialogs, StdCtrls, Menus;

type TForm1 = class(TForm)

 Memo1: TMemo;

 menu1: TMainMenu;

 File1: TMenuItem;

 Edit1: TMenuItem;

 N1: TMenuItem;

 N2: TMenuItem;

 N3: TMenuItem;

 N4: TMenuItem;

 N5: TMenuItem;

 N7: TMenuItem;

 N8: TMenuItem;

 OpenDialog1: TOpenDialog;

 SaveDialog1: TSaveDialog;

 FontDialog1: TFontDialog;

 N6: TMenuItem;

 N9: TMenuItem;

 N10: TMenuItem;

 XoR1: TMenuItem;

 procedure N1Click(Sender: TObject);

 procedure N2Click(Sender: TObject)

 procedure N4Click(Sender: TObject)

 procedure N8Click(Sender: TObject)

 procedure N5Click(Sender: TObject)

 procedure N9Click(Sender: TObject);

 procedure N10Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure XoR1Click(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;

var

 Form1: TForm1;

 xr_num: string;

implementation

{$R *.dfm}

procedure TForm1.N1Click(Sender: TObject);

begin

 //начинаем обзор с текущей папки

 OpenDialog1.InitialDir:= GetCurrentDir;

 if not OpenDialog1.Execute then ShowMessage('File not selected!')

 else //загружаем выбранный файл в Memo

  Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

procedure TForm1.N2Click(Sender: TObject);

begin

 SaveDialog1.InitialDir:= GetCurrentDir;

 if not SaveDialog1.Execute then ShowMessage('File not saved!')

 else //сохраняем в файл

  Memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N4Click(Sender: TObject);

begin

 Close; //выход из программы

end;

procedure TForm1.N8Click(Sender: TObject);

begin

 Memo1.lines.Clear; //очистка Memo

end;

procedure TForm1.N5Click (Sender: TObject);

var

 xr: string; //зашифрованный текст

 i: integer; //счетчик цикла begin

 for i:=1 to Length(Memo1.Text) do

 begin //перебираем каждый символ в тексте

  //выполняем указанное пользователем смещение

  xr:= xr + Chr(Ord(Memo1.Text[i]) xor StrToInt(xr_num));

 end;

 //заменяем оригинальный текст на зашифрованный

 Memo1.Text := xr;

end;

procedure TForm1.N9Click(Sender: TObject);

begin

 if N9.Checked then //если флажок установлен

 begin

  N9.Checked:= False; //сбрасываем флажок

  //Отображаем горизонтальную полосу прокрутки

  Memo1.ScrollBars:= ssBoth;

 end

 else begin //если флажок не установлен

  N9.Checked:= True; //устанавливаем флажок

  //убираем горизонтальную полосу прокрутки