Q&A

  • 제가 CheckBox를 한 스무개 정도 폼에 띄우는데 이것을 한번에 disable시킬 수 있는 방법이 없나요..?
안녕하십니까? 아직 날이 좀 덥네요.

다른 게 아니라 제가 폼에다 chechbox를 한 20개 정도 띄우는데 이것을

버튼의 click event로 처리할려니까 소스코드가 장난이 아니네요.

checkbox수만큼 라벨이 있고 editbox및 maskedit도 그만큼 있는데.. 이것을 속성을

각각 color바꾸고, disable시키고 checked시키고 이러니까 이게 소스라인이 엄청

길어 지네요. 방법이야 너무 간단하지만.. 일일히 코딩을 하지 않고 해결하는 방법이

없을까 해서 질문을 올려봅니다. 제가 귀찮아서 그렇기도 하지만 이건 정말 시간낭

비다 싶은 기분이 들기도 합니다.

제가 구상한 방법은 델파이6.0에 있는 Action을 이용하는 것인데.. 잘 안되는 군요..

소스는 다음과 같습니다.
type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    ActionList1: TActionList;
    Action1: TAction;
    procedure Action1Execute(Sender: TObject);


procedure TForm1.Action1Execute(Sender: TObject);
begin
  (sender as TCheckBox).State := cbChecked;
...

컴파일은 되지만 실행하면 casting에러가 나는 군요..

제가 생각하는 부분은 TcheckBox에 한꺼번에 먹이면 될 듯해서 했는데..

가만히 생각해보니까 각각의 체크박스를 인스턴스화 시키지 않고는 불가능 하겠더군요..

제가 하고자 하는 바는 버튼 한번으로 전체 체크박스에 대한 제어(칼라,사용유무 등)
를 하려고 하는 것입니다..

저로서는 이게 action으로 될지도 솔직히 모르겠습니다.

