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

有什麼辦法可以讓我的文字盒(Edit)不要取得焦點(Focus)嗎

答題得分者是:sos_admin
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-28 09:32:44 IP:61.219.xxx.xxx 未訂閱
我想讓一個文字盒用滑鼠點不到 如果將Enabled設為False時 字又會變成灰色 目前的做法是當該文字盒取得焦點時 SetFocus到別的物件 請問有什麼方法讓文字盒不要取得焦點
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-28 09:40:38 IP:61.155.xxx.xxx 未訂閱
procedure TForm1.Edit1Enter(Sender: TObject); begin edit1.Enabled :=false; end; procedure TForm1.Edit1Exit(Sender: TObject); begin edit1.Enabled :=true; end; 这样就可以了!
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-28 12:03:32 IP:61.219.xxx.xxx 未訂閱
這個方法也是可以用 不過用起來毛毛的 有其他的方法嗎
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-28 12:48:32 IP:61.218.xxx.xxx 未訂閱
procedure TForm1.Edit2Enter(Sender: TObject);
begin
    edit3.SetFocus;
end;
在Edit2 獲得Focus 時,就指定其它Edit 得到Focus 參考看看 如果這樣子也覺得"毛毛"的話,就用Label 嘛~~就不會得到Focus 了呀 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-28 12:54:31 IP:211.21.xxx.xxx 未訂閱
偶個輪是覺得粉奇怪拉 既然不要焦點,那就表示不要編輯 不要編輯那就不需要用文字盒 可以用 Label , 然後把抵色改為白色顯示啊.. 如果要用偷吃步,可用 Panel 模擬 Edit 將 Panel 的顏色改為白色 , 其 BevelOuter 屬性改為 beLowered 其 BevelWidth 屬性改為 2 看起來就很像 Edit 了
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-28 13:05:45 IP:61.155.xxx.xxx 未訂閱
我想除了〔转移焦点〕与〔得到或失去焦点时Enabled的改变〕就没有其它好的方法了。 我下面将我的方法改变了一下,给您是用! ... private procedure myEnabled(Sender: TObject); .... procedure TForm1.myEnabled(Sender: TObject); begin if sender is Tedit then (sender as Tedit).Enabled :=not (sender as Tedit).Focused; end; procedure TForm1.Edit1Enter(Sender: TObject); begin myEnabled(Sender); end; procedure TForm1.Edit1Exit(Sender: TObject); begin myEnabled(Sender); end; ....
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-28 14:19:46 IP:61.219.xxx.xxx 未訂閱
對不起可能是我表達的不清楚 我的作業有編輯模式以及瀏覽模式二種 當在編輯模式時文字盒是可以編輯 當在瀏覽模式時文字盒是不可以編輯 而且希望不要取得焦點 我目前的做法是使用 ddy 大大的做法但是這個需要別的元件的配合 所以如果沒有其他的方可能會採用 sos_admin 大大的做法 感謝大家的指教
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-28 14:28:54 IP:61.219.xxx.xxx 未訂閱
鎖定 Panel 的方法我也用過效果不錯 但是我同系列的文字盒不一定會放在一起 所以畫面會有很多 Panel 看起來會很亂 在此補充說明
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-28 14:50:59 IP:61.218.xxx.xxx 未訂閱
elase 再看了你的需求後,sos_admin 的方法才是較正統的方式 不允許編輯的Editbox 就直接設為Enabled:=False; 雖然會變灰色,不太美觀,這樣子也是大家所熟知的操作畫面 如果沒有變灰色,恐怕一般User 並不知道該項目不能點選,也許還會誤認你的程式有問題呢~ < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
kakene
一般會員


發表:22
回覆:52
積分:19
註冊:2003-01-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-28 17:27:16 IP:203.204.xxx.xxx 未訂閱
需要可以編輯,又不想讓字變色,我有個建議 把所有文字盒放在Panel上, 編輯時 Panel.Enabled := true ; 瀏覽時 Panel.Enabled := false ; 這樣全部的文字盒都可以控制 不知道這是不是你要的... 不過ddy副站說的你也要考慮一下, 不然User 並不知道該項目不能點選
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-28 17:32:25 IP:61.219.xxx.xxx 未訂閱
沒辦法 因為在瀏覽模式時 不能看到灰底的字 本來只是要要 ReadOnly 可是因為ReadOnly還是會取得焦點 使用者會任為可以修改 所以會希望除了 ReadOnly 還要無法取得焦點
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-21 16:38:02 IP:61.219.xxx.xxx 未訂閱
之前我都是用轉移焦點的方法 不過那會觸發 onExit 的事件 如果在那個事件有做判斷的程式碼的話 那就要想辦法避免< > 過了那麼久終於找到更好的解法< >
procedure TForm1.Edit1Enter(Sender: TObject);
begin
  Form.ActiveControl := nil;
end;
這樣就可以了也不會觸發 onExit 的事件 --------------------------------------------------------------------- 只要是 WinBase 的 programer 免不了都要跟 WinAPI 奮鬥 發表人 - elase 於 2004/04/21 16:40:52
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-04-21 20:49:58 IP:211.74.xxx.xxx 未訂閱
重繪Edit? type TEdit = class(stdctrls.TEdit) public procedure WMPaint(var Msg:TMessage);message WM_PAINT; end; procedure TEdit.WMPaint(var Msg:TMessage); var Canvas:TCanvas; begin Inherited; if Not Enabled then begin Canvas:=TCanvas.Create; Canvas.Handle:=GetDC(Handle); With Canvas do begin FillRect(ClientRect); TextOut(1,1,Text); end; ReleaseDC(Handle,Canvas.Handle); end; end; 想買台TPC..TTAB-B12D
elase
一般會員


發表:4
回覆:23
積分:10
註冊:2003-06-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-04-22 13:48:04 IP:61.219.xxx.xxx 未訂閱
謝謝jest0024 大大提供的解法 滿特別的 只要是 WinBase 的 programer 免不了都要跟 WinAPI 奮鬥
系統時間:2024-05-22 11:04:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!