fmMain と fmEmpl という 2 つのフォームがあります。両方とも、sbMain および sbEmpl と呼ばれるそれぞれの TStatusBar を持っています。データベース コンポーネントを格納する dmData という TDataModule があります。
セル グリッドが強調表示されたときにデータベースからの実際の値を表示できるように、sbEmpl パネルを更新する必要があります。TClientDataSet の OnAfterScroll ハンドラを使用してこのイベントを処理しようとしましたが、fmEmpl ではなく、fmMain でのみ動作します。sbEmpl パネルを更新しようとすると、常にエラー メッセージが表示されます。これはメッセージです:
Access violation at address 00405337 in module 'SpeZet.exe'. Read of address 0000038C.
一方、dmData には両方のヘッダー (.h) が含まれています。
TStatusBar のどこが悪いのでしょうか?
何か案が?
よろしくお願いします。
編集:わかりました、ここにコードがあります:
void __fastcall TdmData::cdsEmplAfterScroll(TDataSet *DataSet)
{
vEmpl = "Name = " +
dmData->cdsEmpl->FieldByName("Name")->AsString +
" | idEmployee = " +
dmData->cdsEmpl->FieldByName("idEmployee")->AsInteger +
" | idJob = " +
dmData->cdsEmpl->FieldByName("idJob")->AsInteger;
fmMain->sbMain->SimplePanel = true;
fmMain->sbMain->SimpleText = vEmpl;
fmEmpl->sbEmpl->SimplePanel = true;
fmEmpl->sbEmpl->SimpleText = vEmpl;
}
「アクセス違反」メッセージは、次の行で発生します。
fmEmpl->sbEmpl->SimplePanel = true;
fmEmpl->sbEmpl->SimpleText = vEmpl;