Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
Delphi 12 Athens
|
AW: Prüfen ob ein Integerwert in einem ENUM existiert
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;
|
|
Zitat
|