2009-04-07 58 views
1

這是一個遠射,任何人都可以幫助這一點,但在這裏不用。我繼承了Janus GridEX控件的VB6應用程序。它遍歷記錄,並且是可編輯的。問題是,如果我編輯單元格並按下按鈕以轉到下一條記錄,則更改將應用​​於下一條記錄,而不是我正在編輯的那條記錄。就好像,我需要它在完成編輯前完成下一個記錄。我之前在VC++中遇到過這樣的問題,有時候你必須對你所使用的控件或其他東西「KillFocus」。我只是不知道該在這裏做什麼。我試着發送一個回車符,因爲如果你退出編輯單元格,它可以工作,但手動發送回車不起作用。什麼祕密?劍鋒當Gridex問題

回答

1

這取決於按鈕是否是內部的Janus當Gridex與否。如果它在內部,那麼你可以做的唯一事情就是查看控件暴露的事件,看看是否有序列可以讓你知道發生了這個問題。然後,您可以嘗試通過恢復您移動到的行並將編輯放在您離開的行中來採取糾正措施。

如果該按鈕位於Janus的外部,則可以使用調試模式跟蹤控制焦點傳送到下一行的語句順序。這可能是某種特定順序的命令失序或副作用。我遇到了不同的控制。

記住,你可以同時在調試模式下編輯,所以你可以嘗試不同的方法和測試,直到你找到一個工作。

2

是您的網格綁定或取消綁定?

很難從您的描述中知道,但我想如果您有這個問題,那麼它可能是有約束力的。

另一個問題是,按鈕是內置在控件中的RecordNavigator還是它是一個單獨的按鈕?我又提起這事的原因,是我所看到的VB6應用我支持其中一個工具欄往往會攔截並與JanusGrid應該如何工作的干擾問題。

爲了解決這個限制,我在窗體上還有一個JanusGrid控件的任何工具欄的點擊處理程序中添加了以下代碼。

如果jsgxYourGridName.EditMode = jgexEditModeOn然後jsgxYourGridName.Update

這樣,任何更改都將立即應用到當前行。

如果這沒有幫助,那麼我也看到了綁定到網格的記錄集與網格中的內部記錄集不同步的問題。您可以通過將網格的書籤與記錄集的書籤進行比較來檢查此問題。

即, mrsYourRecordset.Bookmark = jsgxYourGrid.ADORecordset.Bookmark

在某一點上,我可能也使用過類似的東西。

jsgxYourGrid.ADORecordset.Bookmark = jsgxYourGrid.RowBookmark(jsgxYourGrid.RowIndex(jsgxYourGrid.Row)) 

最後,你可以嘗試在BeforeUpdateRowColChange和/或網格的AfterColUpdate事件設置斷點,看電網是什麼記錄真正的按鈕時,點擊上。