Witajcie, pytanie do znawców nowych rozwiązań w nowych środowiskach języka Delphi. Ogólnie w tym wątku przedstawiono nowości kolejnych środowisk
i z tego co widzę, nadal Delphi nie zostało usprawnione w wielu aspektach.
Czy jest możliwe inne przypisanie wartości typu Boolean do takiego przykładu jak poniżej? Jak wiadomo, standardowym przypisaniem wartości typu Boolean (jak ktoś zaczynał programować to tak pisał kod) jest:
if CheckBox.Checked = True then Label.Font.Color := clRed
else
if CheckBox.Checked = False then Label.Font.Color := clGreen;
który można skrócić do formy:
if CheckBox.Checked then Label.Font.Color := clRed
else Label.Font.Color := clGreen;
Można też zastosować takie rozwiązanie:
const
Kolor: array [Boolean] of TColor = (clGreen, clRed);
begin
Label.Font.Color := Kolor[CheckBox.Checked];
end;
lub takie:
with Label.Font do
case CheckBox.Checked of
True: Color := clRed;
False: Color := clGreen;
end;
Z punktu widzenia czytelności, najlepszym rozwiązaniem jest przykład nr 2.
Jednak czy istnieją inne rozwiązania w nowych środowiskach Delphi, tak jak wstawianie zmiennych po begin? (zupełna abstrakcja w pomysłach poniżej):
//1
Label.Font.Color := TColor(CheckBox.Checked(clRed, clGreen));
//2
Label.Font.Color := if CheckBox.Checked then TColor(clRed, clGreen);
//3
Label.Font.Color := TColor = (CheckBox.Checked = [clRed, clGreen]);