Si vas a usar múltiples estados quizá te convenga utilizar un arreglo con los posibles textos:
Código Delphi
[-]
const
Textos: array [1..5] of String = (
'Primer texto',
'Segundo texto',
'Tercer texto',
'Cuarto texto',
'Quinto texto'
);
y usar alguna variable entera (incluso la propiedad Tag del botón) para conocer el índice del texto que debes presentar:
Código Delphi
[-]
Inc(Button1.Tag);
Button1.Caption := Textos[Button1.Tag];
De esta manera tienes un código más claro sin tantos condicionales.
Edito:
Para poder regresar al primer texto luego del último (quino en el ejemplo), en lugar de
Inc(Button1.Tag)
podías usar
Button1.Tag := (Button1.Tag + 1) mod 5;
// Saludos