Field - campos lookup em runtime

Top  Previous  Next

procedure TForm1.Button1Click(Sender: TObject);

begin

  with TStringField.Create(Table2) do begin

    FieldName := 'MyLookup';

    FieldKind:= fkLookup;

    DataSet := Table2;  

    Name := Dataset.Name + FieldName;

    KeyFields:= 'CustNo';

    LookUpDataset:= Table1;

    LookUpKeyFields:= 'CustNo';

    LookUpResultField:= 'Company';

    DbLookupCombobox1.DataField:= FieldName;

    DataSource1.DataSet:= Dataset;

    Table2.FieldDefs.Add(Name, ftString, 20, false);

  end;

  DbLookupCombobox1.DataSource:= Datasource1;

  Table1.Active:= True;

  Table2.Active:= True;

end;

 

 

---------------- EXEMPLO NAO TESTADO

 

Criando um campo lookup em tempo de execução

uses 

Forms, Classes, Controls, StdCtrls, Db, DBTables, DBCtrls; 

type 

TForm1 = class(TForm) 

Table1: TTable; 

Table2: TTable; 

Button1: TButton; 

DBLookupComboBox1: TDBLookupComboBox; 

DataSource1: TDataSource; 

Table2Codigo: TFloatField; // Objeto campo chave código usado pelo lookup 

procedure Button1Click(Sender: TObject); 

private 

{ Private declarations } 

public 

{ Public declarations } 

end

var 

Form1: TForm1; 

implementation 

{$R *.DFM} 

procedure TForm1.Button1Click(Sender: TObject); 

var 

Nome : string; 

begin 

with TStringField.Create(Table2) do 

begin 

FieldName := 'MeuCampoLookup'

FieldKind:= fkLookup; 

DataSet := Table2; 

Nome := Dataset.Name + FieldName; 

KeyFields:= 'Codigo'//Campo Chave 

LookUpDataset:= Table1; 

LookUpKeyFields:= 'Codigo'//Campo Chave 

LookUpResultField:= 'Nome'//Resultado da campo lookup criado 

DbLookupCombobox1.DataField:= FieldName; 

DataSource1.DataSet:= Dataset; 

Table2.FieldDefs.Add(Nome, ftString, 20, false); 

end

DbLookupCombobox1.DataSource:= Datasource1; 

Table1.Active:= True; 

Table2.Active:= True; 

end

end