Das Problem mit strings und case wurde schon häufiger diskutiert,
zb hier.
Wenn Du komplexere Abfragen gestalten möchtest und sie kein Performaceproblem darstellen oder "spätere" Abfragen nur dann Ausgeführt werden sollen, wenn vorherige fehlschlagen, sollte eine Lösung in dieser Art geeignet sein:
Delphi-Quellcode:
function BooleanSwitch(
const ABooleanArray:
array of Boolean): Integer;
begin
Result:= High(ABooleanArray);
while (Result>=Low(ABooleanArray))
and not ABooleanArray[Result]
do
Dec(Result);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case BooleanSwitch([
Sender=Button1,
Sender=Form1,
Sender=nil])
of
0: DoSthButton1;
1: DoSthForm1;
2: DoSthNil
else
DoSthElse;
end;
end;