Q&A

  • 자식폼에서 부모폼의 버튼을 클릭할려면 어떻게 하나요?
[부모폼에서 자식폼 생성]
var
frmRequest: TfrmRequest;
begin
  frmRequest:= TfrmRequest.Create(self);
  frmRequest.Show;
end;

[자식폼에서 부모폼의 버튼클릭]
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  frmRequest: TfrmRequest;
implementation
uses Ucertifi;
.......
procedure TfrmRequest.Button1Click(Sender: TObject);
begin
    Fcertifi.btnRefresh.Click;
end;

그런데 자식폼의 버튼을 클릭하면 에러가 나요.
검색해서 이것 저것 다 찾아봤는데..이해도 잘 안되고...ㅠㅠ.
아시는분 쉽게 설명 부탁드립니다.
3  COMMENTS
  • Profile
    윤수아 2005.05.18 00:07
    프로젝트를 통째로 올려주시는 것이 답변 받으시기에 가장 좋습니다.
    제가 보기엔 저 코딩으로만로 에러날 것은 없는 것 같습니다.
    Fcertifi.btnRefresh의 onClick 이벤트의 코딩도 같이 봐야겠는 걸요..




  • Profile
    임우식 2005.05.18 20:21
    자식폼에서 호출한 부모폼에 있는 버튼클릭내용입니다.
    procedure TFcertifi.btnRefreshClick(Sender: TObject);
    begin
      MyS1.Refresh;
      MyS9.Refresh;
    end;

    MyS는   TmySQLQuery 입니다.

    이것은 자식폼에서 부모폼의 MyS1과 MyS2를 Refresh시키는데 에러나서 부모폼에다 버튼하나 만들어서 임시로 처리한 것입니다.  원래 하고자 했던것은 자식폼에서
    Fcertifi.MyS1.Refresh였습니다.

    즉, 자식폼에서
    procedure TfrmRequest.Button1Click(Sender: TObject);
    begin
       Fcertifi.MyS1.Refresh;
       Fcertifi.MyS9.Refresh;
    end;

    해서 두개의 쿼리를 갱신하려고 했느데 에러가 나더라고요..  그래서 할수없이 부모폼에다 버튼넣어서 Refresh시켰습니다.  그리고 혹시나 해서 자식폼에서 부모폼의 버튼을 호출했는데 역시 에러나더라고요...
    어떻게 해야 좋을지 모르겠습니다.

  • Profile
    윤수아 2005.05.23 21:58
    DB 연동 프로그램 이셨군요...
    우선 자식폼에서 부모폼에 이벤트를 불러서 에러가 나는 건 아닌 것 같습니다.
    가령 저 코딩을 막고 Caption := 'aaaaa'; 이런식의 간단한 코딩을 넣고...  자식폼에서 호출을 해보세요..
    그때도 에러가 나는지...


    그리고 부모폼에서 직접 그 버튼을 눌렀을때는 에러가 없나요?

    그리고 제가 TmySQLQuery라는 컴포넌트를 써본적이 없어서 그러는데...
      MyS1.Refresh;
      MyS9.Refresh;
    이 코딩을
      MyS1.Close;
      MyS9.Close;
      MyS1.Open;
      MyS9.open;
    이런식으로 한번 바꿔서 해보시고요..

    만약에 그때에도 에러가 난다면.. 이벤트 어딘가 코딩에 문제가 있는듯 싶습니다.
    새로운 폼을 열었으니 포커스 관련 문제일 수도 있고... 이건 제가 코드를 본 것이 아니라..
    말씀을 드리기 힘드네요...