Q&A

  • 폼에 컴포넌트 배치하면 왜 모두 published로 가나요?

이번에 어찌어찌하여 델파이를 처음으로 하게 되었는데... 정말 이해가 안되는 것이 있어서 오늘 가입하고 질문 올립니다.


MyForm이라는 폼을 만들고 거기에 버튼을 하나 올리고, 버튼에 클릭이벤트를 달았습니다.

제 생각엔 private 쪽에 버튼이랑 이벤트 프로시저가 생겨야 하는거 같은데 왜 published 쪽에 생기나요?

아래 소스처럼 생기네요. 한 폼에 컴포넌트를 수십개도 넘게 배치하는 일이 자주 있을텐데... 헐~~ 제가 무엇을 모르는건가요?? 아무리 찾아봐도 모르겠네요. 도움 부탁드립니다. 


참고로 Delphi 2007 을 사용하고 있습니다.




unit uMyForm;


interface


uses

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

  Dialogs, StdCtrls;


type

  TMyForm = class(TForm)

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  MyForm: TMyForm;


implementation


{$R *.dfm}


procedure TMyForm.btn1Click(Sender: TObject);

begin

      ShowMessage('테스트');

end;


end.


4  COMMENTS
  • Profile
    zeliard 2013.01.23 20:00

    published에 저장되는 이유는 이 정보들이 폼파일(.dfm)에 저장되고 디자인시에 RTTI를 이용해서 여러가지 컴포넌트들의 속성들을 제어하기 위해서입니다.

    그냥 간단하게 델파이의 Object Instpector에 표시하기 위해서 사용한다라고 생각하시면 됩니다.

  • Profile
    스쳐도드라이브 2013.01.23 22:58

    답변 감사드립니다.


    그런데 TForm1과 TForm2가 있고, TForm1에는 btn1 이라는 이름으로 버튼이 있다고 했을 때

    TForm2에서 


    var

    form : TForm1

    begin

    form.  <= 이렇게 쩜(.)을 누르는 순간 btn1 도 나오자나요. 안나오게 할 수는 없을까요?

    end;


    ----------------------------------------------------------------

    예를 들어 닷넷에서는 델파이의 Object Inspector와 같은 속성창에도 나타나지만, 코딩에서는 btn1이 기본적으로 private 이어서 코딩시에 쩜을 눌러도 안 보이는데.. 델파이에서는 안되나요???

  • Profile
    zeliard 2013.01.24 20:17

    옵션에서 Code Insight기능을 끄시면 됩니다만... Published영역에 있는 것들만 안나오게 하는 기능은 없는것 같습니다.

  • Profile
    스쳐도드라이브 2013.01.24 20:27

     Code Insight 기능을 끌수는 없고 ~

    아.... 매우 유감이네요...~~ 어쩔수없죠.. 

    답변 감사드립니다.