unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ExtCtrls, StdCtrls, ComCtrls, ActnList,
RichEdit, Menus, StdActns, ExtActns;
type
TMain = class(TForm)
ImageList1: TImageList;
RichEdit1: TRichEdit;
StatusBar1: TStatusBar;
ColorDialog1: TColorDialog;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
SearchFind1: TSearchFind;
SearchFindNext1: TSearchFindNext;
SearchReplace1: TSearchReplace;
SearchFindFirst1: TSearchFindFirst;
RichEditBold1: TRichEditBold;
RichEditItalic1: TRichEditItalic;
RichEditUnderline1: TRichEditUnderline;
RichEditStrikeOut1: TRichEditStrikeOut;
RichEditBullets1: TRichEditBullets;
RichEditAlignLeft1: TRichEditAlignLeft;
RichEditAlignRight1: TRichEditAlignRight;
RichEditAlignCenter1: TRichEditAlignCenter;
FontEdit1: TFontEdit;
Newdoc: TAction;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
FileExit1: TFileExit;
Printdoc: TAction;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Exit1: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N21: TMenuItem;
N26: TMenuItem;
Colfont: TAction;
N27: TMenuItem;
PopupMenu1: TPopupMenu;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
N40: TMenuItem;
N41: TMenuItem;
N42: TMenuItem;
N43: TMenuItem;
N44: TMenuItem;
procedure FileOpen1OpenDialogCanClose(Sender: TObject;
var CanClose: Boolean);
procedure FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean);
procedure FontEdit1Accept(Sender: TObject);
procedure PrintdocExecute(Sender: TObject);
procedure NewdocExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ShowHint(Sender: TObject);
procedure RichEditChange(Sender: TObject);
procedure RichEdit1SelectionChange(Sender: TObject);
procedure ColfontExecute(Sender: TObject);
procedure SearchFind1FindDialogClose(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FUpdating: Boolean;
function CurrText: TTextAttributes;
procedure UpdateCursorPos;
procedure SetModified(Value: Boolean);
public
{ Public declarations }
end;
var
Main: TMain;
implementation
resourcestring
sColRowInfo = 'Line: %3d Col: %3d';
sModified = 'Modified';
sUntitled = 'Untitled';
{$R *.dfm}
function TMain.CurrText: TTextAttributes; // Применение атрибутов к тексту
begin
if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes
else Result := RichEdit1.DefAttributes;
end;
procedure SetFileName(const FileName: String); // Установка имени файла
var FFileName: string;
begin
FFileName := FileName;
Main.Caption := Format('%s - %s', [ExtractFileName(FileName), Application.Title]);
end;
procedure TMain.FormCreate(Sender: TObject); // Создаём форму
begin
Application.OnHint := ShowHint;
FileOpen1.Dialog.InitialDir := ExtractFilePath(ParamStr(0));
FileSaveAs1.Dialog.InitialDir := FileOpen1.Dialog.InitialDir;
end;
procedure TMain.FileOpen1OpenDialogCanClose(Sender: TObject; // Загружаем файл
var CanClose: Boolean);
begin
RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);
SetFileName(FileOpen1.Dialog.FileName);
end;
procedure TMain.FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean); // Сохраняем файл
begin
RichEdit1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName+'.rtf');
end;
procedure TMain.FontEdit1Accept(Sender: TObject); // Выбрали шрифт
begin
RichEdit1.Font:= FontEdit1.Dialog.Font;
end;
procedure TMain.PrintdocExecute(Sender: TObject); // Распечатываем текст
begin
RichEdit1.Print('');
end;
procedure TMain.NewdocExecute(Sender: TObject); // Создали новый документ
begin
RichEdit1.Lines.Clear;
SetFileName(sUntitled);
end;
procedure TMain.ShowHint(Sender: TObject); // Показ информации в статус баре
begin
if Length(Application.Hint) > 0 then
begin
StatusBar1.SimplePanel := True;
StatusBar1.SimpleText := Application.Hint;
end
else StatusBar1.SimplePanel := False;
end;
procedure TMain.FormShow(Sender: TObject); // Перед показом формы сделать
begin
UpdateCursorPos;
RichEditChange(nil);
RichEdit1.SetFocus;
end;
procedure TMain.UpdateCursorPos; // Обновление позиции курсора
var
CharPos: TPoint;
begin
CharPos.Y := SendMessage(RichEdit1.Handle, EM_EXLINEFROMCHAR, 0,
RichEdit1.SelStart);
CharPos.X := (RichEdit1.SelStart -
SendMessage(RichEdit1.Handle, EM_LINEINDEX, CharPos.Y, 0));
Inc(CharPos.Y);
Inc(CharPos.X);
StatusBar1.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
end;
procedure TMain.RichEditChange(Sender: TObject); // При изменениях в ричэдите делаем
begin
SetModified(RichEdit1.Modified);
end;
procedure TMain.SetModified(Value: Boolean); // Установка модификации
begin
if Value then StatusBar1.Panels[1].Text := sModified
else StatusBar1.Panels[1].Text := '';
end;
procedure TMain.RichEdit1SelectionChange(Sender: TObject); // При выборе текста делаем
begin
UpdateCursorPos;
end;
procedure TMain.ColfontExecute(Sender: TObject); // Выбор цвета шрифта
begin
If not ColorDialog1.Execute then exit
else begin
if FUpdating then Exit;
CurrText.Color:=ColorDialog1.Color;
end;
end;
procedure TMain.SearchFind1FindDialogClose(Sender: TObject); // Закрытие диалога поиска
begin
Richedit1.SetFocus;
end;
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
end.
function TMain.CurrText: TTextAttributes; // Применение атрибутов к тексту
begin
if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes // Если в RichEdit выделен текст присвоить атрибуты
else Result := RichEdit1.DefAttributes;
end;
procedure SetFileName(const FileName: String); // Установка имени файла
begin
Main.Caption := Format('%s - %s', [ExtractFileName(FileName), Application.Title]); // Присвоение заголовку окна текущее имя файла
end;
procedure TMain.FormCreate(Sender: TObject); // Создаём форму
begin
Application.OnHint := ShowHint; // Разрешение отображение подсказок
FileOpen1.Dialog.InitialDir := ExtractFilePath(ParamStr(0)); // Присвоение начальной папки для диалогов открытия и сохранения файлов
FileSaveAs1.Dialog.InitialDir := FileOpen1.Dialog.InitialDir;
end;
procedure TMain.FileOpen1OpenDialogCanClose(Sender: TObject; // Загружаем файл
var CanClose: Boolean);
begin
RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName); // Загружаем файл в RichEdit
SetFileName(FileOpen1.Dialog.FileName); // Присваиваем имя открытого файла в заголовке окна приложения
end;
procedure TMain.FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean); // Сохраняем файл
begin
RichEdit1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName+'.rtf'); // Сохранили содержимое RichEdit в файл
end;
procedure TMain.FontEdit1Accept(Sender: TObject); // Выбрали шрифт
begin
RichEdit1.Font:= FontEdit1.Dialog.Font; // Присвоили шрифту RichEdit выбранный шрифт
end;
procedure TMain.PrintdocExecute(Sender: TObject); // Распечатываем текст
begin
RichEdit1.Print('');
end;
procedure TMain.NewdocExecute(Sender: TObject); // Создали новый документ
begin
RichEdit1.Lines.Clear; // Отчистили RichEdit
SetFileName(sUntitled); // Присвоили заголовку окна название файла неизвестный
end;
procedure TMain.ShowHint(Sender: TObject); // Показ информации в статус баре
begin
if Length(Application.Hint) > 0 then // Если длина подсказки больше нуля выводим подсказку в статусбар
begin
StatusBar1.SimplePanel := True;
StatusBar1.SimpleText := Application.Hint;
end
else StatusBar1.SimplePanel := False;
end;
procedure TMain.FormShow(Sender: TObject); // Перед показом формы сделать
begin
UpdateCursorPos; // Обновили позицию курсора
RichEditChange(nil); // Установили изменения в RichEdit на ноль
RichEdit1.SetFocus; // Фокус ввода в RichEdit
end;
procedure TMain.UpdateCursorPos; // Обновление позиции курсора
var
CharPos: TPoint;
begin
CharPos.Y := SendMessage(RichEdit1.Handle, EM_EXLINEFROMCHAR, 0,
RichEdit1.SelStart); // Получили позицию курсора
CharPos.X := (RichEdit1.SelStart -
SendMessage(RichEdit1.Handle, EM_LINEINDEX, CharPos.Y, 0)); // Послали сообщение в RichEdit
Inc(CharPos.Y);
Inc(CharPos.X);
StatusBar1.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]); // Отобразили положение курсора в статусбаре
end;
procedure TMain.RichEditChange(Sender: TObject); // При изменениях в ричэдите делаем
begin
SetModified(RichEdit1.Modified); // Установить модификацию в RichEdit
end;
procedure TMain.SetModified(Value: Boolean); // Установка модификации
begin
if Value then StatusBar1.Panels[1].Text := sModified
else StatusBar1.Panels[1].Text := '';
end;
procedure TMain.RichEdit1SelectionChange(Sender: TObject); // При выборе текста обновляем позицию курсора
begin
UpdateCursorPos;
end;
procedure TMain.ColfontExecute(Sender: TObject); // Выбор цвета шрифта
begin
If not ColorDialog1.Execute then exit // Если диалог выбора цвета не открылся вышли из процедуры
else begin
if FUpdating then Exit;
CurrText.Color:=ColorDialog1.Color; // Присвоили цвет тексту
end;
end;
procedure TMain.SearchFind1FindDialogClose(Sender: TObject); // Закрытие диалога поиска
begin
Richedit1.SetFocus; // Фокус ввода в RichEdit
end;
procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree; // Освободили ресурсы занимаемые программой в памяти
end;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.