테이블이나 쿼리를 오픈할때 동적으로 하는 방법에 대해 알고 싶습니다.
table1의 이름 ----> A
A의 필드 ----> Num, Name
제가 예를 들어서 하고자 하고 싶은 것은
A 테이블의 Num 필드의 내용을 edit1 component에 넣고
A 테이블의 Name 필드의 내용을 edit2 component에 넣는 방법을 알고 싶습니다.
쉬운방법으로는
edit1.text := A.fieldbyname('Num').asstring;
edit2.text := A.fieldbyname('Name').asstring;
를 들 수 있는데 이 방법이 아닌 동적으로 할 수 있는 방법을 알고 싶다는 거죠..
제가 알고 있는 한계로는
type
tform1 = class(tform)
edit1: tedit;
edit2: tedit;
button1 : tbutton;
ANum : TFieldstring;
AName : TFieldstring;
....
....
..등
procedure TForm1.Button1Click(Sender: TObject);
begin
eidt1.text := ANum.asstring;
eidt2.text := AName.asstring;
end;
입니다.
이 소스가 맞는건지...알고 싶기도 하고요....이게 아니라면 동적으로 오픈할 수 있는 방법을 알고 싶습니다.
부탁합니다.
> 테이블이나 쿼리를 오픈할때 동적으로 하는 방법에 대해 알고 싶습니다.
>
> table1의 이름 ----> A
> A의 필드 ----> Num, Name>
> A 테이블의 Num 필드의 내용을 edit1 component에 넣고
> A 테이블의 Name 필드의 내용을 edit2 component에 넣는 방법을 알고 싶습니다.
>
>
> 제가 예를 들어서 하고자 하고 싶은 것은
> 쉬운방법으로는
> edit1.text := A.fieldbyname('Num').asstring;
> edit2.text := A.fieldbyname('Name').asstring;
> 를 들 수 있는데 이 방법이 아닌 동적으로 할 수 있는 방법을 알고 싶다는 거죠..
>
> 제가 알고 있는 한계로는
>
> type
> tform1 = class(tform)
> edit1: tedit;
> edit2: tedit;
> button1 : tbutton;
> ANum : TFieldstring;
> AName : TFieldstring;
> ....
> ....
> ..등
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> eidt1.text := ANum.asstring;
> eidt2.text := AName.asstring;
> end;
>
> 입니다.
>
> 이 소스가 맞는건지...알고 싶기도 하고요....이게 아니라면 동적으로 오픈할 수 있는 방법을 알고 싶습니다.
> 부탁합니다.
안녕하세요.
FindComponent를 이용해보세요.
procedure TForm1.DisplayRecord;
var
i:Integer;
Edit:TEdit;
begin
for i:=0 to Table1.FieldCount-1 do
begin
Edit:= Self.FindComponent('Edit'+IntToStr(i)) as TEdit;
if Edit<>nil then
Edit.Text:= Table1.Fields[i].AsString;
end;
end;