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

📄 fmain.pas

📁 Delphi编写的一个支持语法高亮显示和很多语言的文本编辑器
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  bHideScrollBarsAsNeeded := reg.ReadReg('bHideScrollBarsAsNeeded', False);
  bHalfPageScroll := reg.ReadReg('bHalfPageScroll', True);
  bScrollbyOneLess := reg.ReadReg('bScrollbyOneLess', False);
  bScrollPastEndofFile := reg.ReadReg('bScrollPastEndofFile', False);
  bScrollPastEndofLine := reg.ReadReg('bScrollPastEndofLine', True);
  bShowScrollHint := reg.ReadReg('bShowScrollHint', True);
  bScrollHintFollowsMouse := reg.ReadReg('bScrollHintFollowsMouse', False);
  bTabsToSpaces := reg.ReadReg('bTabsToSpaces', True);
  bTrimTrailingSpaces := reg.ReadReg('bTrimTrailingSpaces', True);
  bGroupUndo := reg.ReadReg('bGroupUndo', True);
  bDisableScrollArrows := reg.ReadReg('bDisableScrollArrows', False);
  iInsertCaretMode := Reg.ReadReg('iInsertCaretMode', 0);
  iOverwriteCaretMode := Reg.ReadReg('iOverwriteCaretMode', 3);
  bHighlightTabs := Reg.ReadReg('bHighlightTabs', True);
  gcHighlightTabs := Reg.ReadReg('gcHighlightTabs', clRed);
  bSingleClick := reg.ReadReg('bSingleClick', false);
  { External Browser }
  sExternalBrowser := Reg.ReadReg('ExternalBrowser', '');
  if sExternalBrowser = '' then
    sExternalBrowser := reg.GetProgramAssociation('HTM');

  { Editor - Gutter Options }
  bGutterVisible := reg.ReadReg('bGuttervisible', True);
  bGutterAutosize := reg.ReadReg('bGutterAutoSize', True);
  bGutterShowLineNumbers := reg.ReadReg('bGutterShowLineNumbers', True);
  bGutterStartAtZero := reg.ReadReg('bGutterStartAtZero', False);
  bGutterShowLeadingZeros := reg.ReadReg('bGutterShowLeadingZeros', False);
  bGutterUseGutterFont := reg.ReadReg('bGutterUseGutterFont', True);
  //fGutterFont := TFont(Reg.ReadReg('fGutterFont'));
  cGutterColor := Reg.ReadReg('cGutterColor', 13026246);

  { Brace Highlighting }
  gcMatchBracketColor := Reg.ReadReg('BracketColor', clNavy);
  gbHighlightBrackets := reg.ReadReg('BraceColor', True);
  gcBadBracketColor := Reg.ReadReg('BadBracketColor', clYellow);
  gbHighlightBadBrackets := reg.ReadReg('BadBraceColor', True);
  gcMatchBracketColorBack := Reg.ReadReg('BracketColorBack', clMoneyGreen);
  gcBadBracketColorBack := Reg.ReadReg('BadBracketColorBack', clRed);

  strDictionary := Reg.ReadReg('strDictionary', '');
  bAutoCheck := reg.ReadReg('bAutoCheck', False);
  bFromCursor := reg.ReadReg('bFromCursor', False);
  bIgnoreSingleCharacters := reg.ReadReg('bIgnoreSingleCharacters', True);
  bIgnoreNumbers := reg.ReadReg('bIgnoreNumbers', True);
  iHashLength := Reg.ReadReg('iHashLength', 4);
  gcPenColor := Reg.ReadReg('gcPenColor', clRed);

  bAEnabled := reg.ReadReg('bAEnabled', False);
  bAMouseDown := reg.ReadReg('bAMouseDown', False);
  bABeep := reg.ReadReg('bABeep', False);
  bAIgnore := reg.ReadReg('bAIgnore', False);
  bAMaintain := reg.ReadReg('bAMaintain', False);

  sDefaultHighlighter := reg.ReadReg('sDefaultHighlighter', 'C++');
  bUseDefault := reg.ReadReg('bDefaultHighlighter', True);
  With dmMain.synSpell do begin
    if FileExists(strDictionary) then begin
      dmMain.SYnspell.DictionaryPath := ExtractFilePath(strDictionary);
      dmMain.SYnspell.UserDirectory := DictionaryPath;
      dmMain.SYnspell.LoadDictionary('', strDictionary);
      dmMain.synSpell.Options := [sscoSuggestWords];
      if bAutoCheck = True then
        Options := Options + [sscoAutoSpellCheck]
      else
        Options := Options - [sscoAutoSpellCheck];
      if bFromCursor = True then
        Options := Options + [sscoStartFromCursor]
      else
        Options := Options - [sscoStartFromCursor];
      if bIgnoreSingleCharacters = True then
        Options := Options + [sscoIgnoreSingleChars]
      else
        Options := Options - [sscoIgnoreSingleChars];
      if bIgnoreNumbers = True then
        Options := Options + [sscoIgnoreWordsWithNumbers]
      else
        Options := Options - [sscoIgnoreWordsWithNumbers];
      PenColor := gcPenColor;
      HashLength := iHashLength;
    end;
  end;
  if bAEnabled then begin
    with dmMain.SynAutoCorrect do begin
      Enabled := true;
      if FileExists(ExtractFilePath(Application.exename) + 'autocorr.dat') then
        LoadFromList(ExtractFilePath(Application.exename) + 'autocorr.dat');
      if bAMouseDown then
        Include(AutoCorrOp, ascoCorrectOnMouseDown);
      if bAIgnore then
        Include(AutoCorrOp, ascoIgnoreCase);
      if bAMaintain then
        Include(AutoCorrOp, ascoMaintainCase);
      Options := AutoCorrOp;
    end;
  end;


  { Editor - Right Edge Options }
  iEdgeColumn := Reg.ReadReg('iEdgeColumn', 80);
  iEdgeColor := Reg.ReadReg('iEdgeColor', 13026246);
  { Editor - Line/Tab Spacing Options }
  iExtraLines := Reg.ReadReg('iExtraLines', 0);
  iTabWidth := Reg.ReadReg('iTabWidth', 8);
  { Editor - Bookmark Options }
  bBookmarkKeys := reg.ReadReg('bBookmarkKeys', True);
  bBookmarksVisible := reg.ReadReg('bBookmarksVisible', True);
  { Editor - Main }
  fGutterFont := TFont.Create;
  With fGutterFont Do begin
    Size := Reg.ReadReg('iGutterSize', 8);
    Styled := [];
    if Reg.ReadReg('bGutterBold', False) then
      Include(Styled, fsBold);
    if Reg.ReadReg('bGutterItalic', False) then
      Include(Styled, fsItalic);
    if Reg.ReadReg('bGutterStrikeOut', False) then
      Include(Styled, fsStrikeOut);
    if Reg.ReadReg('bGutterUnderline', False) then
      Include(Styled, fsUnderline);
    Style := Styled;
    Name := Reg.ReadReg('sGutterName', 'Terminal');
  end;
  fEditorFont := TFont.Create;
  with fEditorFont do begin
    Size := Reg.ReadReg('iEditorSize', 10);
    Styled := [];
    if Reg.ReadReg('bEditorBold', False) then
      Include(Styled, fsBold);
    if Reg.ReadReg('bEditorItalic', False) then
      Include(Styled, fsItalic);
    if Reg.ReadReg('bEditorStrikeOut', False) then
      Include(Styled, fsStrikeOut);
    if Reg.ReadReg('bEditorUnderline', False) then
      Include(Styled, fsUnderline);
    Style := Styled;
    Name := Reg.ReadReg('sEditorName', 'Courier New');
  end;
  Reg.Destroy;
  LoadTools;
