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

📄 sourceeditunit.pas

📁 一个不用编写任何代码的DELPHI停靠窗体的控件原码
💻 PAS
字号:
unit SourceEditUnit;

interface

uses
  Windows, Messages, SysUtils{, Variants}, Classes, Graphics, Controls, Forms,
  Dialogs, mwHighlighter, DcjCppSyn, mwCustomEdit;

type
  TSourceEditForm = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
    procedure mwCustomEdit1StatusChange(Sender: TObject;
      Changes: TmwStatusChanges);
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
  public
    { Public declarations }
    mwEdit: TmwCustomEdit;
    DcjCppSyn: TDcjCppSyn;
    procedure LoadFromFile(AFileName: string);

  end;
var
  SourceEditForm: TSourceEditForm;

implementation

uses MainFormUnit;

{$R *.dfm}

{ TSourceEditForm }

procedure TSourceEditForm.LoadFromFile(AFileName: string);
begin
  mwEdit.Lines.LoadFromFile(AFileName);
  Caption := AFileName;
end;

procedure TSourceEditForm.FormCreate(Sender: TObject);
begin
  mwEdit := TmwCustomEdit.Create(Self);
  mwEdit.Parent := Self;
  mwEdit.Align := alClient;
//  mwEdit.ReadOnly := True;
//  mwEdit.Font.Name := 'Fixedsys';
  mwEdit.Font.Size := 9;
  mwEdit.Gutter.Width := 20;
  mwEdit.RightEdge := 0;
  mwEdit.MaxUndo := $FFFF;

  mwEdit.OnStatusChange := mwCustomEdit1StatusChange;

  DcjCppSyn := TDcjCppSyn.Create(Self);
  DcjCppSyn.KeyAttri.Foreground := clBlue;
  DcjCppSyn.NumberAttri.Foreground := clFuchsia;
  DcjCppSyn.StringAttri.Foreground := clRed;
  DcjCppSyn.CommentAttri.Foreground := clTeal;
  DcjCppSyn.DirecAttri.Foreground := clPurple;
  DcjCppSyn.CommentAttri.Style := [];

  mwEdit.HighLighter := DcjCppSyn;
end;

procedure TSourceEditForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
  mwEdit.Free;
  DcjCppSyn.Free;
  MainForm.ActivemwEdit := nil;
end;

procedure TSourceEditForm.mwCustomEdit1StatusChange(Sender: TObject;
  Changes: TmwStatusChanges);
begin
  MainForm.StatusBar1.Panels[0].Text := Format('Ln %d, Col %d', [mwEdit.CaretY, mwEdit.CaretX]);
end;

procedure TSourceEditForm.WMSize(var Message: TWMSize);
begin
  if (Message.SizeType = SIZE_MAXIMIZED) or
    (Message.SizeType = SIZE_MINIMIZED) or
    (Message.SizeType = SIZE_RESTORED) then
    MainForm.MainMenu_ToolBar.Invalidate;
  inherited;
end;

procedure TSourceEditForm.FormActivate(Sender: TObject);
begin
  MainForm.ActivemwEdit := mwEdit;
end;

end.

⌨️ 快捷键说明

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