全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:107
推到 Plurk!
推到 Facebook!

按鈕共用事件的疑惑

答題得分者是:andy424345
ravi725
一般會員


發表:1
回覆:1
積分:0
註冊:2017-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2017-07-13 16:10:19 IP:60.251.xxx.xxx 未訂閱
各位先進大家好 小弟是一位剛踏入Delphi的菜鳥..
目前遇到一個問題有點疑惑 有關於按鈕共用事件的寫法差異
我的環境是 RAD Studio 10 Seattle
(1).我照著書上實作共用事件 但不知道為甚麼將寫法1改成寫法2可以編譯 執行後卻無作用 只有Edit1會變色
目前共用案件的做法是 Edit2的Event 去抓取 Edit1的方法
(2.) Edit1.color與 Tedit(Sender)還有(Sender AS Tedit) 這三者的差異呢?
程式1---------------------------------------------------
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit1.color :=clRed;
Edit1.Font.Color :=clWhite;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
Edit1.Color :=clWhite;
Edit1.Font.Color :=clBlack;
end;
procedure TForm1.Edit2Enter(Sender: TObject);

begin
Edit2.color :=clRed;
Edit2.Font.Color :=clWhite;
end;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
Edit2.Color :=clWhite;
Edit2.Font.Color :=clBlack;
end;
程式2-----------------------------------------------------
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Tedit(Sender).color :=clRed;
Tedit(Sender).Font.Color :=clWhite;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
Tedit(Sender).Color :=clWhite;
Tedit(Sender).Font.Color :=clBlack;
end;
andy424345
一般會員


發表:2
回覆:8
積分:12
註冊:2011-03-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2017-07-14 09:32:19 IP:60.251.xxx.xxx 未訂閱
1.
在Form OnCreate時先把兩個Edit事件寫成一樣
Edit1.OnEnter := Edit1Enter;
Edit1. Edit1Exit;
Edit2.OnEnter := Edit1Enter;
Edit2. Edit1Exit;
或者到Object Inspector把每個Edit的Event改成一樣的事件
2.
TEdit(Sender)跟(Sender as TEdit)都是一樣的
共用同樣的事件後以Edit1Enter舉例,當其中一個Edit進入到Edit1Enter後Edit會指到Sender
Edit1.Color只是對Edit1做處理,而TEdit(Sender).Color是針對某個Edit觸發這個事件後對它做處理
編輯記錄
andy424345 重新編輯於 2017-07-14 09:49:36, 註解 無‧
ravi725
一般會員


發表:1
回覆:1
積分:0
註冊:2017-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2017-07-14 11:48:43 IP:60.251.xxx.xxx 未訂閱
Sender是否可以理解為某個物件執行參數呢? 例如我要動用到所有的TEdit做一樣的動作 那我只要針對TEdit(Sender)寫方法就好 這樣對嗎?
===================引 用 andy424345 文 章===================
1.
在Form OnCreate時先把兩個Edit事件寫成一樣
Edit1.OnEnter := Edit1Enter;
Edit1. Edit1Exit;
Edit2.OnEnter := Edit1Enter;
Edit2. Edit1Exit;
或者到Object Inspector把每個Edit的Event改成一樣的事件
2.
TEdit(Sender)跟(Sender as TEdit)都是一樣的
共用同樣的事件後以Edit1Enter舉例,當其中一個Edit進入到Edit1Enter後Edit會指到Sender
Edit1.Color只是對Edit1做處理,而TEdit(Sender).Color是針對某個Edit觸發這個事件後對它做處理
系統時間:2017-07-25 2:39:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!