Q&A

  • 폼과 폼 사이의 데이터 교환
form1, form2가 있습니다.

form1에서 버튼을 클릭하면 form2가 생성되면서 form1의 값을 form2의 컨트롤 값으로 보낼수 있는지요. 어떤 방법으로 하면 될지 궁금합니다.

3  COMMENTS
  • Profile
    이준해 2000.03.25 04:10
    폼간에 데이터 교환방법중엔 이런것도 있습니다.

    델파이가 Object pascal 기반이니깐, oop 적인 방법을 사용하는 거죠.

    Form의 Subclass 를 하나 만들고 각 form에 그 class를 적용하는 겁니다.

    이런걸 응용하면 좀 더 재미있고 흥미진진한 프로그래밍을 할 수 있을 겁니다.

    도움이 되길



    ================================================================

    첫번째 Unit

    ================================================================

    unit SuperUnit;



    interface



    uses

    Forms, classes, StdCtrls;



    type

    TMyForm = class(TForm)

    public

    procedure setEditValue(editName, editValue: string); virtual;

    procedure returnEditValueToOwner(editName, editValue: string); virtual;

    end;



    implementation



    procedure TMyform.setEditValue(editName, editValue: string);

    var

    i: integer;

    begin

    for i:=0 to ControlCount-1 do begin

    if Controls[i] is TEdit then begin

    if TEdit(Controls[i]).name = editName then

    TEdit(Controls[i]).text := editValue;

    end;

    end;

    end;



    procedure TMyform.returnEditValueToOwner(editName, editValue: string);

    begin

    if owner is TMyForm then

    TMyForm(owner).setEditValue(editName, editValue);

    end;



    end.



    ================================================================

    두번째 Unit

    ================================================================

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    SuperUnit, StdCtrls;



    type

    TForm1 = class(TMyForm)

    Edit1: TEdit;

    Button1: TButton;

    Edit2: TEdit;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    public

    end;



    var

    Form1: TForm1;



    implementation



    uses unit3, Unit4;



    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    begin

    if assigned(form3) then

    try form3.Destroy; except end;

    form3 := TForm3.create(self);

    form3.setEditValue('Edit1', edit1.text);

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    begin

    if assigned(form4) then

    try form4.Destroy; except end;

    form4 := TForm4.create(self);

    form4.setEditValue('Edit1', edit2.text);

    end;



    end.





    ================================================================

    세번째 Unit

    ================================================================

    unit Unit3;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    SuperUnit, StdCtrls;



    type

    TForm3 = class(TMyForm)

    Edit1: TEdit;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    public

    end;



    var

    Form3: TForm3;



    implementation



    {$R *.DFM}



    procedure TForm3.Button1Click(Sender: TObject);

    begin

    returnEditValueToOwner('Edit1', edit1.text);

    close;

    end;



    end.





    ================================================================

    네번째 Unit

    ================================================================

    unit Unit4;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    SuperUnit, StdCtrls;



    type

    TForm4 = class(TMyForm)

    Edit1: TEdit;

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    public

    end;



    var

    Form4: TForm4;



    implementation



    {$R *.DFM}



    procedure TForm4.Button1Click(Sender: TObject);

    begin

    returnEditValueToOwner('Edit2', edit1.text);

    close;

    end;



    end.

    ================================================================

    끝.

    ================================================================



  • Profile
    강인규 2000.03.25 00:29
    요즘 폼간의 데이터교환이 유행이군요. 아래만 보셔도 알 수 있을텐데....(쩝~);

    어느 학교에서 내준 레포튼가요? 자수하세요..



    form1의 buttonclickEvent에 아래와 같이 코딩하세요.



    form2.caption := form1.caption;

    form2.show;



    이렇게 하면 폼1의 이름으로 폼2가 뜨겠죠? 한개더....

    form1에 에디트 한개 놓고....



    form2.label1.caption := edit1.text;

    form2.show;



    form1의 edit1에 입력한 값이 form2의 label에 뜰겁니다.



    알려줬으니 자수하세요. 자수해서 광명찾자!!!!



    hee wrote:

    > form1, form2가 있습니다.

    > form1에서 버튼을 클릭하면 form2가 생성되면서 form1의 값을 form2의 컨트롤 값으로 보낼수 있는지요. 어떤 방법으로 하면 될지 궁금합니다.

  • Profile
    최용일 2000.03.25 00:35
    다음과 같이 넣고싶은 값을 항상하던대로 넣어주시면 됩니다.

    단지 앞에다 새로 생성된 폼에다 넣으라는것을 알려주시면 됩니다.

    예) NewForm2.Edit1.Text := Edit1.Text;



    procedure Form1.Button1Click(Sender: TObject);

    var

    NewForm: TForm2;

    begin

    NewForm := TForm2.Create(Self);

    NewForm.Edit1.Text := Edit1.Text; // 이런식으로 새로 생성된폼에다

    .... // 정보들을 넣어주세요...

    ....

    NewForm.ShowModal; // 혹은 NewForm.Show;

    NewForm.Free;

    end;

    hee wrote:

    > form1, form2가 있습니다.

    > form1에서 버튼을 클릭하면 form2가 생성되면서 form1의 값을 form2의 컨트롤 값으로 보낼수 있는지요. 어떤 방법으로 하면 될지 궁금합니다.

    • 김문신
    • 2000.03.25 00:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이재식
      2000.03.25 01:47
      이재식 Wrote : 안녕하세요? 델파이 관련 출력물 컴포넌트에는 여러가지 있습니다. 크리스탈, 퀵(번들...
    • 하얀까마귀
      2000.03.25 04:06
      안녕하세요 하얀까마귀 입니다... 전반적으로 전 이재식님의 말씀에 동감을 합니다.. 아직 퀵으로 해서 ...
    • 때밀이
    • 2000.03.25 00:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 지나가다
      2000.03.30 22:54
      때밀이 wrote: > 예를들어 unix에는 a.sh라는 script가 있고... > 델로 만든 application에서 이 a.sh를 ...
    • 돌맹이
    • 2000.03.25 00:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • HART
      2000.03.25 02:11
      오라클에서는 아래와 같은 방법으로 해결할 수 있습니다. 다른 디비도 비슷한 방법이 있는지는 잘못라요....
    • 류종택
      2000.03.25 03:58
      Action 이름 대신 화일이름을 지정, Action은 Default:= True로 되어 있어야함.. 그 뒤의 파라메터도 적용...
    • 델초보
    • 2000.03.24 23:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.25 02:12
      다음과 같이 이름으로 검사해서 만일 있다면 Show메소드를 이용하여 그 폼을 띄우시면 됩니다. procedu...
    • 최미현
      2000.03.25 01:47
      우선 답변고맙습니다. 근데요..이미 생성되어 있는 폼이 아니라 버튼을 눌렀을때 생성까지 같이 하려면...
    • 최용일
      2000.03.25 03:37
      헐헐헐... 좀 상당히 이상한 걸 하시네요...... 자동생성을 안하셨고 단지 이름만안다.... 허허허... ...
    • hee
    • 2000.03.24 23:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이준해
      2000.03.25 04:10
      폼간에 데이터 교환방법중엔 이런것도 있습니다. 델파이가 Object pascal 기반이니깐, oop 적인 방법을 사...
    • 강인규
      2000.03.25 00:29
      요즘 폼간의 데이터교환이 유행이군요. 아래만 보셔도 알 수 있을텐데....(쩝~); 어느 학교에서 내준 레포...
    • 최용일
      2000.03.25 00:35
      다음과 같이 넣고싶은 값을 항상하던대로 넣어주시면 됩니다. 단지 앞에다 새로 생성된 폼에다 넣으라는것...
    • my
    • 2000.03.24 22:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 윤석태
      2000.03.24 23:24
      안녕하세요.. 질문하신 내용을 잘 모르겠네요... 어떤부분이 문제가 되는지를 자세하게 알려주시면 다...
    • 느티나무
      2000.03.24 23:46
      느티나무 wrote: 어디가 문제인지요 한글이 깨져서 나타납니까? = 레지스트리의 NLS_LANG 를 바꾸시...
    • 미정
      2000.05.03 06:39
      느티나무 wrote: > 느티나무 wrote: > 어디가 문제인지요 > 한글이 깨져서 나타납니까? > = 레지스...
    • 최용일
      2000.03.24 22:32
      폼의 OnCloseQuery, OnClose, OnDestroy이벤트중의 하나에서 필요에 맞게하세요... OnCloseQuery에서 하신...
    • 하얀까마귀
      2000.03.24 22:07
      안녕하세요 하얀까마귀 입니다.. 뭐가를 실행한다구요??? 무얼 실행하신다는건지는 모르겠지만...... ...
    • 이수정
      2000.03.24 22:29
      감사합니다..
    • 김종호
    • 2000.03.24 21:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 류종택
      2000.03.25 03:05
      아래와 같이 해보세요.. From 류.. --------- Function GetHTTP(URL:String):String; Begin ...
    • 박성훈
    • 2000.03.24 21:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 백록화
      2000.03.24 22:07
      yo~ ^^*^~ 안녕하세요! mySql 은 공개가 아니고, 쉐워 로 알고 있는데.... 상업적으로 사용할려면 ...
    • 임형호
      2000.03.24 21:01
      델초 wrote: > 밑에 질문(10576)을 했었는데 다른 답변을 하셔셔 이렇게 다시 올립니다... > 답변해주신...
    • 최용일
      2000.03.24 20:34
      create(self)와 create(application)의 차이는 폼의 주인이 누구인가를 정하 는 것밖에 없습니다. Self를 ...
    • 델초...
      2000.03.24 21:00
      예를 만들어봤읍니다.....새로해봐도 역시 안돼요...제가 어딘가 잘못한거 같은데..... 폼1 소스(폼3을 호...
    • 최용일
      2000.03.24 21:21
      네 역시 안됩니다. 그렇게 하시면... Form3.CallForm이 TForm형인데 그안에 Edit1이란 컴포넌트가 있을...
    • 하얀까마귀
      2000.03.24 20:50
      안녕하세요 하얀까마귀 입니다.... 정말 오랜만에 답변 올리는것 같네요... 최용일님이 말씀하신 ...
    • 최용일
      2000.03.24 20:56
      헐헐헐... 하얀까마귀님도 저처럼 감기에 걸리셨나보군요... 요즘 감기에 걸려서 고생하시는 분이 부쩍 ...
    • 하얀까마귀
      2000.03.24 22:11
      그럼.. 최용일님두??? 후후.. 이번 독감 무척 독하네요..... 체력에는 자신이 있는데 이번 감기로 앓아 ...
    • 손정현
    • 2000.03.24 20:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.03.24 21:03
      안녕하세요 하얀까마귀 입니다... 그리드에서 지금 말씀하신건 안되구요... DBGrid는 DAtaSource연결 외...
    • 김철환
    • 2000.03.24 20:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.03.24 20:52
      이곳에 ( http://www.easycash.co.at/comppage.htm )가보시면 백업/리스토어 컴포넌트가 있습니다. 오픈소...
    • 강인규
      2000.03.24 20:19
      이게 답변인지 모르겠습니다. 캐쉬드업데이트를 사용한 예제입니다. 일단 테이블의 CachedUpdate속성을...
    • 윤석태
      2000.03.24 23:15
      인규님 답변 감사합니다. 그런데 답변 내용을 참고해보니 제가 하려는 것과는 좀 틀린 것 같아서요.. 또...
    • 까마귀
      2000.03.26 02:26
      윤석태 wrote: > 인규님 답변 감사합니다. > > 그런데 답변 내용을 참고해보니 제가 하려는 것과는 좀 ...
    • 델파이
    • 2000.03.24 16:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황명하
      2000.03.24 17:41
      물론 있지요. 그러나 프로그램 logic상 권장할 만한건 아닙니다. basic 프로그램을 해보셨나요? "goto...