⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.pas

📁 一个模拟Delphi的快速开发环境RAD
💻 PAS
📖 第 1 页 / 共 5 页
字号:
       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 + -