
- •Задание:
- •Структурная схема приложения:
- •Функциональная схема приложения
- •Структура интерфейса окна
- •Используемые компоненты.
- •Главное окно
- •Подсказки
- •О программе
- •Настройка цвета шрифта
- •Настройки иконки
- •Настройки шрифта
- •Вставка специального символа
- •Инструкция для пользователей текстового редактора
- •Данная функция доступна только если выделен какой-то фрагмент текста!
Главное окно
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ClipBrd, Menus, StdCtrls, ImgList, ComCtrls, ToolWin, ActnList,
ExtCtrls, RichEdit,IniFiles, Registry, ShellApi, XPMan, Spin;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ImageList1: TImageList;
Memo1: TRichEdit;
ActionList1: TActionList;
Bold: TAction;
Italic: TAction;
Underline: TAction;
Timer1: TTimer;
MainMenu1: TMainMenu;
N4: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
FontDialog1: TFontDialog;
N21: TMenuItem;
N22: TMenuItem;
Sozdat: TAction;
Shrift: TAction;
Otkrit: TAction;
Sohranit: TAction;
Sohranit_kak: TAction;
Vihod: TAction;
Ob_avtore: TAction;
Kopirovat: TAction;
Virezat: TAction;
Vstavit: TAction;
Otmenit: TAction;
Videlit_vse: TAction;
Udalit: TAction;
N6: TMenuItem;
StatusBar1: TStatusBar;
N23: TMenuItem;
N24: TMenuItem;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
Style: TAction;
N25: TMenuItem;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
Hints: TAction;
N26: TMenuItem;
FindDialog1: TFindDialog;
ReplaceDialog1: TReplaceDialog;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N110: TMenuItem;
N111: TMenuItem;
N112: TMenuItem;
N113: TMenuItem;
N114: TMenuItem;
N115: TMenuItem;
N116: TMenuItem;
N117: TMenuItem;
N118: TMenuItem;
N119: TMenuItem;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton21: TToolButton;
PoPup: TAction;
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;
N45: TMenuItem;
ControlBar1: TControlBar;
ToolBar2: TToolBar;
ToolBar3: TToolBar;
ToolBar4: TToolBar;
ToolBar5: TToolBar;
PopupMenu2: TPopupMenu;
N46: TMenuItem;
ToolBar6: TToolBar;
ComboBox1: TComboBox;
SpinEdit1: TSpinEdit;
ColorBox1: TColorBox;
ToolButton15: TToolButton;
ToolBar7: TToolBar;
Label1: TLabel;
N47: TMenuItem;
ColorBox2: TColorBox;
Label2: TLabel;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure VihodExecute(Sender: TObject);
procedure BoldExecute(Sender: TObject);
procedure ItalicExecute(Sender: TObject);
procedure UnderlineExecute(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SozdatExecute(Sender: TObject);
procedure OtkritExecute(Sender: TObject);
procedure SohranitExecute(Sender: TObject);
procedure Sohranit_kakExecute(Sender: TObject);
procedure KopirovatExecute(Sender: TObject);
procedure VirezatExecute(Sender: TObject);
procedure VstavitExecute(Sender: TObject);
procedure OtmenitExecute(Sender: TObject);
procedure Videlit_vseExecute(Sender: TObject);
procedure UdalitExecute(Sender: TObject);
procedure ShriftExecute(Sender: TObject);
procedure Ob_avtoreExecute(Sender: TObject);
procedure Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormResize(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure StyleExecute(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton14Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure HintsExecute(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N27Click(Sender: TObject);
procedure FindDialog1Find(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure ReplaceDialog1Find(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
procedure N29Click(Sender: TObject);
procedure N30Click(Sender: TObject);
procedure ToolButton18Click(Sender: TObject);
procedure ToolButton19Click(Sender: TObject);
procedure ToolButton20Click(Sender: TObject);
procedure ToolButton21Click(Sender: TObject);
procedure N110Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure PoPupExecute(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N34Click(Sender: TObject);
procedure N36Click(Sender: TObject);
procedure N40Click(Sender: TObject);
procedure N41Click(Sender: TObject);
procedure N39Click(Sender: TObject);
procedure N42Click(Sender: TObject);
procedure N44Click(Sender: TObject);
procedure N45Click(Sender: TObject);
procedure N46Click(Sender: TObject);
procedure ComboBox1Select(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit1KeyPress(Sender: TObject; var Key: Char);
procedure ColorBox1Select(Sender: TObject);
procedure N47Click(Sender: TObject);
procedure ColorBox2Select(Sender: TObject);
private
n:integer;
SPos:integer;
cancel,Exec:boolean;
width_down:boolean;
page:integer;
{ Private declarations }
public
Date_string:string;
Time_string:string;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit_sss, Unit_color, Unit_ten, Unit_icons, Unit4,
Unit5, Unit6, Unit7, Unit8, Unit9;
{$R *.dfm}
procedure TForm1.N1Click(Sender: TObject);
begin
Memo1.CutToClipBoard;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Memo1.CopyToClipBoard;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Memo1.PasteFromClipBoard;
end;
procedure TForm1.ItalicExecute(Sender: TObject);
begin
if fsItalic in Memo1.SelAttributes.Style then
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style-[fsItalic];
ToolButton2.Down:=false
end
else
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style+[fsItalic];
ToolButton2.Down:=true;
end;
end;
procedure TForm1.BoldExecute(Sender: TObject);
begin
if fsBold in Memo1.SelAttributes.Style then
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style-[fsBold];
ToolButton1.Down:=false
end
else
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style+[fsBold];
ToolButton1.Down:=true;
end;
end;
procedure TForm1.UnderlineExecute(Sender: TObject);
begin
if fsUnderline in Memo1.SelAttributes.Style then
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style-[fsUnderline];
ToolButton3.Down:=false
end
else
begin
Memo1.SelAttributes.Style:=Memo1.SelAttributes.Style+[fsUnderline];
ToolButton3.Down:=true;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Memo1.Paragraph.Alignment=taleftJustify then
ToolButton20.Down:=true
else ToolButton20.Down:=false;
if Memo1.Paragraph.Alignment=tacenter then ToolButton18.Down:=true
else ToolButton18.Down:=false;
if Memo1.Paragraph.Alignment=taRightJustify then ToolButton19.Down:=true
else ToolButton19.Down:=false;
if width_down then ToolButton21.Down:=true
else ToolButton21.Down:=false;
StatusBar1.Panels[5].Text:=ExtractFileName(OpenDialog1.FileName);
StatusBar1.Panels[4].Text:='Строка '+IntToStr(
Memo1.CaretPos.Y+1) + ':'+
'Позиция '+IntToStr (Memo1.CaretPos.X+1);
if (GetKeyState(VK_INSERT)=0) then
StatusBar1.Panels[2].Text:='Замена'
else
StatusBar1.Panels[2].Text:='Вставка';
if (GetKeyState(VK_CAPITAL)=0) then
StatusBar1.Panels[1].Text:='Пописные'
else
StatusBar1.Panels[1].Text:='Заглавные';
StatusBar1.Panels[0].Text:=FormatDateTime(Time_string,Time);
StatusBar1.Panels[7].Text:=FormatDateTime(Date_string,Date);
if fsBold in memo1.SelAttributes.Style then
ToolButton1.Down:=true
else
ToolButton1.Down:=false;
if fsItalic in Memo1.SelAttributes.Style then
ToolButton2.Down:=true
else
ToolButton2.Down:=false;
if fsUnderline in Memo1.SelAttributes.Style then
ToolButton3.Down:=true
else
ToolButton3.Down:=false;
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
StatusBar1.Panels[8].Text:='Английская'
else StatusBar1.Panels[8].Text:='Русская'
end;
procedure TForm1.SozdatExecute(Sender: TObject);
begin
if Memo1.Modified=true then
begin
case MessageDlg('Файл изменён.Хотите сохранить?',mtConfirmation,mbYesNoCancel,0) of
mryes:
begin
with SaveDialog1,Memo1 do
if Execute then
begin
Lines.SaveToFile(FileName);
OpenDialog1.FileName:=FileName;
Memo1.Lines.Clear;
StatusBar1.Panels[5].Text:='';
Form1.Caption:=('Простейший текстовый редактор');
end;
end
else
begin
Memo1.Lines.Clear;
StatusBar1.Panels[5].Text:='';
end;
Form1.Caption:=('Простейший текстовый редактор');
end;
end
else
begin
Memo1.Lines.Clear;
StatusBar1.Panels[5].Text:='';
end;
Form1.Caption:=('Простейший текстовый редактор');
OpenDialog1.FileName:='';
end;
procedure TForm1.OtkritExecute(Sender: TObject);
var
IniFile:TIniFile;
Path, NameFile, NameFile1, NameFile2: String;
n: boolean;
i, j: integer;
begin
j:=0;
if Memo1.Modified then
SozdatExecute(Sozdat)
else cancel:=true;
if cancel then
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
Memo1.Modified:=false;
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
IniFile:=TIniFile.Create(Path+'FormOptions.ini');
n:=true;
for i:=9 downto 0 do
if OpenDialog1.FileName=IniFile.ReadString('FILES','File'+IntToStr(i),OpenDialog1.FileName) then
begin
n:=false;
j:=i;
end;
if n then
for i:=9 downto 1 do
begin
NameFile:=IniFile.ReadString('FILES','File'+IntToStr(i-1),NameFile);
IniFile.WriteString('FILES','File'+IntToStr(i),NameFile);
end
else
begin
if j>0 then
for i:=j downto 1 do
begin
NameFile2:=IniFile.ReadString('FILES','File'+IntToStr(i-1),NameFile2);
IniFile.WriteString('FILES','File'+IntToStr(i),NameFile2);
end;
end;
IniFile.WriteString('FILES','File0',string(OpenDialog1.FileName));
InIFile.Free;
end;
end;
procedure TForm1.SohranitExecute(Sender: TObject);
begin
if OpenDialog1.FileName<>'' then
begin
Memo1.Lines.SaveToFile(OpenDialog1.FileName);
Exec:=true;
Memo1.Modified:=false;
end
else
Sohranit_kakExecute(Sohranit_kak);
Sohranit.Enabled:=false;
end;
procedure TForm1.Sohranit_kakExecute(Sender: TObject);
var
i:integer;
S_Name:String;
begin
if Memo1.Text<>'' then
begin
SaveDialog1.FileName:=Memo1.Lines.Strings[0]+'*.rtf';
S_Name:=SaveDialog1.FileName;
i:=pos('*',S_Name);
Delete(S_Name,i,1);
SaveDialog1.FileName:=S_Name;
end;
with SaveDialog1, Memo1 do
if Execute then
begin
Exec:=true;
Lines.SaveToFile(FileName);
OpenDialog1.FileName:=FileName;
Memo1.Modified:=false;
end
else begin Exec:=false; SaveDialog1.FileName:='*.rtf' end;
end;
procedure TForm1.KopirovatExecute(Sender: TObject);
begin
Memo1.CopyToClipboard;
end;
procedure TForm1.VirezatExecute(Sender: TObject);
begin
Memo1.CutToClipboard;
end;
procedure TForm1.VstavitExecute(Sender: TObject);
begin
Memo1.PasteFromClipboard;
end;
procedure TForm1.OtmenitExecute(Sender: TObject);
begin
Memo1.Undo;
end;
procedure TForm1.Videlit_vseExecute(Sender: TObject);
begin
Memo1.SelectAll;
end;
procedure TForm1.UdalitExecute(Sender: TObject);
begin
keybd_event(VK_BACK,0,0,0);
end;
procedure TForm1.ShriftExecute(Sender: TObject);
begin
if FontDialog1.Execute then
Memo1.SelAttributes.Assign(FontDialog1.Font);
Memo1.SetFocus;
end;
procedure TForm1.Ob_avtoreExecute(Sender: TObject);
begin
Form7.ShowModal;
end;
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
StatusBar1.Panels[6].Text:=IntToStr((Memo1.CaretPos.Y div 55)+1)+' страница'+' из '+IntToStr(page);
if Key = 13 then
begin
n:=n+1;
Form3.Edit1.Text:=IntToStr(n);
end;
if Memo1.Modified
then StatusBar1.Panels[3].Text := 'Файл изменён'
else StatusBar1.Panels[3].Text := '';
SPos:=Memo1.SelStart;
end;
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Memo1.Modified then
begin
StatusBar1.Panels[3].Text:='Файл изменен';
Sohranit.Enabled:=true;
end
else
begin
StatusBar1.Panels[3].Text:='Файл не изменен';
Sohranit.Enabled:=false;
end;
end;
procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StatusBar1.Panels[6].Text:=IntToStr((Memo1.CaretPos.Y div 55)+1)+' страница'+' из '+IntToStr(page);
StatusBar1.Panels[4].Text:=IntToStr(
Memo1.CaretPos.Y+1) + ':'+
IntToStr (Memo1.CaretPos.X+1);
if Memo1.Modified
then StatusBar1.Panels[3].Text := 'Файл изменён'
else StatusBar1.Panels[3].Text := '';
end;
procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
StatusBar1.Panels[4].Text:=IntToStr(
Memo1.CaretPos.Y+1) + ':'+
IntToStr (Memo1.CaretPos.X+1);
if Memo1.Modified
then StatusBar1.Panels[3].Text := 'Файл изменён'
else StatusBar1.Panels[3].Text := '';
end;
procedure TForm1.FormResize(Sender: TObject);
begin
StatusBar1.Panels[4].Text:=IntToStr(
Memo1.CaretPos.Y+1) + ':'+
IntToStr (Memo1.CaretPos.X+1);
if Memo1.Modified
then StatusBar1.Panels[3].Text := 'Файл изменён'
else StatusBar1.Panels[3].Text := '';
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
var IniFile: TIniFile;
Path:string;
ReginiFile:TreginiFile;
begin
Sohranit.Enabled:=false;
page:=1;
width_down:=false;
n:=1;
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
IniFile:=TIniFile.Create(Path+'project.ini');
Form1.Top:=IniFile.ReadInteger('FORM1','Form1top',Form1.Top);
Form1.Left:=IniFile.ReadInteger('FORM1','Form1Left',Form1.Left);
Form1.Height:=IniFile.ReadInteger('FORM1','Form1Height',Form1.Height);
Form1.Width:=IniFile.ReadInteger('FORM1','Form1Width',Form1.Width);
IniFile.Free;
RegIniFile:= tReginiFile.Create('Galkina');
Form1.Top:=RegIniFile.ReadInteger('FORM1','Form1top',Form1.Top);
Form1.Left:=RegIniFile.ReadInteger('FORM1','Form1Left',Form1.Left);
Form1.Height:=RegIniFile.ReadInteger('FORM1','Form1Height',Form1.Height);
Form1.Width:=RegIniFile.ReadInteger('FORM1','Form1Width',Form1.Width);
RegIniFile.Free;
Udalit.Enabled:=false;
Videlit_vse.Enabled:=Udalit.Enabled;
Otmenit.Enabled:=false;
Date_String:='dd.mm.yyyy';
Time_String:='hh:nn:ss';
ComboBox1.Items:=Screen.Fonts;
ComboBox1.ItemIndex:=327;
end;
procedure TForm1.ToolButton9Click(Sender: TObject);
begin
Form_sss.ShowModal;
end;
procedure TForm1.StyleExecute(Sender: TObject);
begin
Form_sss.ShowModal;
end;
procedure TForm1.ToolButton10Click(Sender: TObject);
begin
Form_color.ShowModal;
end;
procedure TForm1.ToolButton11Click(Sender: TObject);
begin
Memo1.Paragraph.Numbering:=nsBullet;
end;
procedure TForm1.ToolButton12Click(Sender: TObject);
var
fmt: TParaFormat2;
begin
FillChar( fmt, SizeOf( fmt ), 0 );
fmt.cbSize := SizeOf( fmt );
fmt.dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or
PFM_NUMBERINGSTYLE or PFM_NUMBERINGTAB;
fmt.wNumbering := 2;
fmt.wNumberingStart := 1;
fmt.wNumberingStyle := $200;
fmt.wNumberingTab := 1440 div 4;
memo1.Perform( EM_SETPARAFORMAT, 0, lParam( @fmt ) );
end;
procedure TForm1.ToolButton13Click(Sender: TObject);
begin
Form_ten.ShowModal;
end;
procedure TForm1.ToolButton14Click(Sender: TObject);
begin
Form_icons.ShowModal;
end;
procedure TForm1.VihodExecute(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Memo1.Lines.Count>0 then
if Memo1.Modified then
case MessageBox(Handle,'Сохранить изменения?','Закрыть',MB_YESNOCANCEL or MB_ICONQUESTION) of
IDYES:
SohranitExecute(Sohranit);
IDNO:
begin
Memo1.Text:='';
OpenDialog1.FileName:='';
SaveDialog1.FileName:='*.rtf';
cancel:=true;
Memo1.Modified:=false;
end;
IDCANCEL:
CanClose:=false;
end;
end;
procedure TForm1.HintsExecute(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var IniFile:TIniFile;
Path:string;
ReginiFile:TreginiFile;
begin
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
IniFile:=TIniFile.Create(Path+'project.ini');
IniFile.WriteInteger('FORM1','Form1Top',Form1.Top);
IniFile.WriteInteger('FORM1','Form1Left',Form1.Left);
IniFile.WriteInteger('FORM1','Form1Height',Form1.Height);
IniFile.WriteInteger('FORM1','Form1Width',Form1.Width);
IniFile.Free;
RegIniFile:=TReginiFile.Create('Galkina');
RegIniFile.WriteInteger('FORM1','Form1top',Form1.Top);
RegIniFile.WriteInteger('FORM1','Form1Left',Form1.Left);
RegIniFile.WriteInteger('FORM1','Form1Height',Form1.Height);
RegIniFile.WriteInteger('FORM1','Form1Width',Form1.Width);
RegIniFile.Free;
form4.Close;
end;
procedure TForm1.N27Click(Sender: TObject);
begin
SPos:=Memo1.SelStart;
with FindDialog1 do
begin
FindText:=Memo1.SelText;
Position:=Point(Form1.Left, Form1.Top+Memo1.Top);
Options:=Options+[frHideUpDown, frHideWholeWord];
Execute;
end;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
begin
with FindDialog1 do
begin
if frMatchCase in Options
then
Memo1.SelStart:=Pos(FindText, Copy(Memo1.Lines.Text, SPos+1, Length(Memo1.Lines.Text)))+SPos-1
else
Memo1.SelStart:=Pos(AnsiLowerCase(FindText),
AnsiLowerCase(Copy(Memo1.Lines.Text, SPos+1, Length(Memo1.Lines.Text))))+SPos-1;
if Memo1.SelStart>=SPos Then
begin
Memo1.SelLength:=Length(FindText);
SPos:=Memo1.SelStart+Memo1.SelLength+1;
end
else
if MessageDlg('Текст"'+FindText+'"не найден. Продолжать диалог?',mtConfirmation, mbYesNoCancel,0)<>mrYes
then CloseDialog;
end;
Memo1.SetFocus;
end;
procedure TForm1.N28Click(Sender: TObject);
begin
SPos:=Memo1.SelStart;
with ReplaceDialog1 do
begin
FindText:=Memo1.SelText;
Position:=Point(Form1.Left, Form1.Top+Memo1.Top);
Options:=Options+[frHideUpDown, frHideWholeWord];
Execute;
end;
end;
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
begin
with ReplaceDialog1 do
begin
if frMatchCase in Options
then
Memo1.SelStart:=Pos(FindText, Copy(Memo1.Lines.Text, SPos+1, Length(Memo1.Lines.Text)))+SPos-1
else
Memo1.SelStart:=Pos(AnsiLowerCase(FindText),
AnsiLowerCase(Copy(Memo1.Lines.Text, SPos+1, Length(Memo1.Lines.Text))))+SPos-1;
if Memo1.SelStart>=SPos Then
begin
Memo1.SelLength:=Length(FindText);
SPos:=Memo1.SelStart+Memo1.SelLength;
end
else
if MessageDlg('Текст"'+FindText+'"не найден. Продолжать диалог?',mtConfirmation, mbYesNoCancel,0)<>mrYes
then CloseDialog;
end;
Memo1.SetFocus;
end;
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
if memo1.SelText<>'' then
Memo1.SelText:=ReplaceDialog1.ReplaceText;
if frReplaceAll in ReplaceDialog1.Options
then ReplaceDialog1Find(Self);
end;
procedure TForm1.N29Click(Sender: TObject);
var
i,j:integer;
l,r,pr:integer;
begin
l:=0; r:=0; pr:=0;
for i:=0 to Memo1.Lines.Count do
for j:=1 to length(Memo1.Lines[i]) do
begin
if Memo1.Lines[i][j] in ['a'..'z','A'..'Z'] then l:=l+1 else
if Memo1.Lines[i][j] in ['а'..'я','А'..'Я'] then r:=r+1 else
pr:=pr+1;
end;
Form6.Chart1.Series[0].Clear;
Form6.Chart1.Series[0].Add(l,'Латинские',clYellow);
Form6.Chart1.Series[0].Add(r,'Русские',clRed);
Form6.Chart1.Series[0].Add(pr,'Прочие',clBlue);
Form6.ShowModal;
end;
procedure TForm1.N30Click(Sender: TObject);
begin
Form_color.ShowModal;
end;
procedure TForm1.ToolButton18Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taCenter;
width_down:=false;
end;
procedure TForm1.ToolButton19Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taRightJustify;
width_down:=false;
end;
procedure TForm1.ToolButton20Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taLeftJustify;
width_down:=false;
end;
procedure TForm1.ToolButton21Click(Sender: TObject);
const
TO_ADVANCEDTYPOGRAPHY = $0001;
TO_SIMPLELINEBREAK = $0002;
EM_SETTYPOGRAPHYOPTIoNS = $04CA;
PFA_JUSTIFY = $0004;
PFA_FULL_INTERWORD = $0005;
var
paraformat: PARAFORMAT2;
begin
//Memo1.SelectAll;
SendMessage(Memo1.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
paraformat.cbSize := sizeof(PARAFORMAT2);
paraformat.dwMask := PFM_ALIGNMENT;
paraformat.wAlignment := PFA_JUSTIFY;
SendMessage(Memo1.Handle, EM_SETPARAFORMAT, 0, Integer(@paraformat));
width_down:=true;
end;
procedure TForm1.N110Click(Sender: TObject);
var
IniFile:TIniFile;
Path: String;
i,j,poss: integer;
f: TextFile;
buf, fName, NamePunkt, NameFile1, NameFile2, c: string;
begin
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
IniFile:=TIniFile.Create(Path+'FormOptions.ini');
fName:=TMenuItem(Sender).Caption;
poss:=Pos('&',fName);
Delete(fName,poss,1);
Memo1.Lines.LoadFromFile(fName);
OpenDialog1.FileName:=fName;
NamePunkt:=TMenuItem(Sender).Name;
j:=StrToInt(Copy(NamePunkt,4,1));
NameFile1:=IniFile.ReadString('FILES','File'+IntToStr(j),NameFile1);
if j>0 then
for i:=j downto 1 do
begin
NameFile2:=IniFile.ReadString('FILES','File'+IntToStr(i-1),NameFile2);
IniFile.WriteString('FILES','File'+IntToStr(i),NameFile2);
end;
IniFile.WriteString('FILES','File0',NameFile1);
IniFile.Free;
end;
procedure TForm1.N4Click(Sender: TObject);
var
IniFile:TIniFile;
Path: String;
File_Name: TMenuItem;
i,j,n: integer;
begin
n:=9;
i:=9;
Path:=Application.ExeName;
Path:=ExtractFileDir(Path);
if Path[Length(Path)]<>'\' then Path:=Path+'\';
IniFile:=TIniFile.Create(Path+'FormOptions.ini');
while (i>=0) do
begin
TMenuItem(FindComponent('N11'+IntToStr(n))).Caption:=IniFile.ReadString('FILES','File'+IntToStr(i),'');
if TMenuItem(FindComponent('N11'+IntToStr(n))).Caption<>'' then
TMenuItem(FindComponent('N11'+IntToStr(n))).Visible:=true;
i:=i-1;
n:=n-1;
end;
InIFile.Free;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
Sohranit.Enabled:=true;
if Memo1.Text='' then
begin
Udalit.Enabled:=false;
Videlit_vse.Enabled:=Udalit.Enabled;
end
else
begin
Udalit.Enabled:=true;
Videlit_vse.Enabled:=Udalit.Enabled;
end;
Otmenit.Enabled:=true;
page:=(Memo1.Lines.Count div 55)+1;
end;
procedure TForm1.PoPupExecute(Sender: TObject);
begin
Virezat.Enabled:=Memo1.SelLength>0;
Form1.N33.Enabled:=Memo1.SelLength>0;
Form1.N34.Enabled:=Memo1.SelLength>0;
Form1.N44.Enabled:=Memo1.SelLength>0;
Form1.N45.Enabled:=Memo1.SelLength>0;
Kopirovat.Enabled:=Virezat.Enabled;
Vstavit.Enabled:=Clipboard.HasFormat(CF_Text);
end;
procedure TForm1.N10Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N33Click(Sender: TObject);
begin
Memo1.SelText:=AnsiUpperCase(Memo1.SelText);
end;
procedure TForm1.N34Click(Sender: TObject);
begin
Memo1.SelText:=AnsiLowerCase(Memo1.SelText);
end;
procedure TForm1.N36Click(Sender: TObject);
begin
Form_color.ShowModal;
end;
procedure TForm1.N40Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taLeftJustify;
end;
procedure TForm1.N41Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taCenter;
end;
procedure TForm1.N39Click(Sender: TObject);
begin
Memo1.Paragraph.Alignment:=taRightJustify;
end;
procedure TForm1.N42Click(Sender: TObject);
const
TO_ADVANCEDTYPOGRAPHY = $0001;
TO_SIMPLELINEBREAK = $0002;
EM_SETTYPOGRAPHYOPTIoNS = $04CA;
PFA_JUSTIFY = $0004;
PFA_FULL_INTERWORD = $0005;
var
paraformat: PARAFORMAT2;
begin
//Memo1.SelectAll;
SendMessage(Memo1.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);
paraformat.cbSize := sizeof(PARAFORMAT2);
paraformat.dwMask := PFM_ALIGNMENT;
paraformat.wAlignment := PFA_JUSTIFY;
SendMessage(Memo1.Handle, EM_SETPARAFORMAT, 0, Integer(@paraformat));
end;
procedure TForm1.N44Click(Sender: TObject);
begin
Memo1.SelText:=AnsiUpperCase(Memo1.SelText);
end;
procedure TForm1.N45Click(Sender: TObject);
begin
Memo1.SelText:=AnsiLowerCase(Memo1.SelText);
end;
procedure TForm1.N46Click(Sender: TObject);
begin
Form8.ShowModal;
end;
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
Memo1.SelAttributes.Name:=ComboBox1.Items[ComboBox1.ItemIndex];
Memo1.SetFocus;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
if SpinEdit1.Text<>'' then
begin
Memo1.SelAttributes.Size:=SpinEdit1.Value;
if SpinEdit1.Value>72 then
SpinEdit1.Value:=72;
end;
if Memo1.SelLength>0 then
Memo1.SetFocus;
end;
procedure TForm1.SpinEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then
key:=#0;
end;
procedure TForm1.ColorBox1Select(Sender: TObject);
begin
Memo1.Color:=ColorBox1.Selected;
end;
procedure TForm1.N47Click(Sender: TObject);
begin
Form9.ShowModal;
end;
procedure TForm1.ColorBox2Select(Sender: TObject);
begin
Form1.Memo1.SelAttributes.Color:=ColorBox2.Selected;
end;
end.