Database TStatusBar有什么问题?

Database TStatusBar有什么问题?,database,c++builder,statusbar,tclientdataset,tdbgrid,Database,C++builder,Statusbar,Tclientdataset,Tdbgrid,我有两种形式叫做fmMain和fmemp。两者都有一个称为sbMain和sbemp的TStatusBar。我有一个名为dmData的TDataModule来存储数据库组件 我需要更新SBemp面板,以便在突出显示单元格网格时显示数据库中的实际值。我一直在尝试使用TClientDataSet的OnAfterScroll处理程序来处理此事件,但它只在fmMain上工作,而不在fmemp上工作。如果我尝试更新SBemp面板,它总是会引发错误消息。这是一条信息: Access violation at

我有两种形式叫做fmMain和fmemp。两者都有一个称为sbMain和sbemp的TStatusBar。我有一个名为dmData的TDataModule来存储数据库组件

我需要更新SBemp面板,以便在突出显示单元格网格时显示数据库中的实际值。我一直在尝试使用TClientDataSet的OnAfterScroll处理程序来处理此事件,但它只在fmMain上工作,而不在fmemp上工作。如果我尝试更新SBemp面板,它总是会引发错误消息。这是一条信息:

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;

很可能您的数据模块没有指向FBemp表单的有效指针。

最后,基于,我已经解决了这个问题。。我没有注意到dmData是在FMEMP之前创建的,因此当我尝试访问FMEMP时,它将引发任何“访问冲突”错误消息

我创建了一个简单的条件来检查fmemp是否已创建。这就是条件:

if (fmEmpl != NULL) {
    sbEmpl->SimplePanel = true;
    sbEmpl->SimpleText = sData;
}
现在,我可以直接从dmData访问和更新SBEMP


谢谢。

代码将有助于诊断此问题。@GregorBrandt好的,我已经发布了代码。。提前感谢..FMemp是在主应用程序中创建的吗?检查FMEMPL的值,是否为NULL?@ GRGGRORBORANT?我从编译器菜单中手动创建FiMpPL与选择文件>新>表单-C++ Builder。你在这里的意思是什么?FMEMPLE的值或FMEMPLE的组件?我在dmData.cpp的顶部添加了“#include”ueemployee.h”行。头文件是否已经处理指向FMEMPLE中安装的所有组件的指针?头文件只是帮助您的数据模块理解这个UEEMPLoyee类是什么。您实际在哪里创建了表单(使用FMEMPLE=new…)我从编译器菜单手动创建FMEML,从选择文件>新>表单-C++ Builder…这是设计表单。但是在运行时,你必须使用“新”。“创建表单。试着浏览一下示例项目,看看创建表单是如何处理的。那么,使用
new
FormCreate
与此问题之间的实际联系是什么?
FormCreate
是否会影响“访问违规”?当@Riho是第一个正确的人时,您将自己的答案标记为正确,我在问题的评论部分中问了这个问题。您没有有效的指针,这是导致错误的原因。@GregorBrandt好的,我已经更正了我的标记。。我真的没有注意到Riho的回答和我自己的答案有关。。请取消你的减号。。谢谢。无法删除,已经23个小时了,现在已锁定,除非您编辑答案。