end;

procedure Tfrmmain.LoadSettings;
var
  m_sIniFileName: String;
  pch: TPageControlHost;
begin
  { Dock the stuff }
  {tbStandard.ManualDock(pgTop);
  tbWeb.ManualDock(pgTop);
  tbSearch.ManualDock(pgtop);
  tbMacros.ManualDock(pgTop);
  tbTools.ManualDock(pgTop);}
  tbSearch.Repaint;
  Self.Resize;
  //pgTop.ActivePage := pgTop.Pages[0];
  frmFiles := TfrmFiles.Create(Self);
  frmTags := TfrmTags.Create(self);
  frmProjects := TfrmProjects.Create(self);
  frmSnippets := TfrmSnippets.Create(self);
  frmQuickFtp := TfrmQuickFTP.Create(Self);
  frmOutput := TfrmOutput.Create(self);
  Grep := TfrmGrepResults.Create(self);
  DockHandler.LoadDesktop('Software\cEdit\Docking');
  if DockHandler.bLoadSuccess = true then
    exit;
  dpLeft.DockOrientation := doVertical;
  pch := TPageControlHost.Create(Self);
  pch.Visible := False;
  frmfiles.ManualDock(pch.PageControl);
  frmProjects.ManualDock(pch.PageControl);
  frmprojects.show;

  frmQuicKFTP.ManualDock(pch.PageControl);
  frmFiles.Show;
  frmQuickFTP.show;
  pch.ManualDock(dpLeft);
  pch.Visible := True;
  pch.PageControl.ActivePage := pch.PageControl.Pages[0];
  pch := TPageControlHost.Create(Self);
  pch.Visible := False;
  frmTags.ManualDock(pch.PageControl);
  frmSnippets.ManualDock(pch.PageControl);
  frmSnippets.Show;
  
  frmtags.show;
  pch.ManualDock(dpRight);
  pch.Visible := True;
  pch.PageControl.ActivePage := pch.PageControl.Pages[0];
  pch := TPageControlHost.Create(Self);
  pch.Visible := False;

  frmOutput.ManualDock(pch.pageControl);
  Grep.ManualDock(pch.pageControl);
  frmOutput.Show;
  grep.Show;
  pch.ManualDock(dpBottom);
  pch.Visible := True;
  pch.PageControl.ActivePage := pch.PageControl.Pages[0];
  DockHandler.Refresh;
