私は複数のタブシートを持っています。私のPageControlの各タブシートには、このdbgridを操作するためのボタンが付いたDbgridが含まれています。私はボタンの削除をクリックしたときDelphi Dbgridレコードを削除
時々、私のDBGridを変更しません。削除後、私は私のDBgridで私の価値を参照してください。
If MyTable.recordcount > 0 then
begin
str := 'Value of name field/**' + MyTable.FieldByName('Name').AsString+'**/';
If Application.MessageBox(PChar(str), PChar('NAME'), MB_OKCANCEL + MB_ICONQUESTION) = IDOK then
begin
MyTable.Delete;
end;
end;
私は削除した後
MyTable.Refresh;
を追加しようとするが、それは動作しません。 MessageBoxのmyfieldの値は正しいです!私はMyDBgridで別のタブシートを選択したときに
、この問題が表示されます。 フォーカスのDBGridに問題がありますか?私のDBGrid(dsBrowser、dsEdit、...)の状態の問題がありますか?
============================================== ===========
私はBeforeDeleteイベントとAfterDeleteイベントのログを作成しよう:AfterDeleteイベントで
Log(1,'------------------------------------Before Del');
Log(1,Format('DataSet.IsEmpty:%s',[BoolToStr1(DataSet.IsEmpty)]));
Log(1,Format('DataSet.State:%d',[Ord(DataSet.State)]));
Log(1,'--------');
Log(1,Format('DataSet.RecNo:%d',[DataSet.RecNo]));
Log(1,Format('DataSet.TabSheet:%s',[DataSet.FieldByName('TabSheetName').AsString]));
Log(1,Format('DataSet.FieldName:%s',[DataSet.FieldByName('FieldName').AsString]));
Log(1,Format('DataSet.FieldId:%s',[DataSet.FieldByName('FieldId').AsString]));
:
Log(1,'------------------------------------After Del');
Log(1,Format('DataSet.IsEmpty:%s',[BoolToStr1(DataSet.IsEmpty)]));
Log(1,Format('DataSet.State:%d',[Ord(DataSet.State)]));
Log(1,'--------');
Log(1,Format('DataSet.RecNo:%d',[DataSet.RecNo]));
Log(1,Format('DataSet.TabSheet:%s',[DataSet.FieldByName('TabSheetName').AsString]));
Log(1,Format('DataSet.FieldName:%s',[DataSet.FieldByName('FieldName').AsString]));
Log(1,Format('DataSet.FieldId:%s',[DataSet.FieldByName('FieldId').AsString]));
私はタブシートを使用します以下のように:
私はこのログを取得
------------------------------------Before Del
DataSet.IsEmpty:False
DataSet.State:1
--------
DataSet.RecNo:7
DataSet.TabSheet:tabsheet_0
DataSet.FieldName:
DataSet.FieldId:03
------------------------------------After Del
DataSet.IsEmpty:False
DataSet.State:1
--------
DataSet.RecNo:6
DataSet.TabSheet:tabsheet_0
DataSet.FieldName:
DataSet.FieldId:03
あなたは私のログに見ることができます:データセットは変更しない(filednameおよびフィールド識別子/ RECNOのプロパティを変更しないで変更される)の後03
を含む行を削除します。
申し訳ありませんが、私はあなたのqがあなたの問題を適切に説明しているとは思えません。a)あなたのスクリーンショットを見て、なぜそれが表示されているときにタブシートについて話しているのですが、それはDBGridの一部です。 b)選択した行のDBGridのLHデータ列が空白なのはなぜですか? c)そして、あなたが示すログは、RecNo 6が正常に削除された場合ですか?もしそうなら、私はそれが私たちに示されることを知ることができません - レコードが削除されないときのログが良いでしょう。 d)DBGridが埋め込まれている形式の属性を記録するためにデータセットが使用されていますか?あなたのqは、あなたが何をしているのか明確に分かりません。 – MartynA
Btw、私はあなたがこれに助けが必要なら、あなたはあなたのqにMCVEを含めなければならないと思う - http://stackoverflow.com/help/mcveを参照してください。 – MartynA
@MartynA助けてくれてありがとう...私私は現在のタブシートを変更し、選択された新しいタブシートの行を削除するときにエラーを再現できるので、私はタブシートについて話します。この場合、削除は正しく実行されません... B>このセルは空です..私はこのセルに何も入れません。C>あなたはRecNo = 6を見ることができますが、fieldnameとfieldIdは変更されず、私のDBgridインターフェイスは変更されません... D> MyDbgrid新しいタブシートを作成するときに追加されます((新しいタブシートを追加すると、DBGrid、すべてのボタンを含むクラスをインスタンス化します)) – userPro