Q&A

  • 함수생성시 질문입니다...꼭 답변좀..급해서요.
아래와 같은 함수를 form1에 생성했다고 하면은

다른 form2,form3에서 저 함수를 불러다가 써야 합니다.

근데 스트링그리드가 form2,form3에 있습니다.

이럴경우 어떻게 사용할수 있을까요?



제 생각에는 저것을 사용하려면 stringgrid1이 부분이 form2.stringgrid1, form3.stringgrid1이렇게 바껴야 할것 같은데요...

바꾸는 방법을 모르겠습니다.

function string_wn;

var

F:textfile;

i,j:integer;

begin

AssignFile(F, 'c:btest.dat');

ReWrite(F);

try

for i := 1 to stringgrid1.RowCount - 1 do begin

for j := 1 to stringgrid1.ColCount - 1 do begin

Write(F,StringGrid1.Cells[j,i],',');

end;

Writeln(F,'');

end;

finally

CloseFile(F);

end;

end;



4  COMMENTS
  • Profile
    soriso 2000.12.19 22:14
    델파이맨 wrote:

    > 아래와 같은 함수를 form1에 생성했다고 하면은

    > 다른 form2,form3에서 저 함수를 불러다가 써야 합니다.

    > 근데 스트링그리드가 form2,form3에 있습니다.

    > 이럴경우 어떻게 사용할수 있을까요?

    >

    > 제 생각에는 저것을 사용하려면 stringgrid1이 부분이 form2.stringgrid1, form3.stringgrid1이렇게 바껴야 할것 같은데요...

    > 바꾸는 방법을 모르겠습니다.

    > function string_wn;

    > var

    > F:textfile;

    > i,j:integer;

    > begin

    > AssignFile(F, 'c:btest.dat');

    > ReWrite(F);

    > try

    > for i := 1 to stringgrid1.RowCount - 1 do begin

    > for j := 1 to stringgrid1.ColCount - 1 do begin

    > Write(F,StringGrid1.Cells[j,i],',');

    > end;

    > Writeln(F,'');

    > end;

    > finally

    > CloseFile(F);

    > end;

    > end;

    >



    내가 보기에는 함수보다는 공통유닛에다가 프로시져로 만들어서 사용하면 될 것같네요.

    먼저 stringgrid1 -> sgrid로 전부 바꿔야 합니다.

    procedure string_wn(sgrid : TStringgrid);

    var

    F:textfile;

    i,j:integer;

    begin

    AssignFile(F, 'c:btest.dat');

    ReWrite(F);

    try

    for i := 1 to sgrid.RowCount - 1 do begin

    for j := 1 to sgrid.ColCount - 1 do begin

    Write(F,sgrid.Cells[j,i],',');

    end;

    Writeln(F,'');

    end;

    finally

    CloseFile(F);

    end;

    end;



    이렇게 만들고 나서 호출하는 폼이 form2이고 그리드 이름이 agrid라면 아래와 같이

    사용하면 될 것 같아요.

    string_wn(agrid);



    암튼 해보시고 안되면 다시 질문해보시고, 즐푸하세요. *^^*

  • Profile
    방경주 2000.12.19 21:25
    우선 form2, form3의 implementation 밑에 호출하고자 하는 폼의 .pas화일을 추가 시켜 주셔야 됨돠...



    form1의 .pas가 unit1라면...



    implementation



    uses Unit1;



    글구 호출은....



    Str : String;

    begin

    Str := Form1.String_Wn;

    end;



    이런식으루 함 된답니다...



    참고 하세염~ ^^



    델파이맨 wrote:

    > 아래와 같은 함수를 form1에 생성했다고 하면은

    > 다른 form2,form3에서 저 함수를 불러다가 써야 합니다.

    > 근데 스트링그리드가 form2,form3에 있습니다.

    > 이럴경우 어떻게 사용할수 있을까요?

    >

    > 제 생각에는 저것을 사용하려면 stringgrid1이 부분이 form2.stringgrid1, form3.stringgrid1이렇게 바껴야 할것 같은데요...

    > 바꾸는 방법을 모르겠습니다.

    > function string_wn;

    > var

    > F:textfile;

    > i,j:integer;

    > begin

    > AssignFile(F, 'c:btest.dat');

    > ReWrite(F);

    > try

    > for i := 1 to stringgrid1.RowCount - 1 do begin

    > for j := 1 to stringgrid1.ColCount - 1 do begin

    > Write(F,StringGrid1.Cells[j,i],',');

    > end;

    > Writeln(F,'');

    > end;

    > finally

    > CloseFile(F);

    > end;

    > end;

    >

  • Profile
    델파이맨 2000.12.19 21:34
    자세한 답변좀 부탁드립니다.

    님이 쓰신것은 함수사용방법같습니다.

    제가 알고 싶은것은.음..그러니까.

    아래 함수에서 for문에 보시면 stringgrid1이것이 있습니다.

    form1에는 stringgrid가 없음니다.

    그리드는 form2,form3에 있습니다.

    form2를 처리를 한다면 for문에 stringgrid1이 form2.stringgrid1이렇게 바뀌어야 하고.

    form3를 처리를 한다면 for문에 stringgrid1이 form3.stringgrid1로 바뀌어야 합니다.

    사용방법을 아시면 꼭 알려주시면 감사하겠습니다.



    방경주 wrote:

    > 우선 form2, form3의 implementation 밑에 호출하고자 하는 폼의 .pas화일을 추가 시켜 주셔야 됨돠...

    >

    > form1의 .pas가 unit1라면...

    >

    > implementation

    >

    > uses Unit1;

    >

    > 글구 호출은....

    >

    > Str : String;

    > begin

    > Str := Form1.String_Wn;

    > end;

    >

    > 이런식으루 함 된답니다...

    >

    > 참고 하세염~ ^^

    >

    > 델파이맨 wrote:

    > > 아래와 같은 함수를 form1에 생성했다고 하면은

    > > 다른 form2,form3에서 저 함수를 불러다가 써야 합니다.

    > > 근데 스트링그리드가 form2,form3에 있습니다.

    > > 이럴경우 어떻게 사용할수 있을까요?

    > >

    > > 제 생각에는 저것을 사용하려면 stringgrid1이 부분이 form2.stringgrid1, form3.stringgrid1이렇게 바껴야 할것 같은데요...

    > > 바꾸는 방법을 모르겠습니다.

    > > function string_wn;

    > > var

    > > F:textfile;

    > > i,j:integer;

    > > begin

    > > AssignFile(F, 'c:btest.dat');

    > > ReWrite(F);

    > > try

    > > for i := 1 to stringgrid1.RowCount - 1 do begin

    > > for j := 1 to stringgrid1.ColCount - 1 do begin

    > > Write(F,StringGrid1.Cells[j,i],',');

    > > end;

    > > Writeln(F,'');

    > > end;

    > > finally

    > > CloseFile(F);

    > > end;

    > > end;

    > >

  • Profile
    방경주 2000.12.19 22:32
    제가 질문을 잘못 이해 했군여...^^;



    function string_wn(SGgrid : TStringGrid);

    var

    F:textfile;

    i,j:integer;

    begin

    AssignFile(F, 'c:btest.dat');

    ReWrite(F);

    try

    for i := 1 to SGgrid .RowCount - 1 do begin

    for j := 1 to SGgrid .ColCount - 1 do begin

    Write(F,SGgrid.Cells[j,i],',');

    end;

    Writeln(F,'');

    end;

    finally

    CloseFile(F);

    end;

    end;





    이렇게 함수를 선언하구...



    string_wn(Form2.StringGrid2);



    이렇게 사용하는것....이 님께서 원하시는게 맞나여? ^^;



    맞다면 좋겠네여...헤헤...구럼 오늘두 즐푸~



    델파이맨 wrote:

    > 자세한 답변좀 부탁드립니다.

    > 님이 쓰신것은 함수사용방법같습니다.

    > 제가 알고 싶은것은.음..그러니까.

    > 아래 함수에서 for문에 보시면 stringgrid1이것이 있습니다.

    > form1에는 stringgrid가 없음니다.

    > 그리드는 form2,form3에 있습니다.

    > form2를 처리를 한다면 for문에 stringgrid1이 form2.stringgrid1이렇게 바뀌어야 하고.

    > form3를 처리를 한다면 for문에 stringgrid1이 form3.stringgrid1로 바뀌어야 합니다.

    > 사용방법을 아시면 꼭 알려주시면 감사하겠습니다.

    >

    > 방경주 wrote:

    > > 우선 form2, form3의 implementation 밑에 호출하고자 하는 폼의 .pas화일을 추가 시켜 주셔야 됨돠...

    > >

    > > form1의 .pas가 unit1라면...

    > >

    > > implementation

    > >

    > > uses Unit1;

    > >

    > > 글구 호출은....

    > >

    > > Str : String;

    > > begin

    > > Str := Form1.String_Wn;

    > > end;

    > >

    > > 이런식으루 함 된답니다...

    > >

    > > 참고 하세염~ ^^

    > >

    > > 델파이맨 wrote:

    > > > 아래와 같은 함수를 form1에 생성했다고 하면은

    > > > 다른 form2,form3에서 저 함수를 불러다가 써야 합니다.

    > > > 근데 스트링그리드가 form2,form3에 있습니다.

    > > > 이럴경우 어떻게 사용할수 있을까요?

    > > >

    > > > 제 생각에는 저것을 사용하려면 stringgrid1이 부분이 form2.stringgrid1, form3.stringgrid1이렇게 바껴야 할것 같은데요...

    > > > 바꾸는 방법을 모르겠습니다.

    > > > function string_wn;

    > > > var

    > > > F:textfile;

    > > > i,j:integer;

    > > > begin

    > > > AssignFile(F, 'c:btest.dat');

    > > > ReWrite(F);

    > > > try

    > > > for i := 1 to stringgrid1.RowCount - 1 do begin

    > > > for j := 1 to stringgrid1.ColCount - 1 do begin

    > > > Write(F,StringGrid1.Cells[j,i],',');

    > > > end;

    > > > Writeln(F,'');

    > > > end;

    > > > finally

    > > > CloseFile(F);

    > > > end;

    > > > end;

    > > >