adbtplfd.pas

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

PAS
113
字号
unit adbtplfd;
(*
 COPYRIGHT (c) RSD Software 1997 - 98
 All Rights Reserved.
*)

interface
{$I aclver.inc}
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, adbtempl;

type
  TFAutoDBFieldAdd = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    ListBox: TListBox;
    LcFieldType: TLabel;
    Bevel1: TBevel;
    LFieldType: TLabel;
    Bevel2: TBevel;
    BOk: TButton;
    BCancel: TButton;
    BHelp: TButton;
    DBDefControl: TButton;
    LcDBDefControlName: TLabel;
    Bevel3: TBevel;
    LDefControlName: TLabel;
    LcDBDefControlType: TLabel;
    LDefControlType: TLabel;
    Bevel4: TBevel;
    procedure DBDefControlClick(Sender: TObject);
    procedure ListBoxClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    AutoDefControl : TAutoDBDefControl;
  public
    { Public declarations }
  end;

function CreateAutoDefField(AComponent : TComponent) : TAutoDefField;

implementation

uses adbtplcn, adbtmple, autostrs, audbstrs, DB;

{$R *.DFM}


function CreateAutoDefField(AComponent : TComponent) : TAutoDefField;
Var
  AForm : TFAutoDBFieldAdd;
  ADataSet : TAutoDefDataSet;
  i : Integer;
begin
  Result := Nil;
  AForm := TFAutoDBFieldAdd.Create(AComponent);
  ADataSet := TFAutoRepositoryEditor(AComponent).CurDefDataSet;
  for i := 0 to ADataSet.DataSet.FieldCount - 1 do begin
    if(ADataSet.DefFields.GetDefField(ADataSet.DataSet.Fields[i].FieldName) = Nil) then
      AForm.ListBox.Items.AddObject(ADataSet.DataSet.Fields[i].FieldName, ADataSet.DataSet.Fields[i]);
  end;
  with AForm do begin
    if(ListBox.Items.Count > 0) then
      ListBox.ItemIndex := 0;
    AutoDefControl := Nil;
    ListBoxClick(Nil);
    ShowModal;
  end;  
  if(AForm.ModalResult = mrOk) then begin
    Result := ADataSet.DefFields.Add;
    Result.DataField := AForm.ListBox.Items[AForm.ListBox.ItemIndex];
    Result.DBDefControl := AForm.AutoDefControl;
  end;
  AForm.Free;
end;

procedure TFAutoDBFieldAdd.DBDefControlClick(Sender: TObject);
Var
  ADefControl : TAutoDBDefControl;
begin
  ADefControl := SelectAutoDBDefControl(Owner);
  if(ADefControl <> Nil) then begin
    AutoDefControl := ADefControl;
    LDefControlName.Caption := AutoDefControl.Name;
    LDefControlType.Caption := DBDefControlTypeToString(AutoDefControl.DBDefControlType);
  end;
  ListBoxClick(Sender);
end;


procedure TFAutoDBFieldAdd.ListBoxClick(Sender: TObject);
begin
  BOk.Enabled := (ListBox.ItemIndex <> -1) and (ListBox.Items.Count > 0)
  and (AutoDefControl <> Nil);
  if(ListBox.ItemIndex <> -1) then
    LFieldType.Caption :=  FieldTypeToString(TField(ListBox.Items.Objects[ListBox.ItemIndex]).DataType);
end;

procedure TFAutoDBFieldAdd.FormCreate(Sender: TObject);
begin
  BOK.Caption := LoadStr(ACB_OK);
  BCancel.Caption := LoadStr(ACB_CANCEL);
  BHelp.Caption := LoadStr(ACB_HELP);
  LcFieldType.Caption := LoadStr(ACDB_FIELDTYPE);
  LcDBDefControlName.Caption := LoadStr(ACDB_DBDEFCONTROLNAME);
  LcDBDefControlType.Caption := LoadStr(ACDB_DBDEFCONTROLTYPE);
  DBDefControl.Caption := LoadStr(ACDB_REPOSDEFCONTROLEDITOR);
  Caption := LoadStr(ACDB_REPOSADDDEFFIELD);
end;

end.

⌨️ 快捷键说明

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