Campo calculado em tempo de execução!!!
12/12/2003
0
Obrigada!
:?:
Xandraveiga
Posts
14/12/2003
Xandraveiga
Obrigada!
14/12/2003
Adilsond
private { Private declarations } Table1Estado: TStringField; public
procedure TForm1.Table1CalcFields(DataSet: TDataSet); begin case Table1Preferred.Value of True : Table1Estado.Value := ´Sim´; False: Table1Estado.Value := ´Não´; else Table1Estado.Value := ´Não informado´; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Table1Estado := TStringField.Create(Table1); Table1Estado.Name := ´Table1Estado´; Table1Estado.FieldName := ´Estado´; Table1Estado.Size := 15; Table1Estado.Calculated := True; Table1Estado.Visible := True; Table1Estado.DataSet := Table1; end;
procedure TForm1.FormDestroy(Sender: TObject); begin Table1Estado.Free; end;
15/12/2003
Xandraveiga
Obrigada!
15/12/2003
Xandraveiga
Obrigada!
16/12/2003
Adilsond
var
fCampo : TStringField;
fNome : TStringField;
fCodigo : TFloatField;
fFloat : TFloatField;
fData : TDateField;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
// Fecha a query
Query.Close;
// Limpa o sql
Query.SQL.Clear;
// Cria o sql
Query.SQL.Add(´Select(codigo, nome from funcionarios´);
// Campo nome
if not Assigned(fNome) then
begin
fNome := TStringField.Create(Self);
fNome.FieldName := ´nome´;
fNome.FieldKind := fkData;
fNome.Size := 30;
fNome.DisplayWidth := 30;
fNome.DataSet := Query;
end;
// Campo Código
if not Assigned(fCodigo) then
begin
fCodigo := TFloatField.Create(Self);
fCodigo.FieldName := ´codigo´;
fCodigo.FieldKind := fkData;
fCodigo.DisplayWidth := 10;
fCodigo.DataSet := Query;
end;
// Campo Calculado
if Assigned(fCampo) then
begin
fCampo := TStringField.Create(Self);
fCampo.FieldName := ´Inicial´;
fCampo.FieldKind := fkCalculated;
fCampo.Alignment := taCenter;
fCampo.Size := 1;
fCampo.DisplayWidth := 1;
fCampo.DataSet := Query;
end;
// Campo Calculado
if Assigned(fFloat) then
begin
fFloat := TFloatField.Create(Self);
fFloat.FieldName := ´Mult´;
fFloat.FieldKind := fkCalculated;
fFloat.Alignment := taCenter;
fFloat.DisplayWidth := 10;
fFloat.DataSet := Query;
end;
// Campo Calculado
if Assigned(fData) then
begin
fData := TDateField.Create(Self);
fData.FieldName := ´Data´;
fData.FieldKind := fkCalculated;
fData.Alignment := taCenter;
fData.DisplayWidth := 10;
fData.DataSet := Query;
end;
// Abre a Query...
Query.Open;
// Cria as colunas (OPCIONAL) usado para criar os titles.
with Grid.Columns do
begin
Items[0].Title.Caption := ´Cód.´;
Items[1].Title.Caption := ´Nome´;
Items[2].Title.Caption := ´Letra Inicial´;
Items[3].Title.Caption := ´2x Cód.´;
Items[4].Title.Caption := ´Data´;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Se o campo foi criado tira-o da memória
if Assigned(fCampo) then fCampo.Free;
if Assigned(fNome) then fNome.Free;
if Assigned(fCodigo) then fCodigo.Free;
if Assigned(fFloat) then fFloat.Free;
if Assigned(fData) then fData.Free;
end;
procedure TForm1.QueryCalcFields(DataSet: TDataSet); // <------ Preste atenção para criar este evento!!
begin
Query.FieldByName(´Inicial´).asString := Copy(Query.Campo(´nome´),1,1);
Query.FieldByName(´mult´).asFloat := Query.GetInteger(´codigo´) * 2;
Query.FieldByName(´data´).asDateTime := Now;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Query.Select(´codigo,nome from funcion´);
with Grid.Columns do
begin
Items[0].Title.Caption := ´Cód.´;
Items[1].Title.Caption := ´Nome´;
end;
end;
16/12/2003
Xandraveiga
Muitíssimo obrigada pela sua ajuda!!!
Clique aqui para fazer login e interagir na Comunidade :)