Q&A

  • 동적생성 컴포넌트 이벤트 처리관련
설문지 관련 프로그램을 개발하고있는데.. 초보입니다. ㅡㅡ;

다름이 아니라 DB에서  특정 항목에 대한 질문과 보기의 내용을

그 갯수만큰 동적으로 컴포넌트를 생성해..
(예 : 질문은 TLabel, 보기는 TRadioButton 혹은 TCheckBox)

form Show시 폼에다가 가지런히 뿌렸습니다.

문제는 폼에 저장버튼 클릭시 생성된 TLabel의 Caption 즉 질문을

특정 Tmemo박스에 한번에 모두 넣고 싶습니다.

질문이 1. ㄱㄱㄱ
          2. ㄴㄴㄴ
          3. ㄷㄷㄷ              이라면 메모장에도 똑같이 들어가게끔 구현하고싶은데

어떻게 하면 되나요? 자세한 답변 부탁드립니다. (_ _);;

(나중에는 보기 또한 이런방식으로 구현해야 하는데 깜깜하네요)
3  COMMENTS
  • Profile
    박찬우 2007.09.11 22:36



    FindComponent 를 이용해보세요.
    for vv_i = 1 ; ...... begin
    if (FindComponent('AAA'+inttostr(vv_i) is TCheckBox) then begin
        (FindComponent('AAA'+inttostr(vv_i)  as  TCheckBox )
         ........
    end;

    체크박스의 명칭을 규칙을 세워서 만드셨을테니
    FindComponent로 읽어들일때도 규칙에 맞게 읽어서 체크만 하심 될듯 합니다.
  • Profile
    JJU.M 2007.09.04 01:22
    컴포넌트를 동적 생성할때 생생된 컴포넌트를 잘 관리 하는 구조를 만들어 놓는다면은

    나중에 그 정보를 가지고 컴포넌트를 컨트롤 하는게 편할거 같네요

    걍 하나의 방법이니깐 참고정도만 ^^

    |질문1|
    ___________|질문1에대한 답변컴포넌트(RadioButton1)|
    |질문2|
    ___________|질문2에대한 답변컴포넌트(CheckBox1)|
    ___________|질문2에대한 답변컴포넌트(CheckBox2)|
    ___________|질문2에대한 답변컴포넌트(CheckBox3)|
    ___________|질문2에대한 답변컴포넌트(CheckBox4)|
    |질문3|
    ___________|질문3에대한 답변컴포넌트(CheckBox1)|
    ___________|질문3에대한 답변컴포넌트(CheckBox2)|
    ___________|질문3에대한 답변컴포넌트(CheckBox3)|
    ___________|질문3에대한 답변컴포넌트(CheckBox4)|
    |질문4|
    ___________|질문1에대한 답변컴포넌트(RadioButton1)|

    TStringList <=== 요넘이 질문리스트
    TList <<=== 컴포넌트의 정보를 가지고있는넘

    TStringList 요기다가 1번 질문을 넣으시면서
    1번 질문의 대한 답변이 Radio 이면
    TStringList.AddObjects('1번질문', Radio)
    1번 질문의 대한 답변이 Check 이면
    TList하나 생성해서 1번 문항에 대한 동적생성 체크박스를 하나씩 애드해서
    TList.Add(Check1);
    개수만큼 애드된 TList를
    TStringList.AddObjects('1번질문', TList)
    TList 에 CheckBox정보가 있겠죠?

    뭐 선택항목이 아니고 입력 항목이라도 그에 맞에 넣어 주시면.....

    나중에 꺼내 쓸때

    돌아라 TStringList의 카운트 만큼
      혹시 TStringList에 속해있는 컴포넌트가 TList이면
        한번 더 돌아라 TList만큼
           이게 맞다면 일단 TStringList의 문자를 먼저 메모장에 넣고 그 뒤에 체크박스의 정보를 각각 껴 넣어라
      TList가 아니고 Radio면 고넘의 인덱스를 TStringList의 문자를 쓴뒤에 바로 뿌라수 1해서 붙여라

    대략 이런식이 될듯 하네요

    for Loop1 := 0 to StringList.Count - 1 do
    begin
      임시스트링변수는 := TStringList.Strings[Loop1] + '공백';
      if TObject(TStringList.Objects[Loop1]) is TList then
      begin
         for Loop2 := 0 to TList(TStringList.Objects[Loop1]).Count - 1 do
         begin
           if TObject(TList.Items[Loop2]) is TCheckBox then
           begin
              if TCheckBox(TList.Items[Loop2]).Checked then
              begin
                 임시스트링변수 := 임시스트링변수  + TCheckBox(TList.Items[Loop2]).Caption + '공백';
              end;
           end else << 요기서부터는 각 컴포넌트 특성에 맞게 처리 해서 데이터 넣기
         end;
      end;
    end;

    값 빼오는게 끝나면 잘 넣으면 될듯 -0-

    코딩이나 컴포넌트 관리가 좀 엉성할수도있지만

    큰 맥락으로보면 동적생성할때 크게 질문리스트를 가지고 그 질문리스트의 자식으로 답 리스트를 포함하는 형식입니다.

    제가 코딩했다면 아마도 -0- 이런 식이였을듯 싶네요 그럼 즐코하세요

  • Profile
    김세령 2007.09.07 19:23
    답변 정말 감사합니다.

    근대 질문 또한 DB에서 불러와 질문 갯수만큼
    TLabel 컴포넌트를 동적으로 생성을 해야되는
    상황인데.. 그런경우도 TStringList 가 적용이
    되는지... 위의 방식대로 적용을 하니 잘 안되네요..
    • 김세령
    • 2007.09.03 20:55
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박찬우
      2007.09.11 22:36
      FindComponent 를 이용해보세요. for vv_i = 1 ; ...... begin if (FindComponent('AAA'+inttos...
    • JJU.M
      2007.09.04 01:22
      컴포넌트를 동적 생성할때 생생된 컴포넌트를 잘 관리 하는 구조를 만들어 놓는다면은 나중에 그 정보...
    • 김세령
      2007.09.07 19:23
      답변 정말 감사합니다. 근대 질문 또한 DB에서 불러와 질문 갯수만큼 TLabel 컴포넌트를 동적으로 생성...
    • 마이크로김
      2007.09.03 20:28
      windows 제공하는 거 사용하셔도 잘되는데요.....
    • 이두화
    • 2007.09.01 06:09
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정선영
    • 2007.08.31 20:06
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정희영
      2007.09.01 21:52
      PPP6900R.QuickRep1.PreviewModal;
    • 신철우
    • 2007.08.30 21:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Elpira
    • 2007.08.30 07:27
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 정희영
      2007.09.01 20:13
      cardtbl 와 CATDTBL 스펠링이 틀려서 아닌가요?
    • Elpira
      2007.09.03 08:09
      if 문안으로는 들어옵니다.. 단지 CARD_IMAGE를 못찾아요.. 철자나 대소문자는 이상이 없고 다른데서는 다...
    • 로마네꽁띠
      2007.09.06 01:47
      mdb 파일 자체가 느려서 insert 후에 바로 찾는거는 느려서 못 찾는 경우가 있더라고요 아마도 제 생각에...
    • 로마네꽁띠
      2007.09.06 01:50
      DB파일이 mdb였는데 요놈이 문제였네요.. 느려서 때때로 insert후에 바로 query 응답 못하는 경우였네요 ^...
    • 윤병길
    • 2007.08.29 18:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 가가멜
      2007.09.24 11:39
      http://www.esanu.name/delphi/DLL/Calling%20delphi%20DLL%20from%20MS%20Visual%20C.html 구글에서 검...
    • 하얀까마귀
      2007.08.28 15:48
      밑에 답변처럼 구현방법등은 강좌를 참고하시면 될듯 하구요 간단히 말씀드릴수 있는 부분이 아니네요.. ...
    • 바람의아빠
      2007.08.29 04:07
      답변 감사드립니다.. 여러가지 개념 잡는데 많은 도움이 되엇습니다. DroopyEyes 홈페이지에가서 다...
    • 구창민
      2007.08.28 03:36
      안녕하세요.. 델파이코리아(www.delphikorea.com)에 가셔서 강좌란에서 '녹음' 이런단어로 검색해보...
    • 바람의아빠
      2007.08.29 04:07
      답변 감사드립니다. 많은 도움이 되엇네요.
    • 인레인
    • 2007.08.27 20:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김도성
    • 2007.08.27 19:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김도성
      2007.08.27 23:38
      Unit파일에 CreateParam이라는 윈도우메세지가 들어있었어용 ㅠ_ㅠ
    • 최시원
    • 2007.08.27 19:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2007.08.28 15:53
      아마 이 문법자체를 몰라서 질문을 올리신것 같네요.. 이건 배열을 정의하고 aaa : array[0..23,0..1...
    • 구창민
      2007.08.28 03:38
      안녕하세요.. 질문이 뭔질 모르겠네요.. 배열생성시 그 배열들에 값을 대입하는 문장이네요.. 어떻...
    • 구창민
      2007.08.28 03:42
      안녕하세요.. TList 를 말씀하시는 거 같네요.. 관련내용은 델파이 커뮤니티 사이트의 강좌란 및 팁 ...
    • 정희영
    • 2007.08.25 21:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정희영
      2007.09.01 20:10
      ADO를 이용하니 잘되는군요... BDE에서 NVARCHAR 등의 타입이 제대로 지원되지 않았습니다. 그럼 좋은 하...
    • 최용일
      2007.08.25 00:58
      안녕하세요. 최용일입니다. 홀수 패리티 계산하는것은 아주 간단합니다. 2진수로 표시했을때 1로 셋팅된...
    • 유승혁
      2007.08.28 21:08
      ^^ 감사합니다. 좋은 하루 되세요
    • 박병규
    • 2007.08.23 22:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박찬우
      2007.09.11 22:42
      정말 난감한 상황이시네요.... 별수있나요 걍 dcu파일 어디에 있는지 다 찾아봐야져.. dcu파일은 ...
    • 장영아
    • 2007.08.23 19:01
    • 0 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
    • 2007.08.23 10:54
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최우진
    • 2007.08.23 09:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2007.08.23 10:56
      프로퍼티에서 GroupFooter 를 True 시키고 GroupHeader 부분에 해당 컬럼을 올려보세요.. 그리고 해당 컬...