Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: Prüfen ob ein Integerwert in einem ENUM existiert

  Alt 18. Feb 2021, 11:44
Ich hätte noch einen anderen Ansatz mit einem Helper, der nebenbei noch die Konstanten in der TOrderField-Definition eliminiert:
Delphi-Quellcode:
type
  TOrderField = (ofNone, ofBelegnummer, ofBelegdatum, ofKonto, ofKontoName, ofBank, ofZahldatum);

type
  TOrderFieldHelper = record helper for TOrderField
  private const
    cColumnMap: array [TOrderField] of Integer = (-1, 4, 6, 7, 8, 9, 10);
  public
    function GetColumn: Integer;
    procedure SetColumn(const Value: Integer);
    property Column: Integer read GetColumn write SetColumn;
  end;

var
  OrderField: TOrderField = ofBelegnummer;

...

function TOrderFieldHelper.GetColumn: Integer;
begin
  Result := cColumnMap[Self];
end;

procedure TOrderFieldHelper.SetColumn(const Value: Integer);
var
  idx: TOrderField;
begin
  for idx := Low(cColumnMap) to High(cColumnMap) do begin
    if cColumnMap[idx] = Value then begin
      Self := idx;
      Exit;
    end;
  end;
  Self := ofNone;
end;
Verwendung dann so:
Delphi-Quellcode:
procedure TfrmMain.sgOPOSFixedCellClick(Sender: TObject; ACol, ARow: Integer);
begin
  if OrderField.Column = ACol then
    OrderASC := not OrderASC
  else
    OrderField.Column := ACol;
  btnRefresh.Click;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat