Q&A

  • 변수를 배열로 쓸수 있는 방법이 있나요..??
지난번 답변해 주신분 대단히 고맙습니다.<3티어 퀵리포트 관련 질문>

비베에서는 변수를 배열로 사용할 수 있는데.. 델파이에서는 안되네요..
혹시 델파이에서도 변수를 <라벨이나 텍스트> 배열로 쓸수 있는 방법이 있다면 가르쳐 주세요.. 제발... ^^
4  COMMENTS
  • Profile
    김경록 2003.05.15 06:55
    어떤 질문내용인지 의미가 파악이 안되네여..

    혹시,  변수['A'] 와 같이 사용할 수 있냐는 질문인지..
    예를 들면, Arry라는 배열이 있고, 포지션을 찾기 위해 String을
    이용할 수 있냐는 질문인지..
    즉, Arry['A'] 값을 읽어올 수 있냐는 의미입니까?
    제가 머리가 나쁜지 이해를 할 수가 없네여..
    구체적인 예를 들어주시면.. 어떠실지..

    어쨌뜬..  Arry['A'] 형식의 값을 좀 번거럽지만 읽어 올 수 있습니다.
    GetEnumValue라는 함수가 있는데
    도움말을 보시면, 자세한 Sample도 구하실 수 있을 겁니다..
    하지만,

        Arry['B'] = Arry['T'] + Arry[Q'];

    와 같은 연산은 되지 않을 겁니다..





  • Profile
    송승석 2003.05.15 08:11
    예를 들어

    for i:= 0  to  count - 1 do
    begin
        label[i].capton := '0';
    end;

    비쥬얼 베이직에서는 변수를 배열로 지정하여 사용하면 위와 같은경우
    라벨에 따라 똑같은 값을 넣을 수 있습니다.
    그런데 델파이에서는 그런 기능을 찾을 수가 없네요..

    이런 기능을 몰라서 지금 몇십줄이면 끝날것을 몇백줄 작업을 하고 있습니다.
    답변 꼭 부탁드립니다.


  • Profile
    김경록 2003.05.15 20:48
    그런 문제였군여..
    이런 문제는 예전에 답변을 많이 했었던걸로 기억이나는데..
    어쨌든, 답변을 드리져..

    Delphi는 Object Pascal언어로 구성되어져 있습니다.
    겉모양만 봐도.. 컴포넌트 기반이라는게 확실히 나타난다는것을
    알 수가 있습니다.

    물론, Class를 기본으로 하고 있기 때문에
    상위,하위 Class가 존재합니다.

    즉 어떤 Class에 포함되어 있는 어떤 Window Control이나
    다른 컴포넌트를 상위 Class를 이용하면 찾을 수 있다는 말입니다..
    예를 들어, 특정 Form에 소속되어 있는 컴포넌트를 찾고자 할때에는

    이렇게 Loop를 비교해서 찾습니다..
    Form명이 MAINF라고 가정하면,

    For ll_Cnt := 0 To MAINF.ComponentCount - 1 Do
        If MAINF.Components[ll_cnt] is TLabel Then //찾고자 하는게 Label이면
              (MAINF.Components[ll_Cnt] as TLabel).Caption := '라벨이네여'
        Else If MAINF.Components[ll_cnt] is TEdit Then //찾는게 Edit 컴포넌트면
              (MAINF.Components[ll_cnt] as TEdit).Text := 'Edit 컴포넌트네';


    뭐 이런식으로 찾습니다..

    만약 Form이 MDI Form이라면,

    For ll_Cnt := 0 To MDIChildCount - 1 do
    Begin
          //이곳에서는 위와 같이 Coding하시면 됩니다..
          //물론, 특정 Child Form이 있는지 확인도 가능하겠쪄?
          //당연히, 해당 폼의 해제(Free)도 가능할꺼고..
          //해당 컴포넌트가 없다면.. 생성도 가능할꺼고..  *^^*
    End;

    답이 되셨길 바랍니다..
    애구애구..
    아침부터 타자 열심히 쳤더니..
    팔이 아푸군여..
    님.. 넘 열심히 해서 VDT 증후군에는 걸리지 맙시다..
    몸이 최고입니다..
    항상 건강하세염..


        




  • Profile
    한원희 2003.05.15 18:56
    안녕하세요. 한원희입니다.

    델파이에도 비슷한 것이 있습니다.

    ComponentCount와 Components라는 것을 이용하시면 됩니다.

    var
      I: Integer;
      Temp: TComponent;
    begin
      for I := ComponentCount - 1 downto 0 do
      begin
        Temp := Components[I];
        if not (Temp is TLabel) then
        begin
          TLabel(Temp).Caption:='0';
        end;
      end;
    end;

    이런식으로 할 수 있겠죠.

    그럼, 즐푸~