有關於Delphi語法轉換成C++ Builder語法的問題 |
尚未結案
|
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
問題(Part-I)
procedure TForm1.Button1Click(Sender: TObject); Var LB:TLabel; ctl:TControl; ct:TControl; begin LB:=tlabel.Create(self); ctl:=tcontrol(sender); SetCaptureControl(ctl); ct:=GetcaptureControl; if ct =nil then exit; end;-------------------------------------------------------------- 撇開於能否執行的問題! 想問的是... 1.關於(self)、(sender)、(ctl)是什麼意思呀? 2.if ct =nil then exit;,關於這一行code是什麼意思呢? 是說,假如ct=nil則就"離開"? 另外,nil是零的意思嗎???用bcb的語法解釋的話,是for?if?還是switch...break呢? 以上的1.跟2.,若換成bcb的話,該怎麼個轉換?! 以下是小弟自己轉換成bcb,但不知道對不對↓ TLabel *LB; TLabel *LB = new TLabel(Self);//bcb好像沒有(self). TControl *ctl; TControl *ctl = new TControl(Sender); TControl *Ct; ::GetcaptureControl=Ct; //------------------------------------------------------------------- //------------------------------------------------------------------- 問題(Part-II) procedure TForm1.RadioGroup1Click(Sender: TObject); var i:integer; begin case RadioGroup1.ItemIndex of 0: begin for i:=0 to panel2.ControlCount-1 do begin TPanel(Panel2.Controls[i]).OnMouseMove:=mymousemove; TPanel(Panel2.Controls[i]).OnMousedown:=mymousedown; TPanel(Panel2.Controls[i]).OnMouseup:=mymouseup; TPanel(Panel2.Controls[i]).OnClick:=nil; end; end; 1: begin for i:=0 to Panel2.ControlCount-1 do begin TPanel(Panel2.Controls[i]).OnMouseMove:=nil; TPanel(Panel2.Controls[i]).OnMousedown:=nil; TPanel(Panel2.Controls[i]).OnMouseup:=nil; TPanel(Panel2.Controls[i]).OnClick:=myclick; end; end; end; end;-------------------------------------------------------------- 轉換成BCB↓ void __fastcall TForm1::RadioGroup1Click(TObject *Sender) { int i,rg1; rg1=RadioGroup1->ItemIndex; switch(rg1) { case 0: for (i=0;i<=Panel2->ControlCount-1;i ) { TPanel(Panel2->Controls[i])->&MyMouseMove; TPanel(Panel2->Controls[i])->&MyMouseDown; TPanel(Panel2->Controls[i])->&MyMouseUp; TPanel(Panel2->Controls[i])->&nil; } break; case 1: for (i=0;i<=Panel2->ControlCount-1;i ) { TPanel(Panel2->Controls[i])->&nil; TPanel(Panel2->Controls[i])->&nil; TPanel(Panel2->Controls[i])->&nil; TPanel(Panel2->Controls[i])->&MyClick; } break; } }小弟這樣寫,對嗎? ----------------------- 請多多指教啦!!^^ 發表人 -
------
----------------------- 請多多指教啦!!^^ |
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
if ct =nil then exit;
換成bcb就是↓
if(ct==NULL) return;
這樣對吧?! 至於,您說"sender 是一個 TObject 參數"..
e.g.
Panel = new TPanel(this);
Panel->Parent = this;
this 是指主表單,應該就是Delphi 的sender,沒錯吧?!
-----------------------
請多多指教啦!!^^ 發表人 - kj68215 於 2004/01/21 15:56:51
------
----------------------- 請多多指教啦!!^^ |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
1. Yes
2. Yes 但是記住 Sender 只是一個名稱,妳愛改成什麼都可以,如 aObject , myPanel, good, bad ...,every words u want
只是用來代表傳入的是什麼,同常 Delphi 會將呼叫此程序的物件當成Sender 參數傳入,這樣妳就可以知道是那個物件呼叫此程序並經由 Sender ,妳可以使用該物件
同時 Panel->Parent = this; 應該是 Panel->Parent = this as TWinControl;
因為 Parent 是 TWinControl 發表人 - syntax 於 2004/01/25 22:44:50
|
kj68215
初階會員 發表:47 回覆:91 積分:27 註冊:2003-08-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |