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

RichEdit

开发平台:

Delphi

  1. {==============================================================================}
  2. {
  3.   Mail merge application: part 1 - template editor.
  4.   Editing template and data for fields.
  5.   Template: RVStyle for template (RVStyle2) has two text styles
  6.   (0-th for normal text, 1 - for fields (with special Protection options)
  7.   Other styles can be added dynamically (right-click editor in Delphi,
  8.   "Settings" in the context menu).
  9.   Template is stored in Template.rvf.
  10.   Data for fields: stored in Database.db.
  11.   There are two fields:
  12.   - Code - string field
  13.   - Data - rvf field.
  14.   Styles can be added dynamically in Data editor.
  15. }
  16. {==============================================================================}
  17. unit TEFrm;
  18. interface
  19. uses
  20.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  21.   Dialogs, DB, DBTables, RVScroll, RichView, RVEdit, DBRV, ComCtrls,
  22.   StdCtrls, Mask, DBCtrls, RVStyle, ExtCtrls;
  23. type
  24.   TfrmTE = class(TForm)
  25.     PageControl1: TPageControl;
  26.     TabSheet1: TTabSheet;
  27.     TabSheet2: TTabSheet;
  28.     DBRichViewEdit1: TDBRichViewEdit;
  29.     DataSource1: TDataSource;
  30.     Table1: TTable;
  31.     DBNavigator1: TDBNavigator;
  32.     RVStyle1: TRVStyle;
  33.     DBEdit1: TDBEdit;
  34.     Label1: TLabel;
  35.     Label2: TLabel;
  36.     OpenDialog1: TOpenDialog;
  37.     RVStyle2: TRVStyle;
  38.     RichViewEdit1: TRichViewEdit;
  39.     Button1: TButton;
  40.     Label3: TLabel;
  41.     procedure DataSource1DataChange(Sender: TObject; Field: TField);
  42.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  43.     procedure Button1Click(Sender: TObject);
  44.     procedure FormCreate(Sender: TObject);
  45.   private
  46.     { Private declarations }
  47.   public
  48.     { Public declarations }
  49.   end;
  50. var
  51.   frmTE: TfrmTE;
  52. implementation
  53. {$R *.dfm}
  54. procedure TfrmTE.DataSource1DataChange(Sender: TObject; Field: TField);
  55. begin
  56.   if Table1.RecordCount=0 then
  57.     Label2.Caption := '(empty)'
  58.   else if Table1.RecNo<1 then
  59.     Label2.Caption := '(new)'
  60.   else
  61.     Label2.Caption := Format('Record %d of %d', [Table1.RecNo, Table1.RecordCount]);
  62. end;
  63. procedure TfrmTE.FormCreate(Sender: TObject);
  64. begin
  65.   RichViewEdit1.Clear;
  66.   RichViewEdit1.LoadRVF(ExtractFilePath(Application.ExeName)+'template.rvf');
  67.   RichViewEdit1.Format;
  68. end;
  69. procedure TfrmTE.FormClose(Sender: TObject; var Action: TCloseAction);
  70. begin
  71.   if Table1.State in [dsEdit, dsInsert] then
  72.     Table1.Post;
  73.   RichViewEdit1.SaveRVF(ExtractFilePath(Application.ExeName)+'template.rvf', False);
  74. end;
  75. procedure TfrmTE.Button1Click(Sender: TObject);
  76. var s: String;
  77. begin
  78.   s := '';
  79.   if InputQuery('Insert Field', 'Field code:', s) then begin
  80.     if s='' then
  81.       exit;
  82.     // s must be equal to one of Codes in the database
  83.     RichViewEdit1.SetFocus;
  84.     RichViewEdit1.CurTextStyleNo := 1;
  85.     RichViewEdit1.InsertText(s, False);
  86.   end;
  87. end;
  88. end.