ClientDataSet记录(每次移动+1次-1)

时间:2017-05-11 08:00:54

标签: delphi

Jvdbgrid1 table中,我始终只有两个ClientDataSet条记录。 当我在第一张唱片时,如何进入第二张唱片,反之亦然。 当我在第二张唱片时,如何进入第一张唱片。

所以(buttonClick)一旦记录为+1 -1

如何在代码中保存?

2 个答案:

答案 0 :(得分:2)

当你在第二张唱片上并希望到达第一张唱片时,请致电

ClientDataSet1.MoveBy(-1)

当在第一个记录上时,要到达第二个记录,请致电

ClientDataSet1.MoveBy(1)

但如果您希望自己的应用自动执行此操作,则可以更轻松地使用.Next.Prior,例如

procedure TForm1.ToggleRecord;
begin
  ClientDataSet1.Next;
  if ClientDataSet1.Eof then
    ClientDataset1.Prior;
end;

更新您在答案中所做的最干净/最简单的等同似乎是

procedure TForm1.PlayFile;
begin
  ShowMessage(IntToStr(ClientDataSet1.RecNo));
end;

procedure TForm1.ToggleRecord2;
var
  Distance : Integer;
begin
  if ClientDataSet1.RecNo = 2 then
    Distance := -1
  else
    Distance := 1;

  ClientDataSet1.MoveBy(Distance);

  PlayFile;

  Distance := - Distance;
  ClientDataSet1.MoveBy(Distance);
end;

但这几乎是品味问题。 Ymmv ......

答案 1 :(得分:0)

最后我成功了:) 这正是我的意思。问你。 您可以更明智地编写此代码(更好)

procedure TForm1.btn1Click(Sender: TObject);
begin
  if assigned(idictionary) then
  begin

    if ClientDataSet1.RecNo = 1 then
    begin
      ClientDataSet1.Next;
      PlayFile;
      ClientDataSet1.Prior;
    end;

    if ClientDataSet1.RecNo = 2 then
    begin
      ClientDataSet1.Prior;
      PlayFile;
      ClientDataSet1.Next;
    end;
  end;
end;