Delph 에서 i 의 클래스 와 대상 2 - 클래스 에 대해 이야기 하면 특수 한 데이터 구조, 유형 전환 으로 이해 할 수 있 습 니 다.
1931 단어 데이터 구조
데이터 형식 은 강제 형식 으로 전환 할 수 있다 는 것 을 알 고 있 습 니 다. 클래스 는 데이터 형식 으로 이해 할 수 있 으 므 로 유형 변환 도 할 수 있 을 것 입 니 다.예 를 들 어 아래 코드 는 단추 (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 에 연결 할 수 있 습 니 다.