혹시 아시는 분 계시면 답변 부탁드립니다.
2  COMMENTS
  • Profile
    고지범 2002.09.04 02:13
    안녕하십니까? 지나가던 얼큰입다.
    TAction 의 경우 해당 액션이 Sender로 올라옵니다.
    그리고 폼의 속성을 보시면 ControlCount, Controls라는 속성이 있죠...
    그러니깐.. 아래와 같이...

    procedure TForm1.Action1Execute(Sender: TObject);
    var
       nIndex   :Integer;
    begin
       // 지금 코드가 Action1 실행 코드이므로 아래는 'Action1'이 올라옵니다.
       ShowMessage((Sender as TComponent).Name);
       for nIndex := 0 to ControlCount - 1 do begin
          // 여기 부분은 다 비슷하겠죠....
          if Controls[nIndex] is TcheckBox then begin
             (Controls[nIndex] as TcheckBox).Checked := TRUE;
             // 모 딴 것들...
          end;
       end;
    end;

    오늘도 즐입다


  • Profile
    KDDG_ZZOM 2002.09.04 01:52
    var
      vv_i: Integer;
    begin
      with TWinControl(Panel1) do
      begin
        for vv_i := 0 to Controlcount - 1 do
        begin
          if (Controls[vv_i] is TCheckBox  ) then
            TCheckBox(Controls[vv_i]).Enabled := False;
        end;
      end;

    검색하시면 좀더 좋은방법들이 많이 있네요...^^
    즐프하세요...

    • 이정택
    • 2002.09.04 19:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 머슴
      2002.09.04 20:09
        제가 알기로는  Query컴퍼넌트는 Refresh 메서드를 지원을 안하는 것으로 &nb...
    • 김흥식
      2002.09.04 20:14
      도움이 될런지... 저는 이렇게 합니다. Query.Active := False; Query.Active := True; 그럼..
    • 김상수
    • 2002.09.04 19:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영남
      2002.09.04 19:52
      델파이에두 물론 문자열 위치 반환이나 문자열을 자르는 함수가 있지요... 문자열 자르기 _st := '12...
    • 김상수
      2002.09.04 20:13
    • 머슴
      2002.09.04 20:00
      스트링 그리드에.. 체크필드가 있고 이어서 그 화일의 경로가 있을 경우에 해당됩니다.. 이런 경우에는 ...
    • 김영남
      2002.09.04 20:05
      델파이에서 호스트 변수 사용을 말씀하시는건지? 그럼... parambyname('Abc').asstring := '2002/0...
    • sunny
    • 2002.09.04 17:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김용일
      2002.09.04 19:07
      님께서 쓰신 방법은 문제가 있군요. 더블클릭보다는 DrawCell 이벤트를 써야 마땅합니다. 더블클릭은 설...
    • 박정찬
    • 2002.09.04 09:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.09.04 20:55
      안녕하세요. 최용일입니다. 패키지파일에서 *.dcu파일빼시고 *.dcu파일들은 패스가 지정된 Lib폴더 같은...
    • 용환종
    • 2002.09.04 07:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.04 20:56
      hsr///////////////////////////////////////////////////////////// 컴포넌트로 되어있는것을 풀어서 정...
    • 김주경
    • 2002.09.04 07:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 미소나눔
      2002.09.04 18:43
      연결 컴포넌트를 어떤것을 쓰는지 잘모르지만 만약 DCOM 을 이용해서 DataSnapd을 이용한다면 클라이언트...
    • 신봉석
    • 2002.09.04 04:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.04 07:47
      hsr//////////////////////////////////////////////////// TStream과 TStrings으로 바꾼후 선택하는건데...
    • 이중철
      2002.09.04 05:49
      일단 랜덤하게 parent를 찾는다면 방법이 기존의 루프 밖에 없고요. 입력 방법이 어떤것이냐에 따라 입...
    • 한원희
      2002.09.04 07:34
      안녕하세요. 한원희입니다. 음... 아래와 같은 방식이라면, 하나의 노드를 추가하는 것이라면 상관이 없...
    • 짱아
    • 2002.09.04 04:20
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김용일
      2002.09.04 19:13
      procedure TForm1.Panel1DblClick(...); begin     with StringGrid1 do  &nb...
    • 동키호테
      2002.09.04 04:33
      StringGrid1.Cells[Col_num][Row_Num] := 'C'; 이렇게 하면 될텐데.. Panel1의 더블클릭쪽에다만 이것...
    • 짱아
      2002.09.04 19:13
      ㅡㅡ; 관심 가져 주셔셔 정말 감사 합니다.. 해결 했답니당.. ^^*
    • 최용일
      2002.09.04 05:22
      안녕하세요. 최용일입니다. 걍 메세지 보내시면 됩니다... procedure InsertString(Wnd: THandle; co...
    • 최용일
      2002.09.04 07:50
      안녕하세요. 최용일입니다. IcsDel50이라는 이름을 가진 패키지가 설치되어 있는가 다시한번 확인해보세...
    • 최용일
      2002.09.04 05:25
      안녕하세요. 최용일입니다. 메타파일은 확실히 잘 될지 모르겠구요... TCanvas.CopyRect로 읽어오시...
    • 최용일
      2002.09.04 03:14
      안녕하세요. 최용일입니다. 퀵리포트 홈페이지에 가시면 있습니다. http://www.qusoft.com/ 이전...
    • 궁금이
      2002.09.04 16:53
      먼저 답변을 주신점 정말 감사합니다. http://www.qusoft.com/ 사이트는 잘 알고 있어요. 현재 Delph...
    • 최용일
      2002.09.04 18:58
      안녕하세요. 최용일입니다. 델파이에서는 같은 이름의 컴포넌트를 등록할 수 없어요... 에러내용을 보면...
    • 궁금이
      2002.09.05 20:36
      감사,,,감사,, 감사,, 혹시  Delphi3 QuickReport 3.08 가지고 있으면 좀 부탁드립니다... ...
    • 델사랑
    • 2002.09.04 02:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.04 02:10
      헐~~~ 델파이로만은 힘들것같은데... GIS하고 같이 움직여야 될것같네요... 4번이라면 캐드의 레이어 식...
    • 윤여훈
      2002.09.04 03:37
      안녕하십니까? 답변 감사합니다. 하지만 워낙 초보인지라... 맵오브젝트 및 CAD의 레이어에 관해서 좀더 ...
    • KDDG_ZZOM
      2002.09.04 04:07
      저도 잘몰라요... 우선 캐드랜드가 맞을거예요... 거기서 데모버젼을 받아서 한번해보세요... 서버구성...
    • 김상수
    • 2002.09.04 01:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김영남
      2002.09.04 20:10
      윈도우즈의 데이터 타입형이  'yy-mm-dd'로 되어 있는게 아닌지요? 제어판의 국가별옵션에......
    • 김상수
      2002.09.05 00:18
    • 이중철
      2002.09.04 06:08
      밑져야 본전 이와같이 해보세요.. 심심하시면(잘안된다 싶으면) Typecasting 해보시고요. 델파이5.0이나 4...
    • 김상수
      2002.09.04 18:43
    • 이석배
    • 2002.09.04 01:37
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 고지범
      2002.09.04 02:13
      안녕하십니까? 지나가던 얼큰입다. TAction 의 경우 해당 액션이 Sender로 올라옵니다. 그리고 폼의 속성...
    • KDDG_ZZOM
      2002.09.04 01:52
      var   vv_i: Integer; begin   with TWinControl(Panel1) do   begin ...