Q&A

  • 형변환
폼을 생성하고 필수입력항목 컨트롤의 색상을 일정한 규칙으로 함수화 하여 주기 위해서 아래와 같은 코드를 사용하였습니다.
<!--CodeS-->
procedure TMainForm.SetEditColor(Sender: TForm);
var
  i : Integer;
begin
  for i:=0 to Sender.ControlCount - 1 do begin
    if (Sender.Controls[i] is TControl) then begin
      case (Sender.Controls[i] as TControl).Tag of
        1001 : TControl(Sender.Controls[i]).Color := $00FEF8D8;
      end;//case
    end;//if
  end;
end;
<!--CodeE-->

문제는 TControl(Sender.Controls[i]).Color 의 Color가 선언되어있지 않다고 에러가 나옵니다.
TEdit, TDBLookupComboBox, TDataTimePicker등의 컨트롤이 주로 필수입력항목으로 사용될것같아 TConrol로 형변환하여 Color값을 바꿔주려고하니, 안되네요.(Help상에는 제가 지목한 컨트롤의 상위에 TControl이 모두 조상으로 자리잡고 있거든요) 다르게 Sender로 넘어오는 TForm의 경우는 TControl(Sender).Color 로 색상이 변경이 됩니다.

무슨문제인지 알고 싶습니다. 도와주세요~
3  COMMENTS
  • Profile
    정찬희 2005.05.03 21:47
    가끔씩 쓰는 방법입니다만...

    <!--CodeS-->
    type
      TControlAccess = class(TControl)
      end;

    ....

    procedure TMainForm.SetEditColor(Sender: TForm);
    var
      i : Integer;
    begin
      for i:=0 to Sender.ControlCount - 1 do begin
        if (Sender.Controls[i] is TControl) then begin
          case (Sender.Controls[i] as TControl).Tag of
            1001 : TControlAccess(Sender.Controls[i]).Color := $00FEF8D8;
          end;//case
        end;//if
      end;
    end;
    <!--CodeE-->


  • Profile
    도끼로이마까 2005.05.03 18:33

    TControl내에 선언된 Color property는 protected 입니다.
    TForm의 경우도 마찬가지입니다..TControl로 형변환하면 Color를 접근할 수 없습니다.
    무엇인가 착각하신듯합니다.

    태그를 이용하실거면, TEdit, TDBLookupComboBox, TDataTimePicker 등 을 구분하기위해 각각 다른 태그를 쓰시고 그에 맞는 형변환을 하시면 될 듯 합니다.

    <!--CodeS-->
    case (Sender.Controls[i] as TControl).Tag of
      1001 : TEdit(Sender.Controls[i]).Color := $00FEF8D8;
      1002 : TDBLookupComboBox(Sender.Controls[i]).Color := $00FEF8D8;
      ...
    end;//case
    <!--CodeE-->

  • Profile
    엄마미안 2010.01.29 23:02
    2005년 그시절엔 내가 이런 질문을 했었군.. 참.... 그당시는 많이 몰랐네요.
    • 박진규
    • 2005.05.04 06:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.05.04 19:47
      TDateTime 형을 쓰시구욤 등록하실때는 DateToStr로 등록하셨다가 다시 TDateTime으로 바꾸실때는 StrToD...
    • 석주현
      2005.05.04 18:47
      그냥 현재 시각에서 더하는 것을 예로 들면요. 헬프를 찾아 보시면 알지만 시간은 Double 형입니다. 결...
    • Runo
      2005.05.04 00:22
      ADO를 패치해야 하는걸로 알구 있구요.... 일단 임시적인 방법으로는 AdoQuery Properties의 LockType을...
    • 민스맘
      2005.05.03 19:06
        with query1 do begin   SQL.clear;   SQL.Add(' update name ...
    • 구자형
      2005.05.03 19:52
    • 손군
    • 2005.05.03 07:47
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 정찬희
      2005.05.03 21:47
      가끔씩 쓰는 방법입니다만... <!--CodeS--> type   TControlAccess = class(TContro...
    • 도끼로이마까
      2005.05.03 18:33
      TControl내에 선언된 Color property는 protected 입니다. TForm의 경우도 마찬가지입니다..TControl로 ...
    • 엄마미안
      2010.01.29 23:02
      2005년 그시절엔 내가 이런 질문을 했었군.. 참.... 그당시는 많이 몰랐네요.
    • 송인화
    • 2005.05.03 03:19
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.05.03 18:39
      웹 서버에 스크립트를 작성하셔야 할 듯합니다. 파일 이름을 인자로받구요... 웹 루트부터 파일과 디렉...
    • 김성진
      2005.05.03 05:05
      제가 생각하기에는 쉬운 방법은 이렇습니다. 1. ftp나 telnet등을 사용하셔서 파일리스트를 가져온다 2. ...
    • nilriri™
      2005.05.03 03:49
      레포트를 작성하실때 빈 폼을 만드시고 퀵레포트 컴포넌트를 올려 놓으시고 작업을 하신듯 하네요 ...
    • D
    • 2005.05.02 22:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 주웰
    • 2005.05.02 22:30
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.05.03 00:25
      <!--CodeS--> {$WARNINGS OFF} FileSetAttr('AAA.TXT', faHidden); {$WARNINGS ON} <!--CodeE...
    • 주웰
      2005.05.03 02:34
      우선 답변 감사 드립니다. 참고로 결백증 절대 아닙니당...^^;; 잘때 항상 뭐 묻은 강아지랑 껴안고 자는...
    • 최용일
      2005.05.03 22:06
      안녕하세요. 최용일입니다. 아마 델파이 6이나 7을 쓰시는것 같은데... Kylix때문에 생긴 경고이구요...
    • 권태훈
      2005.05.02 22:17
      윈속 포함하시고 datalen := ntohs(Word((@recvbuff[2])^)); 하시면 됩니다.
    • 김홍균
      2005.05.02 22:27
      여기 저기 물어보니 swap 이게 바꿔주는거라 하더군요. ntohs 대신 swap 써도 같은 값 나오던데 두개가 ...
    • 이중철
      2005.05.03 02:45
      swap이란 Function이 있었군요 결론적으로는 두개다가 같아요 하는일이.. 저는 몰라서 다 만들어서 썼...
    • 소대봉
    • 2005.05.02 20:40
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이준희
      2005.05.02 23:02
      interface uses Windows; function getSystemFolder():string; var   SysDir: array[0.....
    • 강인규
      2005.05.02 21:00
      <!--CodeS--> const   MAX_PATH = 255; var   dir: array [0..MAX_PATH] ...
    • 박진규
    • 2005.05.02 20:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2005.05.02 21:08
      구현하는것은 큰 문제가 아니나 부동소수점 연산에서 문제가 발생할 것으로 보여집니다. 아래의 코드를 ...
    • 도끼로이마까
      2005.05.03 18:16
      시리얼 포트 프로그래밍에 관련된 문서입니다. 이것을 먼저 공부하시는게 좋을듯 싶습니다... http:/...
    • 조수석
    • 2005.05.02 07:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2005.05.03 00:00
      우와.. OS(Operating System)를 만들어보실려고 하시는군요.. 그건 굉장히 힘들고, 어려운 작업입니다.. ...
    • 조수석
      2005.05.04 03:25
      굉장히 어렵네요...! ..아무튼 상세한 답변 너무 감사드립니다. 감사합니다.
    • 양소영
    • 2005.05.02 06:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2005.05.03 01:02
      용도가 뭔가요? -1,-2를 인덱스로 가질때 무슨 작업을 하실려구 그런 인덱스값이 필요하신건지? 함수...
    • 세라핌
      2005.05.02 02:33
      istool이라는 프로그램사용하시면 쉽게 됩니다. http://www.istool.org InnoSetup 스크립트를 편하...
    • 화니
      2005.05.02 02:36
      파일하나를 나누는 겁니다. 이쪽에서는 1부터 1000byte까지 저쪽은 1001부터 2000까지 이런식으로요 ...
    • 주선종
    • 2005.05.01 19:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 도끼로이마까
      2005.05.03 18:44
      새창을 막을려는 이유를 설명해 주세요.. 델파이는 VCL 자체가 thread safe가 아니기 때문에 thread ...
    • 주선종
      2005.05.03 22:02
      답변주셔서 감사합니다. 새창을 막으려는 이유는 특별한 이유가 있는게 아니라 ActiveX기능에 새창을...
    • 최동열
    • 2005.05.01 00:16
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2005.05.02 00:42
      결론적으로 그게 가능할까요? RDBMS에서 권한이 없는데, 어떻게든지 사용하게끔 한다? 이것은 해킹하겠다...
    • nilriri™
      2005.05.01 09:19
      자신이 만든 테이블에 대한 권한이 없다?? RDBMS의 사용자 권한 설정에 문제가 있는거 아닐까요? DBA...