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

📄 viewer.pas

📁 ziptv为delphi控件
💻 PAS
字号:
Unit Viewer;

Interface

Uses
   SysUtils,
   WinTypes,
   WinProcs,
   Messages,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   StdCtrls,
   ExtCtrls,
   ComCtrls;

Type
   TFrmViewer = Class(TForm)
      RtfCode: TRichEdit;
      SbrViewer: TStatusBar;
      Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
      Procedure RtfCodeClick(Sender: TObject);
      Procedure RtfCodeKeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
   Public
      Procedure OpenAt(l, BytePos: Integer);
   End;

Var
   FrmViewer: TFrmViewer;

Implementation

{$R *.DFM}

Uses
   RichEdit;

//-------------------------------------------------------------

Procedure TFrmViewer.FormClose(Sender: TObject; Var Action: TCloseAction);
Begin
   Action := caFree;                    // Destroy form when closed
End;
//-------------------------------------------------------------

Procedure TFrmViewer.OpenAt(l, BytePos: Integer);
Var
   ll,
      LineNum: Integer;
Begin
   Show;
   SendMessage(RtfCode.Handle, em_SetSel, BytePos, BytePos + l);

   LineNum := SendMessage(RtfCode.Handle, em_LineFromChar, BytePos, 0);

   // Move selected line to top of window
   ll := SendMessage(RtfCode.Handle, em_GetFirstVisibleLine, 0, 0);
   SendMessage(RtfCode.Handle, em_LineScroll, 0, LineNum - ll);
   RtfCodeClick(Self);                  // Update the status display
End;
//-------------------------------------------------------------

Procedure TFrmViewer.RtfCodeClick(Sender: TObject);
Var
   r: TCharRange;
   l, c: Integer;
Begin
   With RtfCode Do
   Begin
      SendMessage(Handle, em_ExGetSel, 0, Longint(@r));
      l := SendMessage(Handle, em_ExLineFromChar, 0, r.cpMin);
      c := r.cpMin - SendMessage(Handle, em_LineIndex, l, 0);
   End;
   SbrViewer.SimpleText := Format('Line: %d  Col: %d', [l + 1, c + 1]);
End;
//-------------------------------------------------------------

Procedure TFrmViewer.RtfCodeKeyDown(Sender: TObject;
   Var Key: Word; Shift: TShiftState);
Begin
   RtfCodeClick(Sender);
End;
//-------------------------------------------------------------

End.

⌨️ 快捷键说明

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