TSHIFTSTATE

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
juelin
Beiträge: 244
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

TSHIFTSTATE

Beitrag von juelin »

Hallo schöne Weihnachten alle zusammen,
ich rufe das Ereignis
TFrame4.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
im TImage auf.
Und damit nicht immer diese Warnung
unit6.pas(30,7) Hint: Parameter "Shift" not used
kommt setzte ich folgenden in der Routine Befehl ab
if Shift = ssAlt then ImagePosX:=X; (So steht es in der Onlinehilfe).
Nun kommt aber folgende Fehlermeldung
unit6.pas(199,12) Error: Operator is not overloaded : "TFhiftState = TShiftStateEnum"

Ich habe keine Ahnung warum (steht doch so in der Onlinehilfe).
Hat da jemand eine Idee?

Schöne Restweihnachten noch.
Gruß
Jürgen

Warf
Beiträge: 2118
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: TSHIFTSTATE

Beitrag von Warf »

TShiftState ist ein Set von TShiftStateEnum (es kann ja mehr als eine taste gleichzeitig gedrückt sein). Korrekt ist also

Code: Alles auswählen

ssAlt in Shift
Übrigens, das was du da bekommst ist keine Warnung sondern ein Hinweis (daher steht da Hint). Warnings sind Sachen die definitiv in manchen Situationen kaputt gehen können. So zu sagen Fehler die nur darauf warten zu passieren. Faustregel, ein Projekt sollte ohne warnings kompilieren.
Hints hingen sind Sachen die keine Fehler per se darstellen, aber potentiell ein Versehen sein können.

Beispiel, man hat eine komplexe Funktion und schreibt sie um sodass sie viel einfacher wird, dann bleiben ein Haufen Parameter und variablen übrig die vorher notwendig waren, in der neuen einfacheren version aber nicht mehr. Dafür sind diese hints da um dich drauf aufmerksam zu machen ob du das wirklich noch brauchst oder es nicht sogar löschen kannst
Zuletzt geändert von Warf am Do 26. Dez 2024, 12:29, insgesamt 2-mal geändert.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: TSHIFTSTATE

Beitrag von theo »

Wie Warf sagt.
Deshalb kann es gleichzeitig mehrere Status enthalten.

Code: Alles auswählen

{ Types used by standard events }
  TShiftStateEnum = (ssShift, ssAlt, ssCtrl,
    ssLeft, ssRight, ssMiddle, ssDouble,
    // Extra additions
    ssMeta, ssSuper, ssHyper, ssAltGr, ssCaps, ssNum,
    ssScroll,ssTriple,ssQuad,ssExtra1,ssExtra2);  

wennerer
Beiträge: 607
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: TSHIFTSTATE

Beitrag von wennerer »

Hallo,
zu dem Thema ist vielleicht auch dies noch interessant:

viewtopic.php?p=142459#p142459

Viele Grüße
Bernd

paweld
Beiträge: 85
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: TSHIFTSTATE

Beitrag von paweld »

oder wenn Sie prüfen wollen, ob nur Alt gedrückt wurde, dann

Code: Alles auswählen

if Shift = [ssAlt] then 
// ...
Grüße / Pozdrawiam
paweld

Benutzeravatar
juelin
Beiträge: 244
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

[gelöst] Re: TSHIFTSTATE

Beitrag von juelin »

Ja danke für sie Hinweise.
Habe das Problem schon auf andere Weise gelöst.
Shift:=Shift;
Damit kommt die Warung Shift unused auch nicht mehr.
Alles Gute
Jürgen

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: TSHIFTSTATE

Beitrag von fliegermichl »

Du kannst aber auch unter Projekt -> Projekteinstellungen -> Compilereinstellungen -> Meldungen die Meldung Hint: Parameter "$1" not used ausschalten.

Antworten