📄 upasfileeditform.pas
字号:
SynExporterHTML1.Font.Size := strtoint(cbFontSize.Text);
SynExporterHTML1.ExportAll(mmContent.Lines);
end;
procedure TPasFileEditForm.setStatus;
begin
undo.Enabled := mmContent.CanUndo;
redo.Enabled := mmContent.CanRedo;
Paste.Enabled := mmContent.CanPaste;
cut.Enabled := mmContent.SelText <> '';
copy.Enabled := mmContent.SelText <> '';
StatusBar.Panels[2].Text := format('共有 %d 行', [mmContent.Lines.Count]);
StatusBar.Panels[1].Text := format('列 = %d,行 = %d', [mmContent.CaretX, mmContent.CaretY]);
end;
procedure TPasFileEditForm.mmContentChange(Sender: TObject);
begin
FNeedSave := True;
end;
procedure TPasFileEditForm.undoExecute(Sender: TObject);
begin
mmContent.Undo;
end;
procedure TPasFileEditForm.redoExecute(Sender: TObject);
begin
mmContent.Redo;
end;
procedure TPasFileEditForm.cutExecute(Sender: TObject);
begin
mmContent.CutToClipboard;
end;
procedure TPasFileEditForm.PasteExecute(Sender: TObject);
begin
mmContent.PasteFromClipboard;
end;
procedure TPasFileEditForm.copyExecute(Sender: TObject);
begin
mmContent.CopyToClipboard;
end;
procedure TPasFileEditForm.cbFontNameChange(Sender: TObject);
begin
mmContent.Font.Name := cbFontName.Text;
end;
procedure TPasFileEditForm.cbFontSizeChange(Sender: TObject);
var
intSize: Integer;
begin
try
intSize := StrToInt(cbFontSize.text);
except
intSize := 10;
end;
mmContent.Font.Size := intSize;
end;
procedure TPasFileEditForm.toolbarExecute(Sender: TObject);
begin
coolbar1.Visible := toolbar.Checked;
end;
procedure TPasFileEditForm.statusbasExecute(Sender: TObject);
begin
StatusBar.Visible := statusbas.Checked;
end;
function TPasFileEditForm.DoSave: boolean;
begin
result := true;
if FNeedSave then
case MessageBox(Handle, PChar('文件还没保存,现在要保存吗?'), PChar('询问'),
MB_ICONQUESTION or MB_YESNOCANCEL or MB_DEFBUTTON1) of
IDYES: save.Execute;
IDCANCEL: result := false;
end;
end;
procedure TPasFileEditForm.openExecute(Sender: TObject);
begin
if DoSave then
begin
if FFileName <> '' then
OpenDialog.FileName := FFileName;
if OpenDialog.Execute then
begin
mmContent.Lines.LoadFromFile(OpenDialog.FileName);
FFileName := OpenDialog.FileName;
PasFileEditForm.Caption := format('Delphi程序编辑器-%s', [FFileName]);
FNeedSave := false;
end;
end;
end;
procedure TPasFileEditForm.newExecute(Sender: TObject);
begin
if DoSave then
begin
mmContent.ClearAll;
FFileName := '';
FNeedSave := false;
end;
end;
procedure TPasFileEditForm.saveExecute(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
begin
if FIsTransfer then
begin
ds.cbData := Length(mmContent.Lines.Text) + 1;
GetMem(ds.lpData, ds.cbData); //为传递的数据区分配内存
StrCopy(ds.lpData, PChar(mmContent.Lines.Text));
Hd := FindWindow(nil, '函数库'); // 获得接受窗口的句柄
if Hd <> 0 then
SendMessage(Hd, WM_COPYDATA, Handle,
Cardinal(@ds)); // 发送WM_COPYDATA消息
FreeMem(ds.lpData); //释放资源
end
else
if FFileName <> '' then
mmContent.Lines.SaveToFile(FFileName)
else
saveas.Execute;
FNeedSave := false;
PasFileEditForm.Caption := format('Delphi程序编辑器-%s', [FFileName]);
end;
procedure TPasFileEditForm.saveasExecute(Sender: TObject);
begin
SaveDialog.Filter := 'Delphi文件(*.pas; *.bpg; *.dpr; *.dfm) |*.pas; *.bpg; *.dpr; *.dfm|所有文件(*.*)|*.*';
if FFileName <> '' then
SaveDialog.FileName := FFileName;
if SaveDialog.Execute then
begin
if pos('.', SaveDialog.FileName) = 0 then
SaveDialog.FileName := SaveDialog.FileName + '.pas';
mmContent.Lines.SaveToFile(SaveDialog.FileName);
FFileName := SaveDialog.FileName;
PasFileEditForm.Caption := format('Delphi程序编辑器-%s', [FFileName]);
end;
end;
procedure TPasFileEditForm.creaturlExecute(Sender: TObject);
begin
SaveDialog.Filter := '';
if SaveDialog.Execute then
if SaveDialog.FileName <> '' then
begin
if not CreateLink(SaveDialog.FileName, Application.ExeName, '%EDITER') then
MessageBox(Handle, PChar('创建快捷方式失败!'), PChar('错误'), MB_ICONERROR);
end;
end;
procedure TPasFileEditForm.tohtmlExecute(Sender: TObject);
begin
SaveDialog.Filter := '网页文件(*.htm)|*.htm';
if SaveDialog.Execute then
begin
if pos('.htm', SaveDialog.FileName) = 0 then
SaveDialog.FileName := SaveDialog.FileName + '.htm';
setSynExporterHTML;
SynExporterHTML1.SaveToFile(SaveDialog.FileName);
end;
end;
procedure TPasFileEditForm.tohtmlOnClipboardExecute(Sender: TObject);
begin
setSynExporterHTML;
SynExporterHTML1.CopyToClipboard;
MessageBox(Handle, PChar('内容已成功转换并保存到剪贴板上,您可以通过Ctrl+V粘贴到适当位置了.'), PChar('消息'),
MB_ICONINFORMATION or MB_OK);
end;
procedure TPasFileEditForm.mmContentStatusChange(Sender: TObject;
Changes: TSynStatusChanges);
begin
setStatus;
end;
procedure TPasFileEditForm.findExecute(Sender: TObject);
begin
FindDialog.FindText := mmContent.SelText;
FindDialog.Execute;
end;
function ExtractOptions(const AOption: TFindOptions): TSynSearchOptions;
begin
Result := [];
if frMatchCase in AOption then Include(Result, ssoMatchCase);
if frWholeWord in AOption then Include(Result, ssoWholeWord);
if not (frDown in AOption) then Include(Result, ssoBackwards);
if frReplace in AOption then Include(Result, ssoReplace);
if frReplaceAll in AOption then Include(Result, ssoReplaceAll);
end;
procedure TPasFileEditForm.FindDialogFind(Sender: TObject);
var
sFindText: string;
begin
sFindText := FindDialog.FindText;
if mmContent.SearchReplace(sFindText, '', ExtractOptions(FindDialog.Options)) = 0 then
begin
FindDIalog.CloseDialog;
MessageBox(Handle, PChar('字串 "' + sFindText + '" 找不到。'), '提示', MB_ICONINFORMATION);
end
else
FindDialog.Position := mmContent.CaretXY;
end;
procedure TPasFileEditForm.replaceExecute(Sender: TObject);
begin
ReplaceDialog1.FindText := mmContent.SelText;
ReplaceDialog1.Execute;
end;
procedure TPasFileEditForm.ReplaceDialog1Find(Sender: TObject);
var
sFindText: string;
begin
sFindText := ReplaceDialog1.FindText;
if mmContent.SearchReplace(sFindText, '', ExtractOptions(FindDialog.Options)) = 0 then
begin
ReplaceDialog1.CloseDialog;
MessageBox(Handle, PChar('字串 "' + sFindText + '" 找不到。'), '提示', MB_ICONINFORMATION);
end
else
ReplaceDialog1.Position := mmContent.CaretXY;
end;
procedure TPasFileEditForm.ReplaceDialog1Replace(Sender: TObject);
var
sFindText: string;
sReplaceText: string;
Op: TSynSearchOptions;
begin
sFindText := ReplaceDialog1.FindText;
sReplaceText := ReplaceDialog1.ReplaceText;
Op := ExtractOptions(ReplaceDialog1.Options);
if ssoReplaceAll in op then
begin
if MessageBox(Handle, PChar('您确实要将所有的 "' + sFindText +
'" 全部替换为 "' + sReplaceText + '" 吗?'), '询问',
MB_ICONQUESTION or MB_YESNO) = idYes then
while mmContent.SearchReplace(sFindText, '', Op) <> 0 do
mmContent.SelText := sReplaceText;
end
else
begin
mmContent.SelText := sReplaceText;
end;
end;
procedure TPasFileEditForm.showlinesExecute(Sender: TObject);
begin
mmContent.Gutter.ShowLineNumbers:=showlines.Checked;
end;
procedure TPasFileEditForm.FormShow(Sender: TObject);
begin
FormEffect.FormOpen(PasFileEditForm.Handle, 15);
end;
procedure TPasFileEditForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
SaveForm;
FormEffect.FormClose(PasFileEditForm.Handle, 15);
end;
procedure TPasFileEditForm.relatingExecute(Sender: TObject);
begin
RegistFile;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -