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

📄 mainedit.pas

📁 大家是不是为不知道如何在VB学到绝地程序
💻 PAS
📖 第 1 页 / 共 5 页
字号:
End;

Procedure TfrmJediEdit.WMDropFiles(Var Msg: TWMDropFiles);
Var
  Buf: Array[0..255] Of Char;
  FilesCount: Integer;
  i: Integer;
Begin
  FilesCount := DragQueryFile(Msg.Drop, $FFFFFFFF, Nil, 0);
  For i := 0 To FilesCount - 1 Do Begin
    DragQueryFile(Msg.Drop, i, Buf, SizeOf(Buf));
    OpenFile(Buf);
  End;
  DragFinish(Msg.Drop);
End;

Procedure TfrmJediEdit.WMNotExists(Var Msg: TMessage);
Begin
  MessageDlg(Format(sNoFileExist, [CurrentEditor.FileName]), MtError, [MbOK], 0);
End;

Procedure TfrmJediEdit.WMRestoreApp(Var Msg: TMessage);
Begin
  ShowApplication;
End;

Procedure TfrmJediEdit.AddFileToMRL(Const FileName: String);
Var
  i: Integer;
Begin
  i := MRUManager.Strings.IndexOf(FileName);
  If (i = -1) And (FileName <> '') Then MRUManager.Add(FileName, 0)
  Else If i <> -1 Then Begin
    MRUManager.Remove(FileName);
    MRUManager.Add(FileName, 0);
  End;

End;

Procedure TfrmJediEdit.AppHint(Sender: TObject);
Begin
  StatusBar.Panels[sthintPanel].Text := Application.Hint;
End;

Procedure TfrmJediEdit.NormalSelectionExecute(Sender: TObject);
Var
  Edit: TMySynEdit;
Begin
  Edit := CurrentEditor;
  If Assigned(Edit) Then Begin
    Edit.SelectionMode := smNormal;
    If dlgOption.cbHalfPageScroll.Checked Then Edit.Options := Edit.Options + [eoHalfPageScroll]
    Else Edit.Options := Edit.Options - [eoHalfPageScroll];
    LineSelection.Checked := False;
    ColumnSelection.Checked := False;
    NormalSelection.Checked := True;
  End;
End;

Procedure TfrmJediEdit.ColumnSelectionExecute(Sender: TObject);
Var
  Edit: TMySynEdit;
Begin
  Edit := CurrentEditor;
  If Assigned(Edit) Then Begin
    Edit.SelectionMode := smColumn;
    Edit.Options := Edit.Options + [eoHalfPageScroll];
    ColumnSelection.Checked := True;
    LineSelection.Checked := False;
    NormalSelection.Checked := False;
  End;
End;

Procedure TfrmJediEdit.LineSelectionExecute(Sender: TObject);
Var
  Edit: TMySynEdit;
Begin
  Edit := CurrentEditor;
  If Assigned(Edit) Then Begin
    Edit.SelectionMode := smLine;
    If dlgOption.cbHalfPageScroll.Checked Then Edit.Options := Edit.Options + [eoHalfPageScroll]
    Else Edit.Options := Edit.Options - [eoHalfPageScroll];
    LineSelection.Checked := True;
    ColumnSelection.Checked := False;
    NormalSelection.Checked := False;
  End;
End;

Procedure TfrmJediEdit.ShowLineNoExecute(Sender: TObject);
Var
  I: Integer;
Begin
  ShowLineNo.Checked := Not ShowLineNo.Checked;
  dlgOption.cbShowLineNumbers.Checked := ShowLineNo.Checked;
  For I := 0 To EditorCount - 1 Do Editor[I].Gutter.ShowLineNumbers := ShowLineNo.Checked;
End;

Procedure TfrmJediEdit.EditDateTimeExecute(Sender: TObject);
Begin
  CurrentEditor.SelText := FormatDateTime(sDateTimeFormat, Now);
End;

Procedure TfrmJediEdit.SaveFile(Editor: TMySynEdit);
Var
  BackupName: String;
Begin
  If Assigned(Editor) Then Begin
    If Editor.FileName = '' Then SaveAsFile(Editor)
    Else Begin
      If BackupFile And FileExists(Editor.FileName) Then Begin
        BackupName := Editor.FileName;
        BackupName := ChangeFileExt(BackupName, '.BAK');
        If FileExists(BackupName) Then If OverwriteBackup Then DeleteFile(BackupName)
          Else Begin
            BackupName := GetUniqueFileNameInDir(ExtractFilePath(BackupName),
              ExtractFileName(BackupName) + '%x');
          End;
        BackupName := ExtractFileName(BackupName);
        ReNameFile(Editor.FileName, BackupName);
      End;
      If Editor.HexView Then Begin
        Editor.HexEdit.SaveToFile(Editor.FileName);
        Editor.LoadFromHexEdit;
      end else if (Editor.HighLighter = EditorDataModule.DfmSyn1) and  (not DFMWasText) then
      begin
        SaveStrings2DFMFile(Editor.Lines, Editor.FileName);
        Editor.SaveCollaspeList;
      end else begin
        Editor.Lines.SaveToFile(Editor.FileName);
        Editor.SaveCollaspeList;
      End;
      Editor.Modified := False;
      If Not CanUndoAfterSave Then Editor.ClearUndo;
      StatusChangeEvent(Editor, []);
    End;
  End;
End;

Procedure TfrmJediEdit.SaveAsFile(Editor: TMySynEdit);
Begin
  If SaveDialog.Execute Then Begin
    If Assigned(Editor) Then Begin
      If FileExists(SaveDialog.FileName) Then Begin
        Case MessageDlg(Format(tran.TMsg(sFileExist), [SaveDialog.FileName]), MtConfirmation,
          [MbYes, MbNo, MbCancel], 0) Of
          MrYes: ;
          MrNo: SaveAsFile(Editor);
          MrCancel: Exit;
        End;
      End;
      Editor.FileName := SaveDialog.FileName;
      (Editor.Parent As TTabSheet).Caption := ExtractFileName(Editor.FileName);
      SaveFile(Editor);
      Editor.HighLighter := GetExtHighLighter(UpperCase(ExtractFileExt(Editor.FileName)));
      PageControlChange(Self);
    End;
  End;
End;

Procedure TfrmJediEdit.QuitExecute(Sender: TObject);
Begin
  Close;
End;

Procedure TfrmJediEdit.FileExportExecute(Sender: TObject);
Var
  i: Integer;
  Exporter: TSynCustomExporter;
Begin
  ExportDialog.Defaultext := 'rtf';
  If ExportDialog.Execute Then Begin
    {$IFDEF debug}
    SendDebug('Export ...');
    {$ENDIF}
    For i := 0 To EditorDataModule.ComponentCount - 1 Do Begin
      If (EditorDataModule.Components[i] Is TSynCustomExporter) And ((EditorDataModule.Components[i] As TSynCustomExporter).FormatName = strExports.Strings[ExportDialog.FilterIndex - 1]) Then Begin
        Exporter := (EditorDataModule.Components[i] As TSynCustomExporter);
        If Assigned(Exporter) Then Begin
          With CurrentEditor Do Begin
            Exporter.Title := ExtractFileName(FileName) + ' - Export by ' + Application.Title;
            Exporter.UseBackGround := True;
            Exporter.ExportAll(CurrentEditor.Lines); // was Exporter.RunExport(1, LineCount, CurrentEditor, Highlighter);
            Exporter.SaveToFile(ExportDialog.FileName);
            Exporter.Clear;
          End;
        End;
        Break;
      End;
    End;
  End;
End;

Procedure TfrmJediEdit.FormDestroy(Sender: TObject);
Begin
  If Assigned(strExports) Then strExports.Free;
  If FindBuf <> Nil Then FreeMem(FindBuf);
End;

Procedure TfrmJediEdit.EditGotoLineExecute(Sender: TObject);
Var
  s: String;
  I: LongInt;
  Edit: TMySynEdit;
Begin
  Edit := CurrentEditor;
  If Edit.HexView Then Begin
    If Edit.HexEdit.DataSize < 1 Then Exit;
    I := Edit.HexEdit.GetCursorPos;
    s := IntToStr(I);
    If InputQuery(tran.TMsg(sGotoCaption), tran.TMsg(sGotoHexPrompt), s) Then Begin
      If Pos('0x', AnsiLowerCase(s)) = 1 Then s := '$' + Copy(s, 3, Maxint);
      I := StrToIntDef(s, -1);
      If Not Edit.HexEdit.Seek(I, SoFromBeginning, True) Then Raise Exception.Create(tran.TMsg(sInvalidPos));
    End;
  End Else Begin
    s := IntToStr(Edit.CaretY);
    If InputQuery(tran.TMsg(sGotoCaption), tran.TMsg(sGotoPrompt), s) Then Begin
      i := StrToInt(s);
      Edit.CaretY := i;
    End;
  End;
End;

Procedure TfrmJediEdit.SpecialLineColorsEvent(Sender: TObject; Line: Integer;
  Var Special: Boolean; Var FG, BG: TColor);
Var
  S: String;
  markList: TSynEditMarks;
  i: Integer;
Begin
  S := Copy((Sender As TMySynEdit).Lines[Line - 1], 1, Length(sCollaspePrmpt));
  If S = sCollaspePrmpt Then Begin
    Special := True;
    BG := CollaspeColor;
    FG := CollaspeFGColor;
  End Else Begin
    With (Sender As TMySynEdit) Do Begin
      If S = sExpandPrmpt Then Begin
        Special := True;
        BG := ExpandColor;
        FG := ExpandFGColor;
        Marks.GetMarksForLine(Line, markList);
        For i := 1 To maxMarks Do Begin
          If Assigned(markList[i]) Then Begin
            If (Not markList[i].IsBookmark) And (markList[i].ImageIndex = idExpandPic) Then Exit;
          End;
        End;
        CreateCollaspeMark(Line, 1, idExpandPic);
      End Else If ShowSpecialLineColor And (Line = (Sender As TMySynEdit).CaretY) Then Begin
        Special := True;
        BG := dlgOption.cboCurrentLineColor.ColorValue;
        FG := clBlack;
      End Else Begin
        With (Sender As TMySynEdit) Do Begin
          Special := False;
          Marks.GetMarksForLine(Line, markList);
          For i := 1 To maxMarks Do Begin
            If Assigned(markList[i]) Then Begin
              If (Not markList[i].IsBookmark) And (markList[i].ImageIndex = idCollaspePic) Then DeleteCollapse(markList[i].Column);
            End;
          End;
          Marks.ClearLine(Line);
        End;
      End;
    End;
  End;
End;

Procedure TfrmJediEdit.MRUManagerClick(Sender: TObject; Const RecentName,
  Caption: String; UserData: Integer);
Begin
  OpenFile(RecentName);
End;

Procedure TfrmJediEdit.HelpAboutExecute(Sender: TObject);
Begin
  DlgAbout := TDlgAbout.Create(Self);
  Try
    DlgAbout.ShowAbout;
  Finally
    DlgAbout.Free;
  End;
End;

Procedure TfrmJediEdit.ViewStatusbarExecute(Sender: TObject);
Begin
  ViewStatusbar.Checked := Not ViewStatusbar.Checked;
  StatusBar.Visible := ViewStatusbar.Checked;
End;

Procedure TfrmJediEdit.ViewStatusbarUpdate(Sender: TObject);
Begin
  ViewStatusbar.Checked := StatusBar.Visible;
End;

Procedure TfrmJediEdit.ViewToolbarExecute(Sender: TObject);
Begin
  ViewToolbar.Checked := Not ViewToolbar.Checked;
  tbMain.Visible := ViewToolbar.Checked;
End;

Procedure TfrmJediEdit.ViewToolbarUpdate(Sender: TObject);
Begin
  ViewToolbar.Checked := tbMain.Visible;
End;

Procedure TfrmJediEdit.SetOptionsExecute(Sender: TObject);
Var
  s: String;
Begin
  //if Not Assigned(dlgOption) then dlgOption := TdlgOption.Create(Application);
  If dlgOption.ShowModal = MrOk Then Begin
    EditorDataModule.StoreSettings(ExtractFilePath(Application.ExeName) + GetDefaultIniName);
    With EditorDataModule Do EnumerateHighlighters(cbxHighlighter.Items, s); //refesh filter
    OpenFileDialog.Filter := s;
    SaveDialog.Filter := s;

    With cbxHighlighter Do s := GetTemplateFileName(Items[ItemIndex]);
    If FileExists(s) Then EditorDataModule.AutoComplete1.AutoCompleteList.LoadFromFile(s);
  End;
  If CurrentEditor <> Nil Then CurrentEditor.InValidate;
End;

Procedure TfrmJediEdit.EditReadonlyExecute(Sender: TObject);
Var
  I: Integer;
  Edit: TMySynEdit;
Begin
  EditReadonly.Checked := Not EditReadonly.Checked;
  For I := 0 To EditorCount - 1 Do Begin
    Edit := Editor[I];
    Edit.ReadOnly := EditReadonly.Checked;
    Edit.HexEdit.ReadOnlyView := EditReadonly.Checked;
  End;
End;

Procedure TfrmJediEdit.BugRptClick(Sender: TObject);
Var
  s: String;
Begin
  With AppVerInfo Do Try
    s := 'mailto:' + Values['AuthorEmail'];
  Finally
    Free;
  End;
  ShellExecute($80, 'open', PChar(s), '', '', SW_SHOWDEFAULT);
End;

Function TfrmJediEdit.CloseFile(Editor: TMySynEdit): TModalResult;
Var
  s: String;
Begin
  Result := MrNo;
  If Assigned(Editor) And Editor.Modified Then Begin
    s := Editor.FileName;
    If s = '' Then s := tran.TMsg(DefaultFileName);
    Result := MessageDlg(Format(tran.TMsg(SWarningText), [s]), MtConfirmation,
      [MbYes, MbNo, MbCancel], 0);
    Case Result Of
      MrYes: SaveFile(Editor);
      MrCancel: Exit;
    End;
    s := Editor.FileName;
    AddFileToMRL(s);
  End;
End;

Procedure TfrmJediEdit.ControlBar1GetSiteInfo(Sender: TObject;
  DockClient: TControl; Var InfluenceRect: TRect; MousePos: TPoint;
  Var CanDock: Boolean);
Begin
  CanDock := (DockClient Is TToolBar);
End;

Procedure TfrmJediEdit.PageControlGetSiteInfo(Sender: TObject;
  DockClient: TControl; Var InfluenceRect: TRect; MousePos: TPoint;
  Var CanDock: Boolean);
Begin
  CanDock := (DockClient Is TMySynEdit);
  //    (Sender as TPageControl).ActivePage.Caption := ExtractFileName((Target as TMySynEdit).FileName);
End;

Procedure TfrmJediEdit.PageControlDockOver(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer; State: TDragState;
  Var Accept: Boolean);
Begin
  Accept := (Source.Control Is TMySynEdit);
End;

Procedure TfrmJediEdit.SetAllowDroping(Const Value: Boolean);
Begin
  FAllowDroping := Value;
  DragAcceptFiles(Handle, FAllowDroping);
End;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -