📄 mainform.pas
字号:
SelectUnit:= UnitName;
// OnMouseDown:=ProxyForm.FormMouseDown;
// OnMouseUp:=ProxyForm.FormMouseUp;
// OnMouseMove:=ProxyForm.FormMouseMove;
OnPaint:=ProxyForm.FormPaint;
//Result.Designer := TProxyDesigner.Create(Result);
//ProxyDesigner:= TProxyDesigner(Designer);
Show;
ActiveForm:=Result;
end;
// SaveForm(Result,GetNetFileName(UnitName)+'.dfm');
end;
procedure TFMainForm.CreateSheet(const FileName:string);
// 汽苞 蜡聪飘狼 郴侩阑 焊咯林绰 俊叼磐甫 积己茄促.
var
RichEdit:TRichEdit;
TabSheet:TTabSheet;
List:TStringList;
// PasCon: TPasConversion;
begin
TabSheet:=TTabSheet.Create(EditorForm.PageControl1);
with TabSheet do
begin
PageControl := EditorForm.PageControl1;
if ExtractFileExt(FileName)='.pas' then Caption:=GetNetFileName(FileName)
else Caption:=ExtractFileName(FileName);
RichEdit:=TRichEdit.Create(EditorForm.PageControl1);
RichEdit.Parent := TabSheet;
RichEdit.Name := UniqueName(RichEdit);
RichEdit.Font.Name:= IniFile.ReadString('DISPLAY','FONTNAME','Arial');
RichEdit.Font.Size:= IniFile.ReadInteger('DISPLAY','FONTSIZE',10);
RichEdit.Align:=alClient;
RichEdit.PlainText:=False;
RichEdit.PopupMenu:=EditorForm.PopupMenu1;
RichEdit.ScrollBars:=ssBoth;
RichEdit.WordWrap:= False;
RichEdit.OnKeyUp:=EditorForm.Richedit1KeyUp;
if ExtractFileExt(FileName)='.dfm' then begin
RichEdit.Lines.LoadFromFile(ProjectInfo.ProjectPath+TempFile);
end
else if FileName='Project1' then begin
// 货肺款 橇肺璃飘 颇老狼 内靛甫 积己
RichEdit.Lines.Assign(ProjectInfo.ProjectSource);
end
else if not FileExists(FileName) then begin
// 货肺款 蜡聪飘 颇老狼 内靛甫 积己
List:=TStringList.Create;
List:=CreateDefaultUnit(List,GetNetFileName(FileName),
'Form'+FileName[Length(FileName)-4]);
RichEdit.Lines.Assign(List);
// List.SaveToFile(TempDir+FileName);
List.Free;
end
else if ExtractFileExt(FileName)='.pas' then begin
{ PasCon:=TPasConversion.Create;
PasCon.LoadFromFile(FileName);
PasCon.ConvertReadStreamHighLight;
RichEdit.Lines.BeginUpdate;
RichEdit.Lines.LoadFromStream(PasCon);
RichEdit.Lines.EndUpdate;
PasCon.Free;}
RichEdit.Lines.LoadFromFile(FileName);
RichEdit.Modified:= False;
end
else RichEdit.Lines.LoadFromFile(FileName);
RichEdit.OnChange:=EditorForm.Richedit1Change;
end;
EditorForm.Caption:=FileName;
EditorForm.PageControl1.ActivePage:=TabSheet;
EditorForm.Show;
ActiveRichEdit:=RichEdit;
end;
procedure TFMainForm.sbMainMenuClick(Sender: TObject);
begin
ShowMessage('Sorry! Not implement yet!');
end;
procedure TFMainForm.EditCopyItemClick(Sender: TObject);
begin
// if (EditorForm.ActiveControl).ClassType=TRichEdit then Exit;
ActiveRichEdit.CopyToClipboard;
EditorForm.Show;
end;
procedure TFMainForm.EditPasteItemClick(Sender: TObject);
begin
// if (EditorForm.ActiveControl).ClassType=TRichEdit then Exit;
ActiveRichEdit.PasteFromClipboard;
EditorForm.Show;
end;
procedure TFMainForm.EditCutItemClick(Sender: TObject);
begin
// if (EditorForm.ActiveControl).ClassType=TRichEdit then Exit;
ActiveRichEdit.CutToClipboard;
EditorForm.Show;
end;
procedure TFMainForm.FileSaveItemClick(Sender: TObject);
begin
SaveFile(EditorForm.Caption);
end;
procedure TFMainForm.FilePrintItemClick(Sender: TObject);
begin
ActiveRichEdit.Print(EditorForm.PageControl1.ActivePage.Caption);
end;
procedure TFMainForm.EditSelectAllItemClick(Sender: TObject);
begin
ActiveRichEdit.SelectAll;
EditorForm.Show;
end;
procedure TFMainForm.EditUndoItemClick(Sender: TObject);
begin
with ActiveRichEdit do
if HandleAllocated then SendMessage(Handle, EM_UNDO, 0, 0);
EditorForm.Show;
end;
procedure TFMainForm.SearchGotoItemClick(Sender: TObject);
var
ret:boolean;
SLine:string;
CurLine,NewLine,LinePos:integer;
begin
// 漂沥茄 青 锅龋肺 捞悼茄促.
ret:=InputQuery('Go to Line Number','Enter New Line Number:!',SLine);
if ret then begin
ActiveRichEdit.SetFocus;
NewLine:=StrToIntDef(SLine,CurLine);
ActiveRichEdit.SelStart:=SendMessage(ActiveRichEdit.Handle, EM_LINEINDEX,NewLine,0);
end;
end;
procedure TFMainForm.ViewObjInspItemClick(Sender: TObject);
begin
ObjectInspector.Show;
end;
procedure TFMainForm.ViewNewEditorItemClick(Sender: TObject);
begin
with EditorForm.Create(self) do Show;
end;
procedure TFMainForm.ViewSpeedBarItemClick(Sender: TObject);
begin
SpeedBar.Visible:=not SpeedBar.Visible;
ViewSpeedBarItem.Checked:=not ViewSpeedBarItem.Checked;
end;
procedure TFMainForm.ViewPaletteItemClick(Sender: TObject);
begin
PageControl1.Visible:=not PageControl1.Visible;
ViewPaletteItem.Checked:=not ViewPaletteItem.Checked;
end;
procedure TFMainForm.FileNewFormItemClick(Sender: TObject);
var
UnitName:string;
FormName:string;
begin
UnitName:=GetUniqueUnitName;
FormName:=GetUniqueFormName;
with ProjectInfo do begin
UnitItems.Add(ProjectInfo.ProjectPath+UnitName);
FormItems.Add(ProjectInfo.ProjectPath+FormName);
end;
InsertProjectCode(ProjectInfo.ProjectPath+UnitName,ProjectInfo.ProjectPath+FormName);
CreateForm(GetNetFileName(FormName),UnitName);
CreateSheet(UnitName);
//ObjectInspector.InitializeInspector;
end;
procedure TFMainForm.SearchFindItemClick(Sender: TObject);
begin
// NFindNext.Enabled:=True;
// 巩磊凯 八祸 拳搁俊辑 可记阑 搬沥茄促.
with TSearch.Create(self) do begin
cbSearch.Text:=GetCursorWord;
if ShowModal <> mrCancel then begin
SearchText:= cbSearch.Text;
if (chkWholeWord.Checked) then Include(SearchOption.FindOption,stWholeWord);
if (chkMatchCase.Checked) then Include(SearchOption.FindOption,stMatchCase);
if chkDown.Checked then SearchOption.Direction:= fdDown
else SearchOption.Direction:= fdUp;
if chkCursor.Checked then SearchOption.Origin:= foCursor
else SearchOption.Origin:= foEntire;
if chkEntire.Checked then SearchOption.Scope:= fsGlobal
else SearchOption.Scope:= fsSelected;
SearchingText(SearchText,SearchOption);
end;
end;
end;
procedure TFMainForm.FindDialog1Find(Sender: TObject);
var
FindOption:TSearchTypes;
LinePos:integer;
begin
FindOption:=[];
if Sender=FindDialog1 then begin
SearchText:=(Sender as TFindDialog).FindText;
if (frWholeWord in (Sender as TFindDialog).Options) then
Include(FindOption,stWholeWord);
if (frMatchCase in (Sender as TFindDialog).Options) then
Include(FindOption,stMatchCase);
end;
MatchPos:=ActiveRichEdit.FindText(SearchText,EndPos,ActiveRichEdit.GetTextlen,FindOption);
if MatchPos<>-1 then begin
EndPos:=MatchPos+Length(SearchText);
SendMessage(ActiveRichEdit.Handle,EM_SETSEL, MatchPos, EndPos);
LinePos:=SendMessage(ActiveRichEdit.Handle,EM_LINEFROMCHAR, -1,0);
SendMessage(ActiveRichEdit.Handle,EM_LINESCROLL, 0,LinePos-OldLine);
OldLine:=LinePos;
ActiveRichEdit.SetFocus;
end
else begin
MsgDlg('Search String Not Found!',Application.Title,mb_OK);
EndPos:=0;
end;
end;
procedure TFMainForm.SearchReplaceItemClick(Sender: TObject);
var
CharRange:TCharRange;
ReplaceText:string;
begin
// 某返 困摹俊 乐绰 窜绢甫 备茄促.
SendMessage(ActiveRichEdit.Handle, EM_EXGETSEL, 0, Longint(@CharRange));
CharRange.cpMax:=SendMessage(ActiveRichEdit.Handle, EM_FINDWORDBREAK,
WB_MOVEWORDRIGHT, CharRange.cpMin);
SendMessage(ActiveRichEdit.Handle, EM_EXSETSEL, 0, Longint(@CharRange));
// 巩磊凯 八祸 拳搁俊辑 可记阑 搬沥茄促.
with TReplace.Create(self) do begin
cbSearch.Text:=Trim(ActiveRichEdit.SelText);
if ShowModal <> mrCancel then begin
SearchText:= cbSearch.Text;
ReplaceText:= cbReplace.Text;
if (chkWholeWord.Checked) then Include(SearchOption.FindOption,stWholeWord);
if (chkMatchCase.Checked) then Include(SearchOption.FindOption,stMatchCase);
if chkDown.Checked then SearchOption.Direction:= fdDown
else SearchOption.Direction:= fdUp;
if chkCursor.Checked then SearchOption.Origin:= foCursor
else SearchOption.Origin:= foEntire;
if chkEntire.Checked then SearchOption.Scope:= fsGlobal
else SearchOption.Scope:= fsSelected;
SearchOption.ReplaceAll := ReplaceAll;
SearchOption.PromptOn:= chkPrompt.Checked;
ReplacingText(SearchText,ReplaceText,SearchOption);
end;
end;
// ReplaceDialog1.Execute;
end;
procedure TFMainForm.ReplaceDialog1Replace(Sender: TObject);
begin
if (frReplaceAll in ReplaceDialog1.Options) then begin
while MatchPos<>-1 do begin
SendMessage(ActiveRichEdit.Handle,EM_REPLACESEL, 0,Longint(PChar(ReplaceDialog1.ReplaceText)));
FindDialog1Find(ReplaceDialog1);
end;
end
else begin
SendMessage(ActiveRichEdit.Handle,EM_REPLACESEL, 0,Longint(PChar(ReplaceDialog1.ReplaceText)));
FindDialog1Find(ReplaceDialog1);
end;
end;
procedure TFMainForm.FileNewApplicationClick(Sender: TObject);
begin
OpenProject('Project1');
end;
procedure TFMainForm.FileCloseAllItemClick(Sender: TObject);
var
I,SaveResp:Integer;
begin
if (ProjectInfo.ProjectState=psChange) then begin
SaveResp := MessageDlg(Format('Save Changes to project %s?',
[ExtractFileName(ProjectInfo.ProjectName)]), mtWarning, mbYesNoCancel, 0);
if SaveResp=idYes then SaveProject(ProjectInfo.ProjectName);
end;
// 皋牢汽苞 坷宏璃飘 牢胶棋飘甫 力寇窍绊绰 葛滴 摧绰促.
for I:=0 to Screen.FormCount-1 do begin
if (Screen.Forms[I] is TProxyForm) or (Screen.Forms[I] is TEditorForm) then
Screen.Forms[I].Close;
//Free;
end;
// 祈笼 俊叼磐俊辑 扁夯 TabSheet 窍唱父 巢败滴绊 葛滴 昏力茄促.
with EditorForm.PageControl1 do
while True do begin
if PageCount=1 then Break;
Pages[PageCount-1].Free;
end;
NewProject;
end;
// 橇肺璃飘甫 楷促.
function TFMainForm.OpenProject(const ProjName:string):Boolean;
var
FormName:string;
begin
Result:=False;
FileCloseAllItemClick(self);
ProjectInfo.ProjectName:=ProjName;
Caption:=Application.Title+' - '+ProjName;
if ProjName<>'' then Result:=True
else sbSaveAll.Enabled:=True;
if FileExists(ProjName) then begin
SetProjectInfo(ProjName);
FormName:=GetUnitName(ProjectInfo.MainForm);
OpenFile(ProjectInfo.ProjectPath+FormName+'.pas');
end
else NewProject;
end;
// 橇肺璃飘甫 历厘茄促.
function TFMainForm.SaveProject(const ProjName:string):Boolean;
var
I,J:Integer;
begin
Result:=False;
sbSaveAll.Enabled:=False;
ProjectInfo.ProjectSource.SaveToFile(ProjectInfo.ProjectName);
for I:=0 to ProjectInfo.UnitItems.Count-1 do begin
SelectUnit:= ProjectInfo.UnitItems[I]; // 橇肺璃飘俊 乐绰 蜡聪飘甫 瞒肥肺 急琶茄促.
SaveFile(ProjectInfo.UnitItems[I]);
end;
ProjectInfo.ProjectState:=psSave;
if ProjName<>'' then Result:=True;
end;
procedure TFMainForm.sbSaveAllClick(Sender: TObject);
begin
// if (ProjectInfo.ProjectState=psNew) or (ProjectInfo.ProjectState=psChange) then
SaveProject(ProjectInfo.ProjectName);
end;
procedure TFMainForm.SaveFile(const FileName:string);
var
SaveResp:integer;
SaveName:string;
LinkForm:TForm;
begin
SaveName:=FileName;
if FileName='Project1' then begin
// 货肺款 橇肺璃飘牢 版快
SaveDialog1.FileName:='Project1.dpr';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -