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

請問一個SetFocus的問題

尚未結案
a02a02a02
一般會員


發表:1
回覆:1
積分:0
註冊:2008-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-02-26 22:13:22 IP:59.112.xxx.xxx 訂閱
請問各位先進:

我有二個form,分別有form1.edit1、form1.button1及form2.edit1、form2.button1。
以及一個function叫f_datachk(),放在一個function.pas中。

想請問的是,我在form1.button1及form2.button1中call f_datachk()時,如何在f_datachk中得知是誰按了
button?然後將cursor停在該form的edit中?
如按了form1的button1,則f_cdatachk()設法讓setfocus停到form1.edit1,如按了form2的button1,則f_cdatachk()設法讓setfocus停到form2.edit1,
這應該是一個觀念的問題,請不杏指教。謝謝。
編輯記錄
a02a02a02 重新編輯於 2008-02-26 22:31:23, 註解 無‧
小蚊子
中階會員


發表:55
回覆:267
積分:94
註冊:2002-06-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-02-27 04:01:58 IP:210.66.xxx.xxx 訂閱
FORM1 M3
FORM1 與 FORM2 若有呼叫關係, 如何 SHOW 也要考量
若是FORM1 中,呼叫 FORM2.SHOWMODAL ,您是無法去輸入 FORM1 的 EDIT1
= = = ==========================================
您告知 函數,誰呼叫它即可, f_datachk() 帶入 參數
例 :
button1.............f_datachk(1) , FORM1 呼叫
button2.............f_datachk(2) , FORM2 呼叫




===================引 用 a02a02a02 文 章===================
請問各位先進:

我有二個form,分別有form1.edit1、form1.button1及form2.edit1、form2.button1。
以及一個function叫f_datachk(),放在一個function.pas中。

想請問的是,我在form1.button1及form2.button1中call f_datachk()時,如何在f_datachk中得知是誰按了
button?然後將cursor停在該form的edit中?
如按了form1的button1,則f_cdatachk()設法讓setfocus停到form1.edit1,如按了form2的button1,則f_cdatachk()設法讓setfocus停到form2.edit1,
這應該是一個觀念的問題,請不杏指教。謝謝。

shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-02-27 09:57:56 IP:210.242.xxx.xxx 訂閱
procedure f_datachk(Sender: TObject);
begin
showmessage((Sender as Tbutton).Name);
end;
兩個button取不同名字.就知道誰呼叫了
其實也可以直接得到
form name的可是我不大會用.哈哈.
===================引 用 a02a02a02 文 章===================
請問各位先進:

我有二個form,分別有form1.edit1、form1.button1及form2.edit1、form2.button1。
以及一個function叫f_datachk(),放在一個function.pas中。

想請問的是,我在form1.button1及form2.button1中call f_datachk()時,如何在f_datachk中得知是誰按了
button?然後將cursor停在該form的edit中?
如按了form1的button1,則f_cdatachk()設法讓setfocus停到form1.edit1,如按了form2的button1,則f_cdatachk()設法讓setfocus停到form2.edit1,
這應該是一個觀念的問題,請不杏指教。謝謝。
P.D.
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-02-27 10:49:36 IP:61.67.xxx.xxx 未訂閱
有一個最土的方法
在主form設置一個public 的 whoactivebutton: string 的變數

在每一個按鍵按下時, 將 whoactivebutton:= 'button1'或'button2'等等方式接收及判定也可以做到, 程式不一定要完美的結構化才叫程式, 要能達到目的是首要, 優化其次
yubad2000
中階會員


發表:0
回覆:44
積分:78
註冊:2007-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-02-27 12:52:46 IP:66.171.xxx.xxx 未訂閱
The basic concept is to pass the "Object" as an arg into your function.
So, your function should look like f_datachk(TEdit edbox).
At form1.button1 OnClick => call f_datachk(form1.edit1)
At form2.button1 OnClick => call f_datachk(form2.edit1)
In f_datachk(TEdit edbox) => call edbox.setfocus
===================引 用 a02a02a02 文 章===================
請問各位先進:

我有二個form,分別有form1.edit1、form1.button1及form2.edit1、form2.button1。
以及一個function叫f_datachk(),放在一個function.pas中。

想請問的是,我在form1.button1及form2.button1中call f_datachk()時,如何在f_datachk中得知是誰按了
button?然後將cursor停在該form的edit中?
如按了form1的button1,則f_cdatachk()設法讓setfocus停到form1.edit1,如按了form2的button1,則f_cdatachk()設法讓setfocus停到form2.edit1,
這應該是一個觀念的問題,請不杏指教。謝謝。
------
===波士頓夜未眠===
What a wonderful world!!
Jazz up the world with jazz!!
==================

When I am not programming...
you can find me here:
http://www.holy-war.de/EN/World3/bin/?advertiser=63190
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-02-27 16:05:25 IP:219.87.xxx.xxx 訂閱
您好
在共用的pas裡面宣告
procedure f_datachk(sf:TWinControl);

程序裡面加上 sf.SetFocus; 就可以了!
然後在form1或是form2裡面的Button的Click事件裡面直接加入f_datachk(edit1);

試試看吧!
------
Pillar Wang
a02a02a02
一般會員


發表:1
回覆:1
積分:0
註冊:2008-02-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-02-27 20:51:05 IP:59.112.xxx.xxx 訂閱
謝謝各位先進的指教,pillar62兄的方法的確可行....
我的程式是有多支功能相近的程式及表單,(其Tedit的名稱都一致)...需要共用同一種資料檢查的公用程式...因為不想重覆的檢查程式在每個單元中出現。所以才想要寫一支共用的檢查程式做該畫面Tedit的檢查...然後依不一樣的檢查條件依序檢查...如果發現某個form的某個edit有誤,則停到該edit要求重新輸入...
請問有更容易的方式嗎?正努力測試中...謝謝大家的指點..
編輯記錄
a02a02a02 重新編輯於 2008-02-27 20:52:23, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-03-02 16:34:20 IP:61.64.xxx.xxx 訂閱
「功能相近的程式及表單,(其Tedit的名稱都一致)」
請使用 Form 的繼承機制
不然,你有 100 個 form ,其中有一個元件要改名,你要改 100 次嗎?
如果你是這樣做,哪我可要給你鼓掌了,你勇氣可嘉喔!


===================引 用 a02a02a02 文 章===================
謝謝各位先進的指教,pillar62兄的方法的確可行....
我的程式是有多支功能相近的程式及表單,(其Tedit的名稱都一致)...需要共用同一種資料檢查的公用程式...因為不想重覆的檢查程式在每個單元中出現。所以才想要寫一支共用的檢查程式做該畫面Tedit的檢查...然後依不一樣的檢查條件依序檢查...如果發現某個form的某個edit有誤,則停到該edit要求重新輸入...
請問有更容易的方式嗎?正努力測試中...謝謝大家的指點..
系統時間:2024-04-28 16:43:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!