Delphi设置Panel后发布

时间:2013-11-08 08:52:30

标签: delphi

这是我的代码:

  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;

1 个答案:

答案 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 statementsbegin/end,并且禁止使用单个语句变体。在我们引入这条规则的过去15年中,我们没有遇到过这个错误。 Niklas Wirth知道他弄错了并纠正了Modula-2中的错误。但是,通过放弃单一语句语法来简单地避免问题就足够了。


更新,正如您和其他人所指出的那样,if DRelatiebeheer.CID.Post = Action then看起来很可疑。老实说,我不太了解你用来推荐解决这个问题的类。