Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Guardar valor de TShiftState (https://www.clubdelphi.com/foros/showthread.php?t=94662)

Angel.Matilla 14-05-2020 11:39:48

Guardar valor de TShiftState
 
¿Cómo puedo hacer en un evento OnKeyDown para guardar en una variable el valor TShiftState?

Neftali [Germán.Estévez] 14-05-2020 17:10:01

Hola Ángel.
No veo el problema. El parámetro en el OnKeyDown es como se ve:


Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)


Basta con guardar el valor del parámetro Shift, en una variable de ese tipo.
¿O lo que quieres es guardarlo (por ejemplo) en un campo de la Base de Datos?
En ese caso al ser un conjunto (set) deberás convertirlo a binario, a un string, a un integer,... (pero creo que en cualquier caso debes hacerlo manualmente).

Angel.Matilla 15-05-2020 10:00:54

Gracias por la respuesta. No, quiero guardarlo en una variable pero las formas en las que he probado me dan todas error al compilar y no se me ocurre como más allá de guardar cada estado en una variable tipo bool:
Código:

bool lShift[3];
Word lKey;

void __fastcall TfSocios::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
    lShift[0] = Shift.Contains(ssShift);
    lShift[1] = Shift.Contains(ssAlt);
    lShift[2] = Shift.Contains(ssCtrl);
    lKey = Key;
}

Y luego comprobar cada uno de esos valores cuando me haga falta, pero estaba seguro que debe haber otra forma que no soy capaz de encontrar por más que he buscado.

Angel.Matilla 15-05-2020 10:32:02

Vale. Había probado un montón de formas... salvo la correcta: TShiftState variable; :mad:


La franja horaria es GMT +2. Ahora son las 18:19:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi