duvida com referencia à objetos

Delphi

22/10/2006

seguinte:

- Os TEdit do form tem o mesmo nome dos campos da tabela
ex: Campo ID da tabela = Edit.name = ID

  
for iComps := 0 to TForm(self).ComponentCount - 1 do
begin
  for iFields := 0 to qryUpdates.FieldList.Count - 1 do
  // quando o componente do loop tiver o mesmo nome que o Field da tabela
    if Uppercase( TForm(self).Components[iComps].Name ) = 
       UpperCase( qryUpdates.FieldList.Fields[iFields].FieldName) then
      if TForm(Self).Components[iComps] is TEdit then
        qryUpdates.FieldByName(TForm(self).Components[iComps].Name).Value := // TEdit.Text ( ? )

end;


( ? ) = a minha duvida é:

[b:bb3fbbe711]quando um componente tiver o mesmo nome do Field da tabela e esse componente for um Edit, como capturar o conteudo deste Edit(Edit.Text)[/b:bb3fbbe711]
obs: como estou usando herança de formularios o código esta no form Pai


Fabiano Góes

Fabiano Góes

Curtidas 0

Respostas

Tnaires

Tnaires

22/10/2006

Olá
qryUpdates.FieldByName(TForm(self).Components[iComps].Name).Value := ( Components[iComps] as TEdit ).Text;

ou
qryUpdates.FieldByName(TForm(self).Components[iComps].Name).Value := TEdit( Components[iComps] ).Text;

Abraços


GOSTEI 0
Fabiano Góes

Fabiano Góes

22/10/2006

valeu [b:fb4cf8b40b]tnaires[/b:fb4cf8b40b]

exatamente o que eu precisava !!!


GOSTEI 0
Fabiano Góes

Fabiano Góes

22/10/2006

seguinte:

a idéia do amigo [b:bf99a84db0]tnaires[/b:bf99a84db0] funcionou perfeitamente quando esta usando a idéia dentro de um form, agora estou tentando usar a mesma idéia dentro de uma classe e nao compila.

[color=red:bf99a84db0][Error] Undeclared identifier: ´Components´[/color:bf99a84db0]

se alguem puder me ajudar, segue o código:
procedure TOMDF.SetFieldsValue;
var iComps, iFields: Integer;
begin
  for iComps := 0 to TForm(FOwner).ComponentCount - 1 do
  begin
    for iFields := 0 to qryUpdates.FieldList.Count - 1 do
    begin
      if Uppercase( TForm(FOwner).Components[iComps].Name ) = UpperCase( qryUpdates.FieldList.Fields[iFields].FieldName) then
      begin
        if TForm(FOwner).Components[iComps] is TCustomEdit then
          qryUpdates.FieldByName(TForm(FOwner).Components[iComps].Name).Value := ( Components[iComps] as TCustomEdit );        else if TForm(Self).Components[iComps] is TRadioGroup then
          qryUpdates.FieldByName(TForm(FOwner).Components[iComps].Name).Value := ( Components[iComps] as TRadioGroup ).ItemIndex + 1;
      end;     
    end;   
  end; 
end;


O que preciso mudar pra compilar dentro de uma classe ?


GOSTEI 0
Tnaires

Tnaires

22/10/2006

Olá
Como você quer colocar a idéia em outra classe, precisa explicitar o form, usando:
TForm(FOwner).Components[iComps]

Abraços


GOSTEI 0
Fabiano Góes

Fabiano Góes

22/10/2006

Mais um vez, muito obrigado [b:4b602a455c]tnaires[/b:4b602a455c]
fica na PAZ ai irmão !!!


GOSTEI 0
POSTAR