📄 upasfileeditform.pas
字号:
unit uPasFileEditForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, Menus, SynEditHighlighter, SynHighlighterPas, SynEditExport,
SynExportHTML, SynEdit, SynMemo, ComCtrls, ImgList, ToolWin, ActnList,
StdCtrls, StdActns, SynEditMiscClasses, SynEditSearch, SynEditTypes,
SynEditPrint, Shellapi, uFormEffect,IniFiles, Registry;
type
TPasFileEditForm = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N23: TMenuItem;
N27: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
CoolBar1: TCoolBar;
ImageList1: TImageList;
SynExporterHTML1: TSynExporterHTML;
SynPasSyn: TSynPasSyn;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton8: TToolButton;
ToolButton21: TToolButton;
ToolButton23: TToolButton;
ActionList1: TActionList;
new: TAction;
open: TAction;
saveas: TAction;
exit: TAction;
save: TAction;
undo: TAction;
SaveDialog: TSaveDialog;
redo: TAction;
cut: TAction;
Paste: TEditPaste;
copy: TAction;
find: TAction;
replace: TAction;
toolbar: TAction;
statusbas: TAction;
Set1: TAction;
about: TAction;
ToolBar2: TToolBar;
cbFontSize: TComboBox;
OpenDialog: TOpenDialog;
cbFontName: TComboBox;
FindDialog: TFindDialog;
ReplaceDialog1: TReplaceDialog;
mmContent: TSynMemo;
tohtml: TAction;
tohtmlOnClipboard: TAction;
creaturl: TAction;
C1: TMenuItem;
N26: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
ToolButton22: TToolButton;
ToolButton24: TToolButton;
showlines: TAction;
N6: TMenuItem;
ToolButton25: TToolButton;
StatusBar: TStatusBar;
relating: TAction;
Delphi1: TMenuItem;
procedure exitExecute(Sender: TObject);
procedure Set1Execute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure mmContentChange(Sender: TObject);
procedure undoExecute(Sender: TObject);
procedure redoExecute(Sender: TObject);
procedure cutExecute(Sender: TObject);
procedure PasteExecute(Sender: TObject);
procedure copyExecute(Sender: TObject);
procedure cbFontNameChange(Sender: TObject);
procedure cbFontSizeChange(Sender: TObject);
procedure toolbarExecute(Sender: TObject);
procedure statusbasExecute(Sender: TObject);
procedure openExecute(Sender: TObject);
procedure newExecute(Sender: TObject);
procedure saveExecute(Sender: TObject);
procedure saveasExecute(Sender: TObject);
procedure creaturlExecute(Sender: TObject);
procedure tohtmlExecute(Sender: TObject);
procedure tohtmlOnClipboardExecute(Sender: TObject);
procedure mmContentStatusChange(Sender: TObject;
Changes: TSynStatusChanges);
procedure findExecute(Sender: TObject);
procedure FindDialogFind(Sender: TObject);
procedure replaceExecute(Sender: TObject);
procedure ReplaceDialog1Find(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
procedure showlinesExecute(Sender: TObject);
procedure DropFiles(var message: TMessage); message WM_DROPFILES;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure relatingExecute(Sender: TObject);
private
{ Private declarations }
FFileName: string;
FNeedSave: boolean;
procedure setStatus;
procedure setSynExporterHTML;
function DoSave: boolean;
procedure CreateParams(var Params: TCreateParams); override;
procedure RegistFile;
procedure ReadForm;
procedure SaveForm;
public
{ Public declarations }
FIsTransfer: boolean;
end;
var
PasFileEditForm: TPasFileEditForm;
const
colorfile = 'color.col';
implementation
uses uPasFileEditSetForm, CreateLinkFileFunc;
{$R *.dfm}
procedure TPasFileEditForm.SaveForm;
var
IniFile:TiniFile;
begin
IniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Buttons.ini');
IniFile.WriteInteger('PasEditer','Top',PasFileEditForm.Top);
IniFile.WriteInteger('PasEditer','Left',PasFileEditForm.Left);
IniFile.WriteInteger('PasEditer','Width',PasFileEditForm.Width);
IniFile.WriteInteger('PasEditer','Height',PasFileEditForm.Height);
IniFile.WriteString('PasEditer','FontName',PasFileEditForm.cbFontName.Text);
IniFile.WriteString('PasEditer','FontSize',PasFileEditForm.cbFontSize.Text);
IniFile.WriteBool('PasEditer','ShowLine',PasFileEditForm.showlines.Checked);
IniFile.Free;
end;
procedure TPasFileEditForm.ReadForm;
var
IniFile:TiniFile;
begin
IniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Buttons.ini');
PasFileEditForm.Top:=IniFile.ReadInteger('PasEditer','Top',143);
PasFileEditForm.Left:=IniFile.ReadInteger('PasEditer','Left',220);
PasFileEditForm.Width:=IniFile.ReadInteger('PasEditer','Width',676);
PasFileEditForm.Height:=IniFile.ReadInteger('PasEditer','Height',484);
PasFileEditForm.cbFontName.Text:=IniFile.ReadString('PasEditer','FontName','Courier New');
PasFileEditForm.cbFontSize.Text:=IniFile.ReadString('PasEditer','FontSize','10');
PasFileEditForm.showlines.Checked:=IniFile.ReadBool('PasEditer','ShowLine',true);
IniFile.Free;
end;
procedure TPasFileEditForm.RegistFile;
var
reg: TRegistry;
I: integer;
const
aRootKey: HKEY = HKEY_CLASSES_ROOT;
OpenKeys: array[1..5] of string = ('DelphiCLXForm\Shell\', 'DelphiForm\Shell\',
'DelphiPackage\Shell\', 'DelphiProject\Shell\', 'DelphiUnit\Shell\');
MenuHint: string = 'Delphi文件编辑器';
begin
reg := TRegistry.Create;
reg.RootKey := aRootKey;
for I := 1 to 5 do
begin
reg.OpenKey(OpenKeys[I] + MenuHint, true);
reg.WriteString('', MenuHint);
reg.OpenKey('command', true);
reg.WriteString('', '"' + application.ExeName + '" "%1"');
reg.CloseKey;
end;
reg.Free;
end;
procedure TPasFileEditForm.DropFiles(var message: TMessage);
var
aFileName: array[0..254] of char;
I: word;
begin
inherited;
if DoSave then
begin
mmcontent.Lines.Clear;
try
dragqueryfile(message.wparam, 0, aFileName, 255);
mmcontent.Lines.LoadFromFile(strpas(aFileName));
FFileName := strpas(aFileName);
PasFileEditForm.Caption := format('Delphi程序编辑器-%s', [FFileName]);
FNeedSave := false;
except
MessageBox(Handle, PChar(strpas(aFileName) + '文件不加被添加!'), PChar('消息'),
MB_ICONINFORMATION or MB_OK);
end;
end;
end;
procedure TPasFileEditForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Param := nil;
end;
procedure TPasFileEditForm.exitExecute(Sender: TObject);
begin
if DoSave then
close;
end;
procedure TPasFileEditForm.Set1Execute(Sender: TObject);
begin
PasFileEditSetForm.show;
end;
procedure TPasFileEditForm.FormCreate(Sender: TObject);
var
Path: string;
begin
ReadForm;
Path := ExtractFilePath(application.ExeName);
RegistFile;
if not FileExists(Path + colorfile) then
SynPasSyn.SaveToFile(Path + colorfile);
SynPasSyn.LoadFromFile(Path + colorfile);
if (ParamCount > 0) and (ParamStr(1) <> '%EDITER') then
try
mmcontent.Lines.LoadFromFile(ParamStr(1));
FFileName := ParamStr(1);
PasFileEditForm.Caption := format('Delphi程序编辑器-%s', [FFileName]);
FNeedSave := false;
except
FFileName := '';
end
else
FFileName := '';
cbFontName.Items.Assign(Screen.Fonts);
StatusBar.Panels[0].Text := application.Hint;
StatusBar.Panels[3].Text := datetostr(date());
DragAcceptFiles(PasFileEditForm.Handle, true);
end;
procedure TPasFileEditForm.setSynExporterHTML;
begin
SynExporterHTML1.ExportAsText := true;
SynExporterHTML1.CreateHTMLFragment := true;
SynExporterHTML1.Font.Name := cbFontName.Text;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -