Q&A

  • 컨포넌트를 찾는 방법..?
for i :=0 to 10 do
    begin
        if  TCheckBox(Components[i]).Checked then
            aStr[i] := TCheckBox(Components[i]).Caption;
    end;

위 코드가 뭐가 잘못 된건가요..? 애러가 나던데..
위에 코드처럼 특정 컨포넌트를 일일이 지정하지 않고
배열에 값을 넣주는 방법좀 가르쳐 주세요
2  COMMENTS
  • Profile
    이중철 2003.05.17 06:47
    for문에서 10 의미는 잘 모르겠네요.
    체크박스가 11개가 있나요.
    일단 보통은 그 체크박스의 Tag에 숫자를 입력하고(1~10)

    for i :=0 to (체크박스의 Parent Control 또는 폼).ControlCount - 1 do
      if (체크박스의 Parent Control 또는 폼).Controls[i] is TCheckBox then
         aStr[TCheckBox((체크박스의 Parent Control 또는 폼).Controls[i]).tag]
         := TCheckBox((체크박스의 Parent Control 또는 폼).Control[i]).Caption

    폼의 ComponentCount를 사용해서도 가능한데 체크박스가 여러개로 그룹핑
    되어 있을경우 귀찮아서 걍 ControlCount 로 써요
    Components 는 폼의 모든 Components  들
    Controls는 해당 Control의 직속 Child Control(TControl에서 상속받은것만)들

    그럼 이만
    참 너무 복잡하게 보지마세요 저도 귀찮아서 치환하지 않았을 뿐이니
    대충보시면 이해될꺼에요.

  • Profile
    박준호 2003.05.17 19:30
    이런방법도 괜찮지 않을까 해서여.. ^^

    배열에 컴포넌트이 이름을 넣구여 물론 string 형으로여

    cbArray: array[0..10] of String;

    var
      cbTest: TCheckBox;
    begin
      cbTest := TCheckBox(FindComponent(cbArray[특정인덱스]));
      aStr[특정인덱스] :=  cbTest.Caption;
    end;

    이렇게 해도 되는거 같은데여.. 즐프하세여..