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

📄 fr_dbnewlookup.pas

📁 1、开发环境 d6 up2,sqlserver2000, win2000 server 1024*768(笔记本电脑) c/s 2、数据库配置方法
💻 PAS
字号:

{******************************************}
{                                          }
{     FastReport v2.4 - DB components      }
{          Lookup field definition         }
{                                          }
{ Copyright (c) 1998-2001 by Tzyganenko A. }
{                                          }
{******************************************}

unit FR_DBNewLookup;

interface

{$I FR.inc}

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

type
  TfrDBLookupFieldForm = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    NameE: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    TypeCB: TComboBox;
    SizeE: TEdit;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    lFieldCB: TComboBox;
    lDatasetCB: TComboBox;
    lKeyCB: TComboBox;
    lResultCB: TComboBox;
    Button1: TButton;
    Button2: TButton;
    procedure FormShow(Sender: TObject);
    procedure lDatasetCBChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    FLookup: TDataset;
    procedure Localize;
  public
    { Public declarations }
    Dataset: TDataset;
  end;

implementation

uses FR_DBUtils, FR_Const, FR_Utils {$IFDEF Delphi2}, DBTables {$ENDIF};


{$R *.DFM}

procedure TfrDBLookupFieldForm.FormShow(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to 9 do
    TypeCB.Items.Add(frLoadStr(SFieldType1 + i));
  TypeCB.ItemIndex := 0;
  Dataset.GetFieldNames(lFieldCB.Items);
  frGetComponents(DataSet.Owner, TDataSet, lDataSetCB.Items, DataSet);
end;

procedure TfrDBLookupFieldForm.Button1Click(Sender: TObject);
var
  Field: TField;
begin
  ModalResult := mrOk;
  Field := FieldClasses[TypeCB.ItemIndex].Create(Dataset);
  with Field do
  begin
    if Field is TStringField then
      try
        Size := StrToInt(SizeE.Text);
      except
        ModalResult := mrNone;
        MessageBox(0, PChar(frLoadStr(SFieldSizeError)), PChar(frLoadStr(SError)),
          mb_Ok + mb_IconError);
        SizeE.Text := '';
        ActiveControl := SizeE;
        Exit;
      end;
    Lookup := True;
    LookupDataset := FLookup;
    KeyFields := lFieldCB.Text;
    LookupKeyFields := lKeyCB.Text;
    LookupResultField := lResultCB.Text;
    FieldName := NameE.Text;
    Dataset := Self.Dataset;
  end;
end;

procedure TfrDBLookupFieldForm.lDatasetCBChange(Sender: TObject);
begin
  FLookup := frFindComponent(DataSet.Owner, lDatasetCB.Text) as TDataset;
  lKeyCB.Items.Clear;
  lResultCB.Items.Clear;
  if FLookup <> nil then
  begin
    FLookup.GetFieldNames(lKeyCB.Items);
    lResultCB.Items.Assign(lKeyCB.Items);
  end;
  lKeyCB.Text := '';
  lResultCB.Text := '';
end;

procedure TfrDBLookupFieldForm.Localize;
begin
  Caption := frLoadStr(frRes + 3070);
  GroupBox1.Caption := frLoadStr(frRes + 3071);
  Label1.Caption := frLoadStr(frRes + 3072);
  Label2.Caption := frLoadStr(frRes + 3073);
  Label3.Caption := frLoadStr(frRes + 3074);
  GroupBox2.Caption := frLoadStr(frRes + 3075);
  Label4.Caption := frLoadStr(frRes + 3076);
  Label5.Caption := frLoadStr(frRes + 3077);
  Label6.Caption := frLoadStr(frRes + 3078);
  Label7.Caption := frLoadStr(frRes + 3079);
  Button1.Caption := frLoadStr(SOk);
  Button2.Caption := frLoadStr(SCancel);
end;

procedure TfrDBLookupFieldForm.FormCreate(Sender: TObject);
begin
  Localize;
end;

end.

⌨️ 快捷键说明

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