Schau mal.
Hier wird die Liste nicht weiter rollen.
Willst Du dass sie "zurückspringt", dann passe die Bedingungen BED1 und BED2 an...
Bemerkung:
Durch "High(LW)" und "Low(LW)" kann man die Definition vom LW-Array anpassen, ohne den restlichen Code zu ändern.
Ach ja... Versuche mal deine Variablen "sprechende" Namen zu geben... es liesst sich einfacher ;)
var
J: Integer = 0;
LW: array[1..10] of String;
procedure TMF.LW_Down;
var
Loop : Integer;
Current_List_Offset : Integer;
begin
Current_List_Offset := (J mod (High(LW) - 6 + Low(LW) ));
for Loop :=1 to 6 do Begin
Memo1.Lines.Add( LW[Current_List_Offset + Loop] );
End;
end;
procedure TMF.LW_Up;
var
Loop : Integer;
Current_List_Offset : Integer;
begin
Current_List_Offset := (J mod (High(LW) - 6 + Low(LW) ));
for Loop :=1 to 6 do Begin
Memo1.Lines.Add(LW[Current_List_Offset + Loop]);
End;
end;
procedure TMF.Button1Click(Sender: TObject);
begin
Inc(J);
If (J div (High(LW) - 6 + Low(LW) ))=1 then Dec(J); // BED1
memo1.Clear;
LW_Down;
end;
procedure TMF.Button2Click(Sender: TObject);
begin
Dec(J);
if J<0 then J := 0; // BED2
memo1.Clear;
LW_Up;
end;