Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#4

AW: wsNormal, wsMinimized, wsMaximized nicht gefunden ?

  Alt 19. Jul 2020, 11:56
SCOPEDENUMS kann/muß man bei der Typ-Deklaration angeben. Nachträglich wird es nicht mehr geändert.
Aber ja, beim FMX wird das sehr oft benutzt und es wurde auch schon mehrmals geändert. (in der nächsten Delphi-Version)

PS: Ich finde es auch krank, wenn man Scope mit Prefix mischt, was im FMX oft vorkommt/vorkam,
und das hier ist einer der Fälle.


Ja, die RTTI ist für sowas einfach zu praktisch ... würde das auch empfehlen.


Da TWindowState beim Parameter gefunden wurde, könnte man denken die nötige Unit ist vorhanden,
aber es gibt einige Typen mit Weiterleitungen, z.B. wenn sie verschoben wurden, aber leider wird da oft nur der Typ weitergeleitet, aber bei Enums nicht die Werte, was echt schwachsinnig ist (ohne ScopedEnums), da man dann dennoch die andere Unit einbinden muß, womit die Weiterleitung des Typs fast nutzlos ist (außer man nutzt den Scope/Namespace).
Aber hier hat man es z.B. in der Vcl.Forms mal (fast) richtig gemacht, aber da es hier eben die vollständige Weiterleitung gibt (Grund sind alte VCL-Quellcodes wo es früher noch ohne Scope war), kann man über die Vcl.Forms das wsMaximized ohne Scope benutzen, während es über System.UITypes nur mit Scope zu nutzen ist.

Delphi-Quellcode:
// System.UITypes, war aber früher in der Forms.pas und SCOPEDENUMS war noch nicht erfunden

{$SCOPEDENUMS ON}

type
  TWindowState = (wsNormal, wsMinimized, wsMaximized);


// Vcl.Forms

const
  wsNormal = System.UITypes.TWindowState.wsNormal;
  wsMinimized = System.UITypes.TWindowState.wsMinimized;
  wsMaximized = System.UITypes.TWindowState.wsMaximized;

type
  TWindowState = System.UITypes.TWindowState;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Jul 2020 um 12:23 Uhr)
  Mit Zitat antworten Zitat