0

这是我的代码:

  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;
4

1 回答 1

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;

对于它的价值,在我工作的地方,我们的编码标准要求使用复合语句,with begin/end,并禁止使用单语句变体。自从我们引入这条规则以来的 15 年里,我们从未遇到过这个错误。Niklas Wirth 知道他弄错了,并纠正了 Modula-2 中的错误。但是只要放弃单语句语法就可以很简单地避免这个问题。


正如您和其他人指出的那样,更新if DRelatiebeheer.CID.Post = Action then看起来很可疑。老实说,我对您用来推荐该问题的解决方案的课程知之甚少。

于 2013-11-08T09:58:49.043 回答