如何得到當前活動的控制項 判斷那個控制項得到了游標

2021-04-26 20:40:55 字數 849 閱讀 1468

昨天晚上加班的時候遇到乙個問題,大致要實現以下內容:

1.資料視窗控制項:dw_1、dw_2;

2.如果dw_1得到游標,那麼 ;

3.如果dw_1 失去焦點,那麼:如果dw_2得到游標, ;如果dw_2也沒有得到游標, 。

看起來很簡單的樣子(實際上也很簡單),但是我試了很多次。一開始在dw_1的losefocus事件裡加上: ,這樣一來,在dw_1失去游標的時候dw_2不可見了,即使你單擊的是dw_2也是一樣的效果,這就沒有達到目的。所以需要在 之前判斷是否是dw_2得到了游標,如果是,那麼就直接return,否則再set。

可是要怎麼實現呢?

經嘗試,解決方法如下(pb9.0):

graphicobject lctl_control     //宣告乙個graphicobject 型別的變數,用來儲存getfocus()的返回值

lctl_control = getfocus( )      //使用getfocus()函式,得到當前活動的控制項

/*注意下面一句**,判斷當前活動控制項是否是dw_2。因為dw_2本身是datawindow型別的,而lctl_control是graphicobject 型別的,此處需要進行強制型別轉換以後才能進行比較,否則會報錯。強制型別轉換可以採取多種方式,在此我選擇了把取兩者的控制代碼來比較(handle函式的返回值是long型別,此處和c++中不一樣,vc++中本身就有控制代碼型別)*/

//如果是dw_2得到了游標,return

if handle(lctl_control) = handle(dw_2) then return

//否則,將dw_2設定為不可見

dw_2.reset( )

dw_2.visible = false

2 18如何得到指向當前活動文件的指標?

這個問題的解決方案本身並不複雜,但是它要求很好的理解在mfc應用程式中各種物件之間的關係以及操縱那些物件的函式。下面的程式清單顯示的技術為此提供了一種獲得當前活動文件指標的 類屬的 可重用的方法。可以從 中的任何位置處呼叫該函式。上面程式清單中的方案既適用於mdi應用程式,也適用於sdi應用程式。對...

GTK 如何得到控制項的位置

不同的情況對應有不同的解決的辦法.如果你想得到乙個控制項相對於它的父視窗的位置,你需要使用widget allocation.x 和 widget allocation.y.如果你想的到乙個視窗相對於x主視窗 x root window 的位置,你應該使用 gdk window get geomet...

如何得到Winfom窗體上控制項的相相關屬性值

object invokemember string name,bindingflags invokeattr,binder binder,object targer,object args,cultureinto culture 引數說明 string name 包含要呼叫的建構函式 方法 屬性或...