📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, Menus, ExtCtrls, StdCtrls, ComCtrls, ToolWin, ActnList,
ActnMan, ActnCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
F1: TMenuItem;
N1: TMenuItem;
O1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
P1: TMenuItem;
X1: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
ImageList1: TImageList;
N7: TMenuItem;
T1: TMenuItem;
C1: TMenuItem;
P2: TMenuItem;
L1: TMenuItem;
N8: TMenuItem;
A1: TMenuItem;
N9: TMenuItem;
w1: TMenuItem;
f2: TMenuItem;
c2: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
h1: TMenuItem;
N12: TMenuItem;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
RichEdit1: TRichEdit;
PopupMenu1: TPopupMenu;
U1: TMenuItem;
T2: TMenuItem;
T3: TMenuItem;
C3: TMenuItem;
P3: TMenuItem;
ActionList1: TActionList;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
FontDialog1: TFontDialog;
ColorDialog1: TColorDialog;
PrintDialog1: TPrintDialog;
new: TAction;
open: TAction;
save: TAction;
print: TAction;
x2: TMenuItem;
endf: TAction;
ActionList2: TActionList;
undo: TAction;
cut: TAction;
copy: TAction;
paste: TAction;
selall: TAction;
StatusBar1: TStatusBar;
del: TAction;
D1: TMenuItem;
N13: TMenuItem;
ToolBar2: TToolBar;
ComboBox1: TComboBox;
Edit1: TEdit;
UpDown1: TUpDown;
N14: TMenuItem;
procedure newExecute(Sender: TObject);
procedure openExecute(Sender: TObject);
procedure saveExecute(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure printExecute(Sender: TObject);
procedure endfExecute(Sender: TObject);
procedure undoExecute(Sender: TObject);
procedure cutExecute(Sender: TObject);
procedure copyExecute(Sender: TObject);
procedure pasteExecute(Sender: TObject);
procedure A1Click(Sender: TObject);
procedure w1Click(Sender: TObject);
procedure f2Click(Sender: TObject);
procedure c2Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton14Click(Sender: TObject);
procedure ToolButton16Click(Sender: TObject);
procedure ToolButton17Click(Sender: TObject);
procedure ToolButton18Click(Sender: TObject);
procedure ToolButton20Click(Sender: TObject);
procedure CheckFileSave;
procedure checkpos;
procedure ActionList2Update(Action: TBasicAction;
var Handled: Boolean);
procedure delExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RichEdit1SelectionChange(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N12Click(Sender: TObject);
procedure GetFontNames;
procedure ComboBox1Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure N14Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
wfilename:string;
f:textfile;
implementation
uses Unit2;
{$R *.dfm}
procedure tform1.CheckFileSave;
var
SaveResp: Integer;
begin
if not richedit1.Modified then Exit;
SaveResp := MessageDlg(Format('OK to overwrite %s', [wfilename]),
mtConfirmation, mbYesNoCancel, 0);
case SaveResp of
idYes: saveExecute(Self);
idNo: {Nothing};
idCancel: Abort;
end;
end;
procedure tform1.checkpos;
var x,y:integer;
begin
x:=richedit1.CaretPos.X+1;
y:=richedit1.CaretPos.Y+1;
statusbar1.Panels[0].Text:='欢迎使用';
statusbar1.Panels[1].Text:='col:'+inttostr(y)+' '+'row:'+inttostr(x);
end;
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
procedure TForm1.GetFontNames;
var
DC: HDC;
begin
DC := GetDC(0);
EnumFonts(DC, nil, @EnumFontsProc, Pointer(combobox1.Items));
ReleaseDC(0, DC);
combobox1.Sorted := True;
end;
procedure TForm1.newExecute(Sender: TObject);
begin
checkfilesave;
richedit1.Modified:=false;
richedit1.Clear;
wfilename:='NULL';
form1.Caption:='新建文本文档-记事本';
end;
procedure TForm1.openExecute(Sender: TObject);
begin
checkfilesave;
if opendialog1.Execute then
begin
wfilename:=opendialog1.FileName;
form1.Caption:=wfilename;
richedit1.Lines.LoadFromFile(wfilename);
richedit1.SetFocus;
richedit1.Modified:=false;
end;
end;
procedure TForm1.saveExecute(Sender: TObject);
begin
if wfilename='NULL' then N3click(sender)
else
richedit1.Lines.SaveToFile(wfilename);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
if MessageDlg(Format('OK to overwrite %s', [SaveDialog1.FileName]),
mtConfirmation, mbYesNoCancel, 0) <> idYes then Exit;
richedit1.Lines.SaveToFile(SaveDialog1.FileName);
wfilename:=savedialog1.filename;
form1.Caption:=wfilename;
richedit1.Modified := False;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetFontNames;
wfilename:='NULL';
richedit1.Modified:=false;
end;
procedure TForm1.printExecute(Sender: TObject);
begin
if PrintDialog1.Execute then
richedit1.Print(wfilename);
end;
procedure TForm1.endfExecute(Sender: TObject);
begin
checkfilesave;
close;
end;
procedure TForm1.undoExecute(Sender: TObject);
begin
with richedit1 do
if HandleAllocated then SendMessage(Handle, EM_UNDO, 0, 0);
end;
procedure TForm1.cutExecute(Sender: TObject);
begin
richedit1.CutToClipboard;
end;
procedure TForm1.copyExecute(Sender: TObject);
begin
richedit1.CopyToClipboard;
end;
procedure TForm1.pasteExecute(Sender: TObject);
begin
richedit1.PasteFromClipboard
end;
procedure TForm1.A1Click(Sender: TObject);
begin
richedit1.SelectAll;
richedit1.SetFocus;
end;
procedure TForm1.w1Click(Sender: TObject);
begin
if w1.Checked=false then
begin
w1.Checked:=true;
richedit1.ScrollBars:=ssVertical;
richedit1.WordWrap:=true;
end
else
begin
w1.Checked:=false;
richedit1.ScrollBars:=ssboth;
richedit1.WordWrap:=false;
end
end;
procedure TForm1.f2Click(Sender: TObject);
var curtext:ttextattributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
FontDialog1.Font.Assign(richedit1.SelAttributes);
if FontDialog1.Execute then
CurText.Assign(FontDialog1.Font);
richedit1.SetFocus;
end;
procedure TForm1.c2Click(Sender: TObject);
var curtext:ttextattributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
with colordialog1 do
if execute then
curtext.Color:=colordialog1.Color;
end;
procedure TForm1.ToolButton12Click(Sender: TObject);
var curtext:TTextAttributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
if toolbutton12.Down then
begin
curtext.Style:=curtext.Style+[fsbold];
end
else
begin
curtext.Style:=curtext.Style-[fsbold];
end;
end;
procedure TForm1.ToolButton13Click(Sender: TObject);
var curtext:TTextAttributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
if toolbutton13.Down then
begin
curtext.Style:=curtext.Style+[fsItalic];
end
else
begin
curtext.Style:=curtext.Style-[fsItalic];
end;
end;
procedure TForm1.ToolButton14Click(Sender: TObject);
var curtext:TTextAttributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
if toolbutton14.Down then
begin
curtext.Style:=curtext.Style+[fsUnderline];
end
else
begin
curtext.Style:=curtext.Style-[fsUnderline];
end;
end;
procedure TForm1.ToolButton16Click(Sender: TObject);
begin
richedit1.Paragraph.Alignment := TAlignment(TControl(Sender).Tag);
end;
procedure TForm1.ToolButton17Click(Sender: TObject);
begin
ToolButton16Click(sender);
end;
procedure TForm1.ToolButton18Click(Sender: TObject);
begin
ToolButton16Click(sender);
end;
procedure TForm1.ToolButton20Click(Sender: TObject);
begin
richedit1.Paragraph.Numbering := TNumberingStyle(Toolbutton20.Down);
end;
procedure TForm1.ActionList2Update(Action: TBasicAction;
var Handled: Boolean);
begin
if richedit1.SelLength>0 then
begin
cut.Enabled:=true;
copy.Enabled:=true;
del.Enabled:=true;
end
else
begin
cut.Enabled:=false;
copy.Enabled:=false;
del.Enabled:=false;
end;
end;
procedure TForm1.delExecute(Sender: TObject);
begin
richedit1.CutToClipboard;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
checkpos;
end;
procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
checkpos;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
n11.Checked:=not n11.Checked;
statusbar1.Visible:=not statusbar1.Visible;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
n13.Checked:=not n13.checked;
toolbar1.Visible:=not toolbar1.Visible;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
checkfilesave;
end;
procedure TForm1.N12Click(Sender: TObject);
begin
with TAboutBox.Create(Self) do
try
ShowModal;
finally
Free;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var curtext:TTextAttributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
curText.Name := Combobox1.Items[combobox1.ItemIndex];
end;
procedure TForm1.Edit1Change(Sender: TObject);
var curtext:TTextAttributes;
begin
if richedit1.SelLength>0 then curtext:=richedit1.SelAttributes
else curtext:=richedit1.DefAttributes;
curtext.Size := StrToInt(edit1.Text);
end;
procedure TForm1.N14Click(Sender: TObject);
begin
n14.Checked:=not n14.checked;
toolbar2.Visible:=not toolbar2.Visible;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -