각각의 폼에 있는 컴포넌트의 이름을 스트링에 담으려고 합니다.
이것을 함수로 처리하기 위해 폼의 이름을 변수로 넘기면 에러가 나거든요..
어떻게 해야 하나요?
FIRST.PAS :
procedure TForm1.Button1Click(Sender: TObject);
begin
form_name := 'form1.pagecontrol1.activepage';
string1 := unit1.make(form_name);
listbox1.items.add(string1);
====================================================
SECOND.PAS :
function make(FORM_NAME:STRING) : string;
for i := 0 to FORM_NAME.ControlCount - 1 do
result := FORM_NAME.Controls[i].Name;
감사합니다.
> 각각의 폼에 있는 컴포넌트의 이름을 스트링에 담으려고 합니다.
>
> 이것을 함수로 처리하기 위해 폼의 이름을 변수로 넘기면 에러가 나거든요..
>
> 어떻게 해야 하나요?
>
> FIRST.PAS :
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> form_name := 'form1.pagecontrol1.activepage';
> string1 := unit1.make(form_name);
> listbox1.items.add(string1);
>
> ====================================================
>
> SECOND.PAS :
>
> function make(FORM_NAME:STRING) : string;
> for i := 0 to FORM_NAME.ControlCount - 1 do
> result := FORM_NAME.Controls[i].Name;
>
>
>
> 감사합니다.
안녕하세요.. 많은 분들이 김진호님께 답변을 드리고 있네요..인기 좋으신가 봐요.
제가 나름대로 정리해봤어요. form1에서 form2를 선택하고 버튼을 클릭하면 선택한 폼(form2)위에 있는 pagecontrol중 activepage위의 콤포넌트 이름을 form1의 listbox1에 가져온다....맞나요?
제 나름대로 코딩해서 테스트해보니까 되는 것 같아서 올립니다.
FIRST.PAS :
...//uses 절에 SECOND 추가
procedure TForm1.Button1Click(Sender: TObject);
var
page_name : Ttabsheet;
i : integer;
strarr : fstraffay;
begin
page_name := form1.pagecontrol1.activepage;
strarr := unit1.make(page_name);
listbox1.clear;
for i := 0 to length(strarr) -1 do
listbox1.items.add(strarr[i]);
end;
====================================================
SECOND.PAS :
type fstrarray = array of string;
....
function make(activepg : Ttabsheet) : fstrarray;
var
i, j : integer;
strarr : fstrarray;
begin
i := activepg.ControlCount;
setlength(strarr, i);
for j := 0 to i - 1 do
strarr[j] := activepg.Controls[j].Name;
result := strarr;
end;
잘되시기를 빕니다...좋은 하루 되세요..