Zuerst einmal hilft es immer ungemein, den Code richtig zu formatieren:
Delphi-Quellcode:
function Formular1.starting : boolean;
var
Indexwert, Zaehlung : byte;
begin
Zaehlung := SpnEdtCount.Value;
Indexwert := RdGrpOperator.ItemIndex;
case ShowModal of
mrOk :
begin
if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
then
starting := FALSE
else
starting := True;
end;
mrCancel :
begin
SpnEdtCount.Value := Indexwert;
RdGrpOperator.ItemIndex := Zaehlung;
starting := FALSE;
end;
end;
end;
Und schon sieht man etwas klarer ... und ich hätte folgende Fragen:
- Warum haben Indexwert
und Zaehlung
den Typen Byte
? Damit kannst du nur Werte von 0..255 speichern. Reicht das wirklich aus?
Interessant wird es, wenn du z.B. den Wert 256 zuweist, daraus wird dann 0
- Der Wert von SpnEdtCount.Value
wird in Zaehlung
gespeichert und RdGrpOperator.ItemIndex
in Indexwert
- ok
Bei Cancel werden diese gespeicherten Werte aber "verdreht" zurückgeschrieben ... ist das so gewünscht?
EDIT: Kleiner Optimierungstip:
Statt
Delphi-Quellcode:
mrOk :
begin
if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
then
starting := FALSE
else
starting := True;
end;
einfach
Delphi-Quellcode:
mrOk :
starting := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );
das hilft auch den Code besser zu verstehen
EDIT2:
Ich habe jetzt erst bemerkt, dass
starting
ja der Funktionsname ist und somit in deinem Code der Rückgabewert ist.
Für das bessere Codeverständnis wäre es ratsam statt den Funktionsnamen
Result
zu verwenden. Dann ist jedem auf den ersten Blick klar, dass hier der Rückgabewert der Funktion gemeint ist.
Delphi-Quellcode:
mrOk :
Result := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );