referred.pas

来自「delphi编程控件」· PAS 代码 · 共 118 行

PAS
118
字号
unit referred;
(*
 COPYRIGHT (c) RSD software 1997 - 98
 All Rights Reserved.
*)

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, DB,  refer;

type
  TReferenceTextEdit = class(TForm)
    Panel: TPanel;
    BOk: TButton;
    ComboBox: TComboBox;
    LFields: TLabel;
    Edit: TEdit;
    BCancel: TButton;
    BInsert: TButton;
    Edit1: TEdit;
    CheckBox: TCheckBox;
    LText: TLabel;
    LTextOnError: TLabel;
    EditError: TEdit;
    BHelp: TButton;
    procedure BInsertClick(Sender: TObject);
    procedure CheckBoxClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    DataSet : TDataSet;
    SaveString : String;
    CustomReference : TCustomReference;

  end;

function EditReferenceText(CustomReference : TCustomReference) : Boolean;

implementation
uses autostrs, audbstrs;
{$R *.DFM}

function EditReferenceText(CustomReference : TCustomReference) : Boolean;
Var
  AForm : TReferenceTextEdit;
  i : Integer;
begin
  Result := False;
  AForm := TReferenceTextEdit.Create(Nil);
  AForm.CustomReference := CustomReference;
  if(CustomReference.GridLayout.DataSource <> Nil) And (CustomReference.GridLayout.DataSource.DataSet <> Nil) then
     AForm.DataSet := CustomReference.GridLayout.DataSource.DataSet
  else AForm.DataSet := Nil;
  AForm.Caption := CustomReference.Name + '.PatternText';
  AForm.Edit.Text := CustomReference.PatternText;
  AForm.EditError.Text := CustomReference.TextOnError;
  if(AForm.DataSet <> Nil) then
    if(CustomReference.CanUseQuery) then
      for i := 0 to CustomReference.GetQuery.FieldCount - 1 do
       AForm.ComboBox.Items.Add(CustomReference.GetQuery.Fields[i].FieldName)
    else
      for i := 0 to AForm.DataSet.FieldCount - 1 do
       AForm.ComboBox.Items.Add(AForm.DataSet.Fields[i].FieldName);

  if(AForm.ComboBox.Items.Count > 0) then
    AForm.ComboBox.ItemIndex := 0;

  AForm.ShowModal;
  if(AForm.ModalResult = mrOk) then begin
    CustomReference.PatternText := AForm.Edit.Text;
    CustomReference.TextOnError := AForm.EditError.Text;
    Result := True;
  end;
  AForm.Free;
end;



procedure TReferenceTextEdit.BInsertClick(Sender: TObject);
begin
  if(ComboBox.ItemIndex >= 0) and (ComboBox.Items.Count > 0) then begin
    Edit1.Text := '&' + ComboBox.Text;
    Edit1.SelectAll;
    Edit1.CutToClipboard;
    Edit.PasteFromClipboard;
    Edit.SetFocus;
  end;
end;

procedure TReferenceTextEdit.CheckBoxClick(Sender: TObject);
begin
  BInsert.Enabled := Not CheckBox.Checked;
  ComboBox.Enabled := Not CheckBox.Checked;
  if(CheckBox.Checked) then begin
    SaveString := Edit.Text;
    Edit.Text := CustomReference.ChangeTextByPattern(Edit.Text);
    Edit.ReadOnly := True;
  end else begin
    Edit.Text := SaveString;
    Edit.ReadOnly := False;
  end;
end;

procedure TReferenceTextEdit.FormCreate(Sender: TObject);
begin
  BInsert.Caption := LoadStr(ACB_INSERT);
  BOK.Caption := LoadStr(ACB_OK);
  BCancel.Caption := LoadStr(ACB_CANCEL);
  BHelp.Caption := LoadStr(ACB_HELP);
  LText.Caption := LoadStr(AEL_TEXT);
  LTextOnError.Caption := LoadStr(ACDB_REFTEXTONERROR);
  CheckBox.Caption := LoadStr(ACDB_REFVIEWREALTEXT);
  LFields.Caption := LoadStr(ACDB_FIELDS);
end;

end.

⌨️ 快捷键说明

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