end;
procedure TfrmMain.ActivationFromOtherInstance;
var
  sl: TStringList;
  i: Integer;
  sFileName: String;
begin
  Application.Restore;
  Application.BringToFront;
  sl := TStringList.Create;
  sl.CommaText := rcvStr;
  if sl.Count > 0 then sl.Delete(0);
  for i := 0 to sl.Count - 1 do begin
    sFileName := sl[i];
    if FileExists(sFileName) then begin
      dmMain.NewDoc(sFileName);
    end;
  end;
  sl.Free;
end;

procedure TfrmMain.FormShow(Sender: TObject);
var
  sParam: String;
  i: Integer;
begin
  dmMain.LoadHighlighters;
  
  FileView1.Checked := frmFiles.Visible;
  QuickFTP1.Checked := frmQuickFTP.Visible;
  QuickTags1.Checked := frmTags.Visible;
  ProjectView1.Checked := frmProjects.Visible;
  SnippetsView1.Checked := frmSnippets.Visible;
  DebugOutput2.Checked := frmOutput.Visible;
  FindInFiles2.checked := Grep.Visible;
  main1.Checked := tbrMain.Visible;
  abbedView1.Checked := bMDITabs;
  search2.Checked := tbSearch.Visible;
  Standard1.Checked := tbrProg.Visible;
  Editor1.Checked := tbStandard.Visible;
  Web1.Checked := tbWeb.Visible;
  Macro1.Checked := tbMacros.Visible;
  ools1.Checked := tbTools.Visible;
  oolPalette1.Checked := pnlPage.Visible;
  StatusBar1.Checked := bStatusBar;
  DockHandler.Refresh;
  dpBottom.Height := dpBottom.Height - 1;
  dpBottom.Height := dpBottom.Height + 1;
  if pgTop.Visible then
    for i := 0 to pgTop.PageCount - 1 do
      if pgTop.Pages[i].TabVisible = true then begin
        pgTop.Pages[i].SetFocus;
        break;
      end;

{  FileView1.Checked := frmFiles.Visible;
  QuickTags1.Checked := frmTags.Visible;
  ProjectView1.Checked := frmProjects.Visible;
  SnippetsView1.Checked := frmSnippets.Visible;
  DebugOutput1.Checked := frmOutput.Visible;
  FindInFiles1.Checked := Grep.Visible;}

  // Arrange the windows
//  Cascade;
end;


function TfrmMain.ShowFile(sFileName: String; nLine: Integer; bError: Boolean; bChangeProject: Boolean; mdi: TfrmDoc = nil): TfrmDoc;
var
  wnd: HWnd;
begin
  if mdi = nil
    then Result := ChildFromFileName(sFileName)
    else Result := mdi;
  if Result <> nil then begin
    if Result <> ActiveMDIChild then begin
      wnd := GetWindow(Result.Handle, GW_HWNDNEXT);
      SendMessage(ClientHandle, WM_MDINEXT, wnd, 1);
    end;
  end else begin
    sFileName := StringReplace(sFileName, '/', '\', [rfReplaceAll]);
    dmMain.NewDoc(sFileName);
  end;
end;

function TfrmMain.ChildFromFileName(sFileName: String): TfrmDoc;
var
  i: Integer;
  sTransformedName, sTransformedResultName: String;
begin
  i := 0;
  Result := nil;
  sTransformedName := StringReplace(sFileName, '/', '\', [rfReplaceAll]);
  while i < MDIChildCount do begin
    Result := TfrmDoc(MDIChildren[i]);
      sTransformedResultName := StringReplace(Result.FileName, '/', '\', [rfReplaceAll]);
      if UpperCase(sTransformedResultName) = UpperCase(sTransformedName) then break;
  inc(i);
  end;
end;


procedure TfrmMain.pgTbarDockDrop(Sender: TObject; Source: TDragDockObject;
  X, Y: Integer);
begin
//  pgTBar.ActivePage.Caption := 'test';
end;


function TfrmMain.GetVisibleDockClientCount(win: TWinControl): Integer;
var
  i: Integer;
begin
  Result := 0;
  for i := 0 to win.DockClientCount - 1 do begin
    if win.DockClients[i].Visible then inc(Result);
  end;
end;
{
procedure TfrmMain.HandleSetOtherHostsAsString(Sender: TDockHandler; sValue: String);
var
  i: Integer;
  sl: TStringList;
  sName: String;
  cmp: TComponent;
  frm: TDockableForm;
  mdi: tfrmDoc;
begin
  sl := TStringList.Create;
  sl.CommaText := sValue;
  for i := 0 to sl.Count - 1 do begin
    sName := sl.Names[i];
    cmp := FindComponent(sl.Values[sName]);
    if cmp <> nil then begin
      if cmp is TDockableForm then begin
        frm := TDockableForm(cmp);
        docCount:=docCount+1;
        mdi := NewDoc('Document' + IntToStr(docCount));
        frm.Tag := Integer(mdi);
        mdi.UseDockManager := True;
        mdi.DockSite := True;
        DockHandler.RegisterDockHost(mdi);
        frm.ManualDock(mdi);
        frm.Visible := True;
      end;
    end else if UpperCase(sName) = 'FRMMAIN' then begin
      AsString := sl.Values[sName];
    end;
  end;
  sl.Free;
end;


function TfrmMain.HandleGetOtherHostsAsString(Sender: TDockHandler): String;
var
  i: Integer;
  sl: TStringList;
  mdi: tfrmDoc;
begin
  Result := '';
  sl := TStringList.Create;
  sl.Values['MainForm'] := AsString;
  for i := 0 to Sender.DockHostCount - 1 do begin
    if Sender.DockHosts[i] is tfrmDoc then begin
      mdi := tfrmDoc(Sender.DockHosts[i]);
      if mdi.DockClientCount = 1 then begin
        sl.Values[mdi.Name] := mdi.DockClients[0].Name;
      end;
    end;
  end;
  Result := sl.CommaText;
  sl.Free;
end;
 }
procedure TfrmMain.FormDestroy(Sender: TObject);
var i: Integer;
begin
  mru.SaveMenuItems;
  DockHandler.SaveDesktop('Software\cEdit\Docking');

  Self := Nil;
end;

procedure TfrmMain.ctBarTopResize(Sender: TObject);
begin
//  pgTbar.Width := ctBarTop.ClientWidth - pgTBar.Left;
end;

procedure TfrmMain.ctBarTopEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
// pgTbar.Width := ctBarTop.ClientWidth - pgTBar.Left;
end;

procedure TfrmMain.ctBarTopGetSiteInfo(Sender: TObject;
  DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
  var CanDock: Boolean);
begin
  CanDock := (DockClient.Tag = 1);
end;

procedure TfrmMain.pgTbarGetSiteInfo(Sender: TObject; DockClient: TControl;
  var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
begin

⌨️ 快捷键说明

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