2017-05-11 4 views
-1

In der Jvdbgrid1table habe ich immer nur zwei ClientDataSet Datensätze. Wenn ich auf dem ersten Datensatz bin, wie gehe ich auf den zweiten Datensatz und umgekehrt. Wenn ich auf dem zweiten Datensatz bin, wie gehe ich auf den ersten Datensatz.ClientDataSet Datensätze (einmal verschieben +1 einmal -1)

So (buttonClick), sobald die Aufnahme +1 einmal -1

Wie ist dies in Code speichern?

Antwort

2

Wenn Sie auf der zweiten Platte sind und wollen die erste erhalten, rufen Sie einfach

ClientDataSet1.MoveBy(-1) 

Wenn auf den ersten Datensatz, auf den zweiten zu erhalten, rufen Sie

ClientDataSet1.MoveBy(1) 

Aber wenn Sie Ihre App wollen dies automatisch tun, ist es einfacher .Next und .Prior zu verwenden, wie in

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

aktualisieren Die sauberste/einfachste Äquivalent zu dem, was Sie in Ihrer Antwort zu tun scheint

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; 

aber es ist ziemlich viel Geschmackssache zu sein. Ymmv ...

+0

Das ist was ich meine. Aber, das Programm sollte wissen, ob ClientDataSet1.MoveBy (1) oder ClientDataSet1.MoveBy (-1) – RedWomen

+1

Ich meine so etwas: 'if ClientDataSet.RecNo = 1 dann ClientDataSet1.MoveBy (1); if ClientDataSet.RecNo = 2 dann ClientDataSet1.MoveBy (-1); 'Machen Sie mehr Sinn in Code geschrieben – RedWomen

+0

Vielen Dank. Ich habe eine Frage. Ich vermisse ein englisches Wort zu fragen, ich versuche es ok? Alles so wie es ist In diesem Code. Nur physisch nicht zum Rekord bewegen, nur um unter dem Verfahren zu spielen und physisch auf dem gleichen Rekord zu bleiben., Ist es möglich? Wir sind auf dem ersten Datensatz ButtonClick und meine Prozedur wird aus dem zweiten Datensatz – RedWomen

0

Am Ende gelang es mir :) Das ist genau das, was ich meinte. Frage an dich. Sie können diesen Code vernünftiger schreiben (besser)

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; 
Verwandte Themen