알려주셔서 감사합니다 ㅠ
장성호 님이 알려주신대로 한번 짜봤거든요
근데 >> TmoDrawObject(ActiveSurface->DrawObjects->Items[iObj])
이쪽 구문에서 에러가 나네요 잘못적용한건가요?? ㅠㅠㅠㅠㅠㅠ
Delphi==========================================================================================
procedure iComponentCreate(ActiveSurface : TmoDrawSurface);
var
iObj : integer;
iTTextObj, iTpGageObj, iTRectObj, iTImageObj, iTGridObj : integer;
begin
iTTextObj := 0;
iTpGageObj := 0;
iTRectObj := 0;
iTImageObj := 0;
iTGridObj := 0;
with ActiveSurface do
begin
for iObj := DrawObjects.Count-1 downto 0 do
begin
if TmoDrawObject(DrawObjects.Items[iObj]) is TText then
begin
iTTextObj := iTTextObj + 1;
end
end
end
end
C++=============================================================================================
void __fastcall iComponentCreate(TmoDrawSurface *ActiveSurface)
{
int iObj, iTTextObj = 0, iTpGageObj = 0, iTRectObj = 0, iTGridObj = 0;
//TmoDrawObject();
for (iObj = ActiveSurface->DrawObjects->Count; iObj <= 0; iObj--){
if(TmoDrawObject(ActiveSurface->DrawObjects->Items[iObj])->InheritsFrom(__classid(TText) ))
{
iTTextObj = iTTextObj + 1;
}
}
}
==============================================================================================
장성호 님이 쓰신 글 :
: Delphi에서 is 연산자는 동적으로 객체의 타입검사를 수행하는 연산자입니다.
:
: if ( object is Class ) 코드에서
:
: object 가 Class의 인스턴스 이거나 상속을 받은경우 true 아닌경우 false를 return 합니다.
:
:
: c++ Builder에서 is 연산자는 존재하지 않구요
:
: TObject 클래스에 비슷한 메소드가 있습니다.
:
:
InheritsFrom 이라는 함수입니다.
: 대충 다음과 같은 식으로 사용하시면 됩니다.
:
:
: void __fastcall TForm3::Button1Click(TObject *Sender)
: {
: if( Sender->InheritsFrom(__classid(TCustomForm) ))
: {
: ShowMessage("Sender is Form");
: }
: else if( Sender->InheritsFrom(__classid(TCustomButton) ))
: {
: ShowMessage("Sender is Button");
: }
:
: }
:
:
:
:
: // 조상을 제외한 정확히 특정 클래스인지 확인은 문자열로 다음과 같이 확인하실수 있습니다.
:
: void __fastcall TForm3::Button1Click(TObject *Sender)
: {
:
: if( Sender->ClassNameIs("TForm3") )
: {
: ShowMessage("Sender is Form3");
: }
: else if( Sender->ClassNameIs("TButton") )
: {
: ShowMessage("Sender is Button");
: }
: }
:
:
:
: 기타 TObject 클래스에는
: ClassName / ClassType등을 가져오는 함수나 프로퍼티가 있습니다.
:
:
: 참조하세요
:
: 그럼..
:
:
: 최원용 님이 쓰신 글 :
: : Class1 은 class 입니다.
: :
: : B 는 Component 함수의 인자 입니다.
: :
: : procedure Component(B : Class2);
: :
: : begin
: : if Class1(B.C.Items[iObj]) is Class3 then
: : .
: : .
: : .
: : end
: :
: : 이런 식으로 class를 사용하였는데요 if절 쪽
: :
: :
: : Class1에의 의미를 잘모르겠습니다..
: :
: :
: : is 연산자쪽에서는 Class1 과 Class3쪽 어느 부분을 비교하는 것인지 이해가 잘 되지않습니다..
: :
: :
: : 고수님들의 많은 조언 부탁드립니다..