,과 같이 연결이 데이터 구성 요소가 있습니다 :ADOQuery에서 현재 레코드가 변경되기 전에 발생하는 이벤트와 현재 레코드를 변경하지 않는 방법은 무엇입니까? 내 응용 프로그램에서
사용자가 DBGrid를에서 다른 행을 선택하거나 DBNavigator의 ADOQuery의 현재 레코드 변경을 사용 할 때마다DBGrid > (DataSource > ADOQuery > ADOConnection)
DBNavigator > (DataSource > ADOQuery > ADOConnection)
. 좋아,하지만 사용자가 현재 레코드를 약간 변경 한 다음 멀리 이동하면 변경 한 내용이 손실됩니다.
변경 사항이있을 경우 사용자가 현재 레코드에서 벗어나기 위해 확인 대화 상자를 표시하고 싶습니다. 그리고 사용자가 '아니오'를 클릭하면 응용 프로그램이 현재 레코드를 변경하지 않기를 바란다.
어디에서 코드를 삽입해야합니까? 사용자가 현재 레코드에서 벗어나기 전에 시작되는 이벤트는 무엇이며 계속 진행하지 못하게하는 방법은 무엇입니까?
if anythingChanged then
if messageDlg(...)=mrNo then
ADOQuery.dontChangeCurrentRecord;
WOO-HOO! 33 분 동안 나는이 답변을 기다렸고, 나는 BeforeScroll 이벤트에서 필자와 함께해야한다는 것을 알았지 만, 조용한 중단 트릭에 대해서는 몰랐다. - $ 많이 감사합니다! –
BeforeScroll은 모든 상황 (예 : 데이터 집합을 닫거나 데이터 집합을 새로 고치는 것)을 다루지는 않습니다. 한 번 TDataLinkReflector 기반의 TRecordArrivedNotifier를 작성하여 새 레코드에 도착하면 이벤트를 발생시킵니다. 이것을 "Abort"를 발사하는 기지로 사용할 수 있습니다. 내 대화 "데이터베이스 및 데이터 인식 컨트롤이 포함 된 더 똑똑한 코드"를 참조하십시오. http://wiert.wordpress.com/conferences-seminars-and-other-public-appearances/ –