Zuallererst würde ich den Label1, Label2 etc. Komponenten etwas bessere Namen geben, zumal Du von Übersichtlichkeit und Lesbarkeit redest.
Anschließend würde ich statt der '0','1' etc. im CASE Konstanten definieren:
Delphi-Quellcode:
Const
liUebersicht = 0; // li = Label Index
liKunden = 1;
...
Dann würde ich im FormCreate-Ereignis den Tag-Eigenschaften der Label-Komponenten diese Konstanten zuweisen:
Delphi-Quellcode:
Procedure TMyForm.FormCreate (Sender : TObject);
Begin
lbKunden.Tag := liKunden;
lbUebersicht.Tag := liUebersicht;
...
End;
Und dann über die Tag-Eigenschaft der Komponente das Case realisieren.
Delphi-Quellcode:
Case TLabel(Sender).Tag Of
liKunden : Begin
...
End;
liUebersicht : Begin
...
End;
End;
Übersichtlicher (und vor allen Dingen: Nachvollziehbarer) würde ich das nicht hinbekommen.
Der Nachteil der Stringvergleiche ist ganz klar, das dein Programm wegschmiert, sobald jemandem die Beschriftung nicht passt und er die SW patcht. So, wie das lokalisierende Programme machen. Die Captions stehen in den Resourcen, werden also übersetzt. Die Stringkonstanten stehen aber im Code und werden deshalb ignoriert.