这是我的代码:
if DRelatiebeheer.ContactpersoonID.Post = Action then
KJSMDBGrid1.RefreshData;
KJPanel4.Visible := true;
我的问题是,当帖子成功结束时,如何将面板设置为可见。
我不知道如何修复它,尝试了很多方法,但没有找到问题的解决方案。
我认为代码不起作用,因为我在OnGetCellParams
事件上看不到它。
我只想在发布信息时将最后一个面板设置为可见
procedure TFRelatiebeheer.KJSMDBGrid1GetCellParams(Sender: TObject);
begin
if DRelatiebeheer.ACCID.AsInteger <= 0 then
KJPanel3.Visible := false;
KJPanel4.Visible := false;
else
begin
KJPanel3.Visible := true;
end;
这是我的OnGetCellParams事件,这是另一个
procedure TFRelatiebeheer.SaveCancel(Sender: TObject);
begin
if (DRelatiebeheer.CID.State in [dsEdit, dsInsert]) then
DRelatiebeheer.CID.Post;
DRelatiebeheer.AID.Post;
if DRelatiebeheer.CID.Post = Action then
KJSMDBGrid1.RefreshData;
KJPanel4.Visible := true;
end;
答案 0 :(得分:2)
我认为答案可以在我对你的问题的第一次评论中找到。我们来看看这段代码:
procedure TFRelatiebeheer.SaveCancel(Sender: TObject);
begin
if (DRelatiebeheer.CID.State in [dsEdit, dsInsert]) then
DRelatiebeheer.CID.Post;
DRelatiebeheer.AID.Post;
if DRelatiebeheer.CID.Post = Action then
KJSMDBGrid1.RefreshData;
KJPanel4.Visible := true;
end;
缩进已关闭。您认为您在KJPanel4.Visible
内设置了if
,但事实并非如此。让我们纠正缩进:
procedure TFRelatiebeheer.SaveCancel(Sender: TObject);
begin
if (DRelatiebeheer.CID.State in [dsEdit, dsInsert]) then
DRelatiebeheer.CID.Post;
DRelatiebeheer.AID.Post;
if DRelatiebeheer.CID.Post = Action then
KJSMDBGrid1.RefreshData;
KJPanel4.Visible := true;
end;
你看到发生了什么事吗?
使用begin/end
:
procedure TFRelatiebeheer.SaveCancel(Sender: TObject);
begin
if (DRelatiebeheer.CID.State in [dsEdit, dsInsert]) then
DRelatiebeheer.CID.Post;
DRelatiebeheer.AID.Post;
if DRelatiebeheer.CID.Post = Action then
begin
KJSMDBGrid1.RefreshData;
KJPanel4.Visible := true;
end;
end;
在我工作的地方,我们的编码标准要求使用compound statements和begin/end
,并且禁止使用单个语句变体。在我们引入这条规则的过去15年中,我们没有遇到过这个错误。 Niklas Wirth知道他弄错了并纠正了Modula-2中的错误。但是,通过放弃单一语句语法来简单地避免问题就足够了。
更新,正如您和其他人所指出的那样,if DRelatiebeheer.CID.Post = Action then
看起来很可疑。老实说,我不太了解你用来推荐解决这个问题的类。