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

RichEdit

开发平台:

Delphi

  1. {=============================} unit Unit1; {==================================}
  2. { Main properties were set at design time:                                     }
  3. { Table1.TableName           := 'SampleTable.db'; // Paradox table             }
  4. { Table1.ReadOnly            := False;                                         }
  5. { DataSource1.Dataset        := Table1;                                        }
  6. { DBNavigator1.DataSource    := DataSource1;                                   }
  7. { DBEdit1.DataSource         := DataSource1;                                   }
  8. { DBRichViewEdit1.DataSource := DataSource1;                                   }
  9. { DBRichViewEdit1.Style      := RVStyle1;                                      }
  10. { DBEdit1.DataField          := 'Caption';  // Alphanumeric field              }
  11. { DBRichViewEdit1.DataField  := 'RVFField'; // Binary field                    }
  12. { nbEdit was removed from DBNavigator1.VisibleButtons (because of autoedit)    }
  13. {------------------------------------------------------------------------------}
  14. { DBRichViewEdit has data-aware features that require no code to use           }
  15. { (just like most of other Delphi db controls).                                }
  16. { Some more event handlers are needed for advanced RVF features, such as saving}
  17. { "bullets" and "hotspots". There is no difference here with saving/loading    }
  18. { RVF files.                                                                   }
  19. { The code below opens table, updates label displaying record number,          }
  20. { provides "bold" button functionality.                                        }
  21. {------------------------------------------------------------------------------}
  22. { Note: changes after last posting are not saved when exiting application.     }
  23. {==============================================================================}
  24. interface
  25. uses
  26.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  27.   ExtCtrls, DBCtrls, RVScroll, RichView, RVEdit, DBRV, RVStyle, DB,
  28.   DBTables, StdCtrls, Mask, Buttons;
  29. type
  30.   TForm1 = class(TForm)
  31.     Table1: TTable;
  32.     DataSource1: TDataSource;
  33.     RVStyle1: TRVStyle;
  34.     DBRichViewEdit1: TDBRichViewEdit;
  35.     DBNavigator1: TDBNavigator;
  36.     Label1: TLabel;
  37.     Label2: TLabel;
  38.     DBEdit1: TDBEdit;
  39.     Label3: TLabel;
  40.     SpeedButton1: TSpeedButton;
  41.     procedure FormCreate(Sender: TObject);
  42.     procedure DataSource1DataChange(Sender: TObject; Field: TField);
  43.     procedure DBRichViewEdit1CurTextStyleChanged(Sender: TObject);
  44.     procedure SpeedButton1Click(Sender: TObject);
  45.   private
  46.     { Private declarations }
  47.     procedure UpdateStatusLabel;
  48.   public
  49.     { Public declarations }
  50.   end;
  51. var
  52.   Form1: TForm1;
  53. implementation
  54. {$R *.DFM}
  55. procedure TForm1.FormCreate(Sender: TObject);
  56. begin
  57.   // Opening table...
  58.   Table1.DatabaseName := ExtractFilePath(Application.ExeName);
  59.   Table1.Open;
  60.   // For demonstrating rich text ability of TDBRichViewEdit,
  61.   // we've added "Bold" button. It will switch the 0-th and the 1-st styles.
  62.   // Making 1-st text style a bold copy of 0-th style...
  63.   RVStyle1.TextStyles[1] := RVStyle1.TextStyles[0];
  64.   RVStyle1.TextStyles[1].Style := RVStyle1.TextStyles[1].Style+[fsBold];
  65. end;
  66. procedure TForm1.UpdateStatusLabel;
  67. begin
  68.   // where we are?
  69.   if Table1.RecordCount=0 then
  70.     Label3.Caption := '(empty)'
  71.   else if Table1.RecNo<1 then
  72.     Label3.Caption := '(new)'
  73.   else
  74.     Label3.Caption := Format('Record %d of %d', [Table1.RecNo, Table1.RecordCount]);
  75. end;
  76. procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
  77. begin
  78.   UpdateStatusLabel;
  79. end;
  80. procedure TForm1.DBRichViewEdit1CurTextStyleChanged(Sender: TObject);
  81. begin
  82.   SpeedButton1.Down := DBRichViewEdit1.CurTextStyleNo<>0;
  83. end;
  84. procedure TForm1.SpeedButton1Click(Sender: TObject);
  85. begin
  86.   // switching 1-st and 0-th styles
  87.   if SpeedButton1.Down then
  88.     DBRichViewEdit1.ApplyTextStyle(1)
  89.   else
  90.     DBRichViewEdit1.ApplyTextStyle(0);
  91. end;
  92. end.