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

OnExit裡條件不符,下SetFocus造成離不開

答題得分者是:andychang1690
Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-25 10:05:35 IP:61.221.xxx.xxx 未訂閱
是這樣的,我有一個Edit,不管是用滑鼠離開或是用鍵盤按enter(tab)離開,,如果空白就ShowMessage警告並SetFocus該Edit讓使用者填值,可是這樣會造成不管按Button或其它Edit都離不開,不知是否有前輩有更好的方法,可以check該Edit空值? 在站裡用「onExit Setfocus」找不到解決方案,也大概查了一下「OnActiveControlChange 」,似乎都不太理想,希望前輩們幫幫忙,謝謝!!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-25 10:52:15 IP:202.39.xxx.xxx 未訂閱
在 OnExit 裡下 SetFocus 其它 TWinControl 就沒法得到 Focus 不知您要做的事是如何? 如果是資料庫的存檔的話, 有個 BeforePost Event 可用 在該 Event 中如果檢查該 TEdit.Text 為空字串 ShowMessage 警告後, 再下 Abort 指令中止後續動作    -- 歡迎光臨 KTop 研究院!
Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-25 11:00:37 IP:61.221.xxx.xxx 未訂閱
是類似卡號之類的不能為空值,由於一開始佈的不是DBEdit,而且在離開Edit時必需即時告知使用者不能為空值,就是這樣在麻煩    
引言: 在 OnExit 裡下 SetFocus 其它 TWinControl 就沒法得到 Focus 不知您要做的事是如何? 如果是資料庫的存檔的話, 有個 BeforePost Event 可用 在該 Event 中如果檢查該 TEdit.Text 為空字串 ShowMessage 警告後, 再下 Abort 指令中止後續動作 -- 歡迎光臨 KTop 研究院!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-25 11:20:12 IP:202.39.xxx.xxx 未訂閱
引言: 是類似卡號之類的不能為空值,由於一開始佈的不是DBEdit,而且在離開Edit時必需即時告知使用者不能為空值,就是這樣在麻煩
是資料庫的話, 不是 TDBEdit 也沒關係啊 假設您是用 Query1 來做的話 就在 Query1 的 BeforePost Event 中做檢查即可,例:
procedure TForm1.Query1BeforePost(DataSet: TDataSet);
begin
  // ...
  if Edit1.Text = '' then
    Abort;
  // ...
end;
-- 歡迎光臨 KTop 研究院!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-26 01:39:19 IP:61.71.xxx.xxx 未訂閱
引言: 是這樣的,我有一個Edit,不管是用滑鼠離開或是用鍵盤按enter(tab)離開,,如果空白就ShowMessage警告並SetFocus該Edit讓使用者填值,可是這樣會造成不管按Button或其它Edit都離不開,不知是否有前輩有更好的方法,可以check該Edit空值? 在站裡用「onExit Setfocus」找不到解決方案,也大概查了一下「OnActiveControlChange 」,似乎都不太理想,希望前輩們幫幫忙,謝謝!!
你可以在 onexit 中加一句, 然後只要按下 button1(例如放棄動作)就可以跳開了 if ActiveControl=Button1 then exit else begin // 你的判斷 end;
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-28 14:46:09 IP:61.142.xxx.xxx 未訂閱
引言: 是這樣的,我有一個Edit,不管是用滑鼠離開或是用鍵盤按enter(tab)離開,,如果空白就ShowMessage警告並SetFocus該Edit讓使用者填值,可是這樣會造成不管按Button或其它Edit都離不開,不知是否有前輩有更好的方法,可以check該Edit空值? 在站裡用「onExit Setfocus」找不到解決方案,也大概查了一下「OnActiveControlChange 」,似乎都不太理想,希望前輩們幫幫忙,謝謝!!
Sei:我提供一個我寫BarCode系統時的經驗,在線上掃瞄時Edit1一定要有資料 驗證並不得為空白!但使用者一樣有時要跳出來做其他工作。 我利用OnKeyPress事件先於OnExit觸發所以我定義一char Key_Press, 於OnKeyPress事件中Key_Press=Key,接著於OnExit先判斷是否我規定的脫離鍵 ,我個人定義是Esc鍵,如是我SetFocus於它處並Return; 以上請參考! Andy Chang
------
Andy Chang
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-28 22:20:34 IP:61.31.xxx.xxx 未訂閱
Hi Sei 你好: 在Edit的OnExit判斷    
if (not Button1.Focused) and
      (trim(Edit1.Text) = '') then begin
      ShowMessage('Can''t Leave ');
      Edit1.SetFocus;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-02 15:26:22 IP:61.221.xxx.xxx 未訂閱
遲了這麼多天,謝謝大家的回答! 大概去了解一下使用的習慣 在Edit離不開的情況下,使用者的第一個反應通常都是按「ESC」(拚命按) 按ESC離不開就會開始點其他的Edit或Button andychang1690前輩回答正符合我的情況與需求,故給分andychang1690前輩    再此小問一下,不知道是不是我的智邦信箱問題,到P.D前輩為止 發言通常都遲了約二、三天才發信到我的信箱 P.D前輩後的回覆就沒有再寄信通知我有新回覆……
系統時間:2024-05-17 11:51:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!