2010-01-22 1 views
2

언젠가 디자인 타임에 Delphi의 기본 절차를 재정의 하시겠습니까? 디자인 시간에 그것을 할 수있는 방법이있다,디자인 타임에 Delphi의 기본 절차를 대체 할 수 있습니까?

FastcodeAddressPatch(FastcodeGetAddress(@SInstanceSize), @TWinControl.RfInstanceSize); 

을하지만 :

내가 디자인 타임에 InstanceSize를 오버라이드 (override) 할 필요가

, 나는 그것을 FastCode 프로젝트 방법을 사용하여 런타임습니까?

조언에 TKS

답변

4

"디자인 시간"정말 그냥 "실행 시간"대신 프로그램의 컨텍스트의 IDE의 맥락이다. 코드를 디자인 타임 패키지에 넣고 IDE에로드하십시오. IDE는 패키지 단위로 모든 Register 프로 시저를 호출합니다.이 때 필요한 코드를 실행할 수 있습니다.

  1. 새 패키지 프로젝트 (.dpk 파일)를 만듭니다.
  2. 프로젝트 기본 설정을 디자인 타임 패키지로 설정하십시오.
  3. 빈 새 단위를 추가하십시오.
  4. Register이라는 인터페이스 섹션에 프로 시저를 추가하십시오. 자본은 R이고 나머지는 소문자 여야합니다.
  5. 그 절차를 원하는대로 구현하십시오 (예 : FastcodeAddressPatch에 전화를 걸어).
  6. 패키지를 컴파일하고 설치하십시오.

5 단계에서 수행하려고하는 것처럼 보이는 것에 대해 조금주의가 있지만, 직접 해결하도록하겠습니다.

+0

TWinControl의 DefineProperties를 재정의하고 싶습니다. 어떻게하면됩니까? –

+0

"내가 말하는 방식"은 무언가를 무시하거나 패치하는 것과 관련이 없습니다. * * 원하는 곳에서 * 실행할 수 있도록 코드를 넣을 수있는 곳은 *와 관련이있었습니다. * 당신이하는 일은 당신에게 달려 있습니다. (VCL 함수를 패치하는 방법을 알고 싶다면 새로운 질문으로 물어보십시오. 게시 한 내용에서 이미 그 부분을 수행하는 방법을 알고 있다고 생각했습니다.) –

+0

+1 명확한 설명. –

1

"디자인 타임에"라는 말은 "폼 디자이너에서 구성 요소가 작동하는 방식을 변경하는 것"을 의미하는 것이므로 실제로하면 안됩니다. 폼 디자이너는 BDS.exe에서 실행되는 모든 Delphi 코드 인 IDE의 일부입니다. 폼 디자이너에서 TObject를 변경하면 전체 IDE에 대해 변경되므로 결과가 비참 할 수 있습니다.

+0

나는 위험을 안다. 그러나 그것은 나의 연구에있다. 이 작업을 수행 할 방법을 알고 있습니까? –