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

📄 edfieldunit1.pas

📁 wptools5 pro 完整源代码 Msword界面的文本编辑器源代码
💻 PAS
字号:
unit EdFieldUnit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, WPTbar, WPRTEDefs, WPCTRMemo, WPCTRRich, WPPanel,
  ComCtrls, Buttons, ExtCtrls;

type
  TWPEdTest = class(TForm)
    PageControl1: TPageControl;
    EditTab: TTabSheet;
    TemplateTab: TTabSheet;
    DataTab: TTabSheet;
    WPToolPanel1: TWPToolPanel;
    DataEdit: TWPRichText;
    WPToolBar1: TWPToolBar;
    TemplateEdit: TWPRichText;
    FieldNames: TMemo;
    Panel1: TPanel;
    SelectField: TComboBox;
    InsertBtn: TButton;
    SelectField2: TComboBox;
    ShowMarker: TCheckBox;
    Label2: TLabel;
    GetData: TButton;
    Panel2: TPanel;
    Reset: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure InsertBtnClick(Sender: TObject);
    procedure MoveToClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DataEditGetAttributeColor(Sender: TObject;
      var CharStyle: TCharacterAttr; par: TParagraph; posinpar: Integer);
    procedure ShowMarkerClick(Sender: TObject);
    procedure DataEditMailMergeGetText(Sender: TObject;
      const inspname: String; Contents: TWPMMInsertTextContents);
    procedure DataEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure GetDataClick(Sender: TObject);
    procedure TemplateEditMailMergeGetText(Sender: TObject;
      const inspname: String; Contents: TWPMMInsertTextContents);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure ResetClick(Sender: TObject);
  private
    FReadingData : Boolean;
  public
    procedure ReadData;
    procedure WriteData;
  end;

var
  WPEdTest: TWPEdTest;

implementation

{$R *.dfm}

// Update the form with the editor
procedure TWPEdTest.BitBtn1Click(Sender: TObject);
begin

end;

// Read the data which is currently displayed in the editor
procedure TWPEdTest.ReadData;
begin
   FReadingData := TRUE;
   DataEdit.MergeText;
end;

// Write back the data
procedure TWPEdTest.WriteData;
begin
   FReadingData := FALSE;
   DataEdit.MergeText;
end;

procedure TWPEdTest.ResetClick(Sender: TObject);
begin
  WriteData;
end;

// This reads and writes the data
procedure TWPEdTest.DataEditMailMergeGetText(Sender: TObject;
  const inspname: String; Contents: TWPMMInsertTextContents);
var i : Integer;
begin
  i := FieldNames.Lines.IndexOfName(inspname);
  if (i>=0) then
  begin
     if FReadingData then
           FieldNames.Lines[i] := inspname + '=' + Contents.OldText
     else  Contents.StringValue := FieldNames.Lines.Values[inspname];
  end;
end;

procedure TWPEdTest.DataEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key=VK_RETURN then Key := 0;
end;

procedure TWPEdTest.PageControl1Change(Sender: TObject);
var i,j : Integer;
    s : string;
begin
  // Fill the field drop down
  // alternatively the Field[] array in a TDataSet could be used!
  SelectField.Items.Clear;
  for i:=0 to FieldNames.Lines.Count-1 do
  begin
    s := FieldNames.Lines[i];
    j := Pos('=', s);
    if j>0 then s := Copy(s,1,j-1);
    if s<>'' then SelectField.Items.Add(s);
  end;
  SelectField2.Items :=  SelectField.Items;

  // Move to first field in form
    if PageControl1.TabIndex=0 then
    begin
      DataEdit.HideSelection;
      DataEdit.MoveToNextField(true);
      DataEdit.SetFocus;
    end;

end;

procedure TWPEdTest.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  if PageControl1.TabIndex=0 then // Get data from data entry form -------------
  begin
    ReadData;
  end else // Write data to data entry form ------------------------------------
  begin
    if PageControl1.TabIndex=1 then // update the form from editor!
    begin
    TemplateEdit.TextSaveFormat := 'WPTOOLS';
    DataEdit.AsString := TemplateEdit.AsString;
    end;
    WriteData;
  end;
end;

procedure TWPEdTest.InsertBtnClick(Sender: TObject);
begin
   TemplateEdit.InputEditField(SelectField.Text, SelectField.Text);
end;

procedure TWPEdTest.MoveToClick(Sender: TObject);
var fieldname : String;
begin
   fieldname := SelectField2.Text;
   // If this is the current move on ...
   if DataEdit.CurrentEditField=fieldname then
        DataEdit.MoveToNextField(false);
   // Try from here
   if DataEdit.MoveToField(fieldname,false) then
      DataEdit.SelectFieldAtCP(false, true)
   // or from start
   else if DataEdit.MoveToField(fieldname,true) then
      DataEdit.SelectFieldAtCP(false, true);
   DataEdit.SetFocus;
end;

procedure TWPEdTest.FormCreate(Sender: TObject);
begin
 DataEdit.ProtectedProp := [ppAllExceptForEditFields];
 DataEdit.EditOptionsEx := [wpTABMovesToNextEditField,
   wpRepaintOnFieldMove];
 DataEdit.InsertPointAttr.Hidden := FALSE;
 // To highlight the current field
 DataEdit.AutomaticTextAttr.UseOnGetAttrColorEvent := TRUE;
 DataEdit.InsertPointAttr.CodeOpeningText := '[';
 DataEdit.InsertPointAttr.CodeClosingText := ']';
 DataEdit.InsertPointAttr.CodeTextColor := $E0FFE0;
end;

procedure TWPEdTest.DataEditGetAttributeColor(Sender: TObject;
  var CharStyle: TCharacterAttr; par: TParagraph; posinpar: Integer);
var obj : TWPTextObj;
begin
  obj := DataEdit.CodeInsideOf(par,posinpar,wpobjMergeField);
  if obj = DataEdit.FieldAtCP then
  begin
     CharStyle.BackgroundColor := $A0FFFF;
     CharStyle.UseBackgroundColor := TRUE;
  end;
end;

procedure TWPEdTest.ShowMarkerClick(Sender: TObject);
begin
  DataEdit.InsertPointAttr.Hidden := not ShowMarker.Checked;
  DataEdit.DelayedReformat;
end;



procedure TWPEdTest.GetDataClick(Sender: TObject);
begin
   TemplateEdit.MergeText;
end;

procedure TWPEdTest.TemplateEditMailMergeGetText(Sender: TObject;
  const inspname: String; Contents: TWPMMInsertTextContents);
var i : Integer;
begin
  i := FieldNames.Lines.IndexOfName(inspname);
  if (i>=0) then
  begin
     Contents.StringValue := FieldNames.Lines.Values[inspname];
  end else Contents.StringValue := '[' + inspname + ']';
end;





end.

⌨️ 快捷键说明

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