Q&A

  • 폼간 콤보박스 제어방법
안녕하세요.

거북이 처럼 느리지만 한델을 통해서 열공하고 있는 초봅니다.

A,b,c 라는 폼이 실행되자마자 거기에 있는 콤보박스의 내용이 나와야 하는데요(물론 폼이 동시 실행되는건 아니구요. 각각이지요)

콤보박스의 이름을 모두 동일하게 주었고 내용도 모두 동일하게 나오면 되요(부서코드가 나올거거든요)

이런 공통적인 것을 메인폼에서 공통프로시져로 만들려고 하는데요.

즉, 메인폼에서 모달리스로 a,b,c 폼을 호출할때 메인폼에 있는 프로시져에서 콤보박스에 리스트를 넣어주도록 하는것이죠

그런데. 폼에서 폼정보를 어떻게 전송해야 할지.. 여기서 딱 막혀서요.

a,b,c가 실행될때에는 어떤놈이 실행되는지 몰라도 되게요.

즉, a.combobox1 인지 b.combobox1인지 c.combobox1인지 모르고, ?.combobox1 이지만

이 ?부분은 a,b,c에서 각각 실행될때 공통프로시져로 변수값으로 넘겨줘서

공통프로시져에서 어떤 폼인지 알아낼 수 있게 하려고 하는거거든요.


초보라 어딜 봐야 할지 넘 난감합니다. 아니 깜깜합니다. 이 방법이 맞는지도 모르겠어요.

Please.....
3  COMMENTS
  • Profile
    최도선 2006.03.08 23:08
    이게 님이 원하시는 답인지 잘 모르겠습니다. 별루 모양새가 좋은 코드는 아님니다만,
    <!--CodeS-->
    procedure 메인폼.SetComboBox(aComboBox : TComboBox);
    var
      i : integer;
    begin
      aComboBox.Clear;
      for i:=0 to 부서코드.count-1 do
        aComboBox.Items.Add(부서코드[i]);
    end;
    <!--CodeE-->
    <!--CodeS-->
    uses
      메인폼;
    .
    .
    .
    procedure A폼.FormActivate(Sender: TObject);
    begin
       메인폼.SetComboBox(myComboBox);
    end;
    <!--CodeE-->
    B, C 폼도 같은 식으로 하면 되겠죠.
    다른 방법도 많이 있습니다만, 가장 쉬운거 같아서 적었습니다.

    그럼..즐거운 하루되세요

  • Profile
    델델 2006.03.09 01:25
    답변 감사드립니다. 꾸벅~^^

    combobox 말고 폼을 변수(?)로 넘기는 방법은 혹.. 없나요?..

    부탁드려요~..~...




  • Profile
    최도선 2006.03.09 21:48
    폼을 넘기는 것도 같은 식인데, 폼은 상속된 폼이 각기 틀리기 때문에 공통 폼을 따로 만드시고
    거기서 상속 받아야 할 것 같습니다.
    그래도 굳이 폼을 Parameter로 넘겨야 하고 ComboBox 이름이 동일하다면,
    <!--CodeS-->
    procedure 메인폼.SetComboBox(aForm : TForm);
    var
      aComponent : TComponent;
    begin
      aComponent := aForm.FindComponent('ComboBox1');
      if aComponent is TComboBox then
        (aComponent as TComboBox).Items.Clear;
      .
      .
      .
    end;
    <!--CodeE-->
    <!--CodeS-->
    procedure A폼.FormActivate(Sender: TObject);
    begin
       메인폼.SetComboBox(Self);
    end;
    <!--CodeE-->
    코딩은 항상 할 수 있는 방법은 여러가지 입니다. 다만 자신에게, 개발하고자 하는 의도에 가장 맞는 방법을 선택하셔야 겠죠 ^^; 즐거운 하루되세요.