PopupFrm.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:3k
源码类别:

RichEdit

开发平台:

Delphi

  1. unit PopupFrm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   RVStyle, RVScroll, RichView, ExtCtrls;
  6. type
  7.   TfrmPopup = class(TForm)
  8.     Panel1: TPanel;
  9.     rv: TRichView;
  10.     rvs: TRVStyle;
  11.     procedure rvKeyPress(Sender: TObject; var Key: Char);
  12.     procedure rvClick(Sender: TObject);
  13.     procedure FormDeactivate(Sender: TObject);
  14.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  15.   private
  16.     { Private declarations }
  17.     procedure Build(DemoNo: Integer);
  18.     procedure MoveToMouse;
  19.   public
  20.     { Public declarations }
  21.     procedure ShowTopic(DemoNo: Integer);
  22.   end;
  23. implementation
  24. {$R *.DFM}
  25. uses MainFrm;
  26. procedure TfrmPopup.rvKeyPress(Sender: TObject; var Key: Char);
  27. begin
  28.   Key:=#0;
  29.   Close;
  30. end;
  31. procedure TfrmPopup.rvClick(Sender: TObject);
  32. begin
  33.   Close;
  34. end;
  35. procedure TfrmPopup.FormDeactivate(Sender: TObject);
  36. begin
  37.   Close;
  38. end;
  39. procedure TfrmPopup.FormClose(Sender: TObject; var Action: TCloseAction);
  40. begin
  41.   Action := caFree;
  42. end;
  43. procedure TfrmPopup.Build(DemoNo: Integer);
  44. begin
  45.   case DemoNo of
  46.     1:
  47.       begin
  48.         rv.AddBulletEx('',1,frmMain.il,1);
  49.         rv.Add('"Checkpoints"', 1);
  50.         rv.AddNL('Synchronizing document scrolling with list of contents', 0,0);
  51.         rv.AddNL('(This demo loads *.pas files from application directory)', 0,0);
  52.       end;
  53.     2:
  54.       begin
  55.         rv.AddBulletEx('',1,frmMain.il,1);
  56.         rv.Add('Customizing Styles', 1);
  57.         rv.AddNL('Interactive customizing of document', 0,0);
  58.       end;
  59.     3:
  60.       begin
  61.         rv.AddBulletEx('',1,frmMain.il,1);
  62.         rv.Add('Query Summary', 1);
  63.         rv.AddNL('Complex query at one look', 0,0);
  64.       end;
  65.     4:
  66.       begin
  67.         rv.AddBulletEx('',1,frmMain.il,1);
  68.         rv.Add('Interactive document', 1);
  69.         rv.AddNL('Document is a control itself', 0,0);
  70.       end;
  71.     5:
  72.       begin
  73.         rv.AddBulletEx('',1,frmMain.il,1);
  74.         rv.Add('Chat Simulation', 1);
  75.         rv.AddNL('Autoscroll, URL detection', 0,0);
  76.       end;
  77.     6:
  78.       begin
  79.         rv.AddBulletEx('',1,frmMain.il,1);
  80.         rv.Add('Credits Demo:', 1);
  81.         rv.AddNL('Scrolling text and images on timer', 0,0);
  82.       end;
  83.     7:
  84.       begin
  85.         rv.AddBulletEx('',1,frmMain.il,1);
  86.         rv.Add('Search and mark:', 1);
  87.         rv.AddNL('Search and mark words in editor', 0,0);
  88.         rv.AddNL('(This demo loads MainFrm.pas from application directory)', 0,0);        
  89.       end;
  90.   end;
  91.   rv.Format;
  92.   Height := rv.DocumentHeight+20;
  93. end;
  94. procedure TfrmPopup.MoveToMouse;
  95. var p: TPoint;
  96. begin
  97.   GetCursorPos(p);
  98.   if p.x+Width>Screen.Width then
  99.     p.x := Screen.Width-Width;
  100.   if p.y+Height>Screen.Height then
  101.     p.y := Screen.Height-Height;
  102.   Left := p.x;
  103.   Top  := p.y;
  104. end;
  105. procedure TfrmPopup.ShowTopic(DemoNo: Integer);
  106. begin
  107.   Build(DemoNo);
  108.   MoveToMouse;
  109.   Show;
  110. end;
  111. end.