Delph 에서 i 의 클래스 와 대상 2 - 클래스 에 대해 이야기 하면 특수 한 데이터 구조, 유형 전환 으로 이해 할 수 있 습 니 다.

1931 단어 데이터 구조
3. 유형 은 특수 한 데이터 구조 로 이해 할 수 있다.
데이터 형식 은 강제 형식 으로 전환 할 수 있다 는 것 을 알 고 있 습 니 다. 클래스 는 데이터 형식 으로 이해 할 수 있 으 므 로 유형 변환 도 할 수 있 을 것 입 니 다.예 를 들 어 아래 코드 는 단추 (Button 1) 의 클릭 이벤트 입 니 다.
procedure TForm1.Button1Click(Sender: TObject);

var

    ACaption: String;

begin

    ACaption:= TButton(Sender).Caption;    //Sender TObject   TButton

    ShowMessage(Format('You clicked "%s"!',[ACaption]));

end;


이 코드 에서 Sender 는 TObject 형 대상 입 니 다. 우 리 는 이 를 TButton 형식 으로 강제 전환 시 킵 니 다. 항목 의 강제 형식 전환 형식: TButton (Sender) 에 주의 하 십시오.
만약 당신 이 잘 보이 지 않 는 다 면, 우리 의 일반적인 데이터 형식의 전환 을 참조 할 수 있 습 니 다.
procedure TForm1.Button1Click(Sender: TObject);

var

    S_Str: String;

    P_Str: PChar;

begin

    S_Str:= 'I love China';

    P_Str:= PChar(S_Str);

    S_Str:= '';

    S_Str:= String(P_Str);;

    ShowMessage(S_Str);

end;


그러나 대상 을 대상 으로 하 는 프로 그래 밍 과정 에서 안전성 을 강조 한다. 예 를 들 어 위의 TObject 유형의 Sender 를 TButton 으로 강제 전환 하 는 것 은 안전성 이 존재 하지 않 는 다.
아래 코드 와 같이 Button 1. OnClick 이벤트 가 적 혀 있 습 니 다.
procedure TForm1.Button1Click(Sender: TObject);

begin

    TCanvas(Sender).Brush.Color:= clRed;

end;


실행 하면 오류 가 발생 하 는데, 이 는 대상 을 대상 으로 하 는 프로 그래 밍 의 취지 에 어 긋 나 는 것 이 아 닙 니까?없다클래스 인 이상 특정한 클래스 의 강제 변환 방법 이 있어 야 합 니 다. 위의 코드 를 다음 과 같이 변경 해 야 합 니 다.
procedure TForm1.Button1Click(Sender: TObject);

begin

    (Sender as TCanvas).Brush.Color:= clRed;

end;


as 를 사용 하여 전환 하면 as 는 오 류 를 잡 을 수 있 고 프로그램의 정상 적 인 운행 에 영향 을 주지 않 습 니 다.
 
다음 작업: 하나의 창 에 Edit 과 10 개의 Button 을 놓 고 Button. Caption 을 각각 0, 1, 9 로 설정 한 다음 다음 다음 단 추 를 쓰 는 OnClick 이 벤트 는 다음 과 같 습 니 다.
procedure TForm1.Button1Click(sender: TObject);

begin

    Edit1.Text:= Edit1.Text+(Sender as TButton).Caption;

end;


다른 Button 의 OnClick 사건 을 Button1Click 에 연결 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기