Q&A

  • 한꺼번에 모든 에디트박스 제어?
하나의 폼위에 에디트박스가 20개정도 있읍니다.. 그런데 제가 특정 버튼을 클릭하면

모든 에디트박스의 내용을 지워줄려고 합니다. 깨끗하게... clear;;;;;

지금은 일일이

edit1.text :='';

edit2.text :='';

.

.

.

edit20.text :='';

이렇게 했는데 이거야원 어디 귀찬아서..

혹시 다른방법은 없는지요...

부탁드립니다...



2  COMMENTS
  • Profile
    CALI 1999.12.17 23:04
    클릭 wrote:

    > 하나의 폼위에 에디트박스가 20개정도 있읍니다.. 그런데 제가 특정 버튼을 클릭하면

    > 모든 에디트박스의 내용을 지워줄려고 합니다. 깨끗하게... clear;;;;;

    > 지금은 일일이

    > edit1.text :='';

    > edit2.text :='';

    > .

    > .

    > .

    > edit20.text :='';

    > 이렇게 했는데 이거야원 어디 귀찬아서..

    > 혹시 다른방법은 없는지요...

    > 부탁드립니다...

    >



    혀노 님의 답변도 맞지만 만약 edit1 ~ edit20 이외의 Edit box가 있다면 그 이외의

    Edit Box의 내용도 삭제 됩니다.

    아래의 내용은 일반 object의 이름을 변수 처럼 사용 할 수 있는 Function 입니다.



    function foClassByName(agFm: TObject; agStr: String) : TObject;

    Type

    PForm = ^TForm;

    var

    Form : PForm;

    Loop : Integer;

    begin

    Form := @agFm;

    Result := nil;

    for Loop := 0 to Form^.ComponentCount-1 do

    begin

    if UpperCase(Form^.Components[Loop].Name) = UpperCase(agStr) then begin

    Result := Form^.Components[Loop];

    break;

    end;

    end;

    end;



    위의 function을 호출하는 방법을 예를 들자면



    TForm1.Button1Click(Sender .......)

    var i : int ;

    begin

    for i := 1 to 20 do

    begin

    TEdit(foClassByname(Tform1,'Edit'+inttostr(i))).Text := '' ;

    end ;

    end ;



    object의 이름은 edit1 ~ edit20 까지 이어야 합니다.

    만약 1 ~ 30 까지의 label에 caption을 1,2,3,4... 30 까지 적고 싶다면



    TForm1.Button1Click(Sender .......)

    var i : int ;

    begin

    for i := 1 to 30 do

    begin

    Tlabel(foClassByname(Tform1,'label'+inttostr(i))).caption:=inttostr(i);

    end ;

    end ;



    이렇게 사용합니다. 참고로 foclassbyname 은 delphi 거의 모든 object에

    사용가능합니다. 특히 qreport에서는 아주 유용하게 쓸 수 있습니다.

  • Profile
    혀노 1999.12.17 22:07
    아래 코드를 사용하세요...

    for i:=1 to ComponentCount-1 do

    if (Components[i] is TEdit) then

    (Components[i] as TEdit).Clear;



    클릭 wrote:

    > 하나의 폼위에 에디트박스가 20개정도 있읍니다.. 그런데 제가 특정 버튼을 클릭하면

    > 모든 에디트박스의 내용을 지워줄려고 합니다. 깨끗하게... clear;;;;;

    > 지금은 일일이

    > edit1.text :='';

    > edit2.text :='';

    > .

    > .

    > .

    > edit20.text :='';

    > 이렇게 했는데 이거야원 어디 귀찬아서..

    > 혹시 다른방법은 없는지요...

    > 부탁드립니다...

    >