Q&A

  • 빈공란으로 만들기(질문)
버튼을 누렀을경우 edit, combobox를 한번에 빈공란으로 만들려면

쉽게

if sender is TControl then begin

(sender as Tcontrol).perform (-> 여기서 perform함수에서 줄 수 없을까요?)





3  COMMENTS
  • Profile
    이경문 2001.05.24 20:56
    TControl에 Perform이라는 Method가 있으면 좋겠지요.

    하지만 그런 Method는 없습니다.

    편법으로 다음과 같은 프로시져 일단 만들구요.



    procedure Perform(Control: TControl);

    begin

    if (Control is TEdit) then // 에디트이면

    (Control as TEdit).Text := ''

    else if (Control is TComboBox) then // 콤보박스이면

    (Control as TComboBox).Items.Clear

    else if (Control is TMemo) then // 메모장이면

    (Control as TMemo).Lines.Clear;

    end;



    사용할 때는 이렇게 하면 됩니다.



    if sender is TControl then

    Perform(sender as Tcontrol);





    써니 wrote:

    > 버튼을 누렀을경우 edit, combobox를 한번에 빈공란으로 만들려면

    > 쉽게

    > if sender is TControl then begin

    > (sender as Tcontrol).perform (-> 여기서 perform함수에서 줄 수 없을까요?)

    >

    >

  • Profile
    써니 2001.05.24 23:57
    이경문 wrote:

    > TControl에 Perform이라는 Method가 있으면 좋겠지요.

    > 하지만 그런 Method는 없습니다.

    > 편법으로 다음과 같은 프로시져 일단 만들구요.

    >

    > procedure Perform(Control: TControl);

    > begin

    > if (Control is TEdit) then // 에디트이면

    > (Control as TEdit).Text := ''

    > else if (Control is TComboBox) then // 콤보박스이면

    > (Control as TComboBox).Items.Clear

    > else if (Control is TMemo) then // 메모장이면

    > (Control as TMemo).Lines.Clear;

    > end;

    >

    > 사용할 때는 이렇게 하면 됩니다.

    >

    > if sender is TControl then

    > Perform(sender as Tcontrol);

    >

    >

    > 써니 wrote:

    > > 버튼을 누렀을경우 edit, combobox를 한번에 빈공란으로 만들려면

    > > 쉽게

    > > if sender is TControl then begin

    > > (sender as Tcontrol).perform (-> 여기서 perform함수에서 줄 수 없을까요?)

    > >

    > >



    제가 잘못한건지 잘 모르겠는데 위 내용처럼 실행해보았는데 안되네요.



    procedure TInputForm.Perform(Control: TControl);

    begin

    if (Control is TEdit) then // 에디트이면

    (Control as TEdit).Text := ''

    else if (Control is TComboBox) then // 콤보박스이면

    (Control as TComboBox).Items.Clear

    else if (Control is TMemo) then // 메모장이면

    (Control as TMemo).Lines.Clear;

    end;





    procedure TInputForm.BitBtn11Click(Sender: TObject);

    begin

    if sender is TControl then

    Perform(Sender as Tcontrol);

    end;



    위내용처럼했는데 왜 버튼클릭시 변화가 없더라구요. 답변좀 주세요.

  • Profile
    블랙봉 2001.05.25 00:15
    써니 wrote:

    > 이경문 wrote:

    > > TControl에 Perform이라는 Method가 있으면 좋겠지요.

    > > 하지만 그런 Method는 없습니다.

    > > 편법으로 다음과 같은 프로시져 일단 만들구요.

    > >

    > > procedure Perform(Control: TControl);

    > > begin

    > > if (Control is TEdit) then // 에디트이면

    > > (Control as TEdit).Text := ''

    > > else if (Control is TComboBox) then // 콤보박스이면

    > > (Control as TComboBox).Items.Clear

    > > else if (Control is TMemo) then // 메모장이면

    > > (Control as TMemo).Lines.Clear;

    > > end;

    > >

    > > 사용할 때는 이렇게 하면 됩니다.

    > >

    > > if sender is TControl then

    > > Perform(sender as Tcontrol);

    > >

    > >

    > > 써니 wrote:

    > > > 버튼을 누렀을경우 edit, combobox를 한번에 빈공란으로 만들려면

    > > > 쉽게

    > > > if sender is TControl then begin

    > > > (sender as Tcontrol).perform (-> 여기서 perform함수에서 줄 수 없을까요?)

    > > >

    > > >

    >

    > 제가 잘못한건지 잘 모르겠는데 위 내용처럼 실행해보았는데 안되네요.

    >

    > procedure TInputForm.Perform(Control: TControl);

    > begin

    > if (Control is TEdit) then // 에디트이면

    > (Control as TEdit).Text := ''

    > else if (Control is TComboBox) then // 콤보박스이면

    > (Control as TComboBox).Items.Clear

    > else if (Control is TMemo) then // 메모장이면

    > (Control as TMemo).Lines.Clear;

    > end;

    >

    >

    > procedure TInputForm.BitBtn11Click(Sender: TObject);

    > begin

    > if sender is TControl then

    > Perform(Sender as Tcontrol);

    > end;

    >

    > 위내용처럼했는데 왜 버튼클릭시 변화가 없더라구요. 답변좀 주세요.



    일단 위 소스의 문제는 Sender가 BitBtn1이라서 그렇습니다.

    폼 상의 모든 에디트와 콤보박스에 대해 적용하실려면 이렇게 하셔도 될 것 같은데요.



    for I := ComponentCount - 1 downto 0 do

    begin

    if (Components[I] is TEdit) then // 에디트이면

    TEdit(Components[I]).Text := ''

    else if (Components[I] is TComboBox) then // 콤보박스이면

    TComboBox(Components[I]).Items.Clear

    else if (Control is TMemo) then // 메모장이면

    TMemo(Components[I]).Lines.Clear;

    end;



    그게 아니면 클리어 시킬려는 컴포넌트를 직접 써줘야 겠죠.

    procedure TInputForm.BitBtn11Click(Sender: TObject);

    begin

    Perform(Edit1);

    Perform(Edit2);

    Perform(ComboBox1);

    ....

    end;