Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastatur --> Shift --> alle eventualitäten (https://www.delphipraxis.net/62319-tastatur-shift-alle-eventualitaeten.html)

Christian18 2. Feb 2006 20:31


Tastatur --> Shift --> alle eventualitäten
 
Hallo,

ich wollte nur mal nachfragen, ob ich bei folgenden Code alle eventualitäten berücksichtigt habe.
Delphi-Quellcode:
  if Shift = [ssShift] then Label5.Caption:='Shift';
  if Shift = [ssAlt] then Label5.Caption:='Alt';
  if Shift = [ssCtrl] then Label5.Caption:='Strg';
  if Shift = [ssShift, ssAlt] then Label5.Caption:='Shift + Alt';
  if Shift = [ssShift, ssCtrl] then Label5.Caption:='Shift + Strg';
  if Shift = [ssAlt, ssCtrl] then Label5.Caption:='Alt + Strg';
  if Shift = [ssShift, ssAlt, ssCtrl] then Label5.Caption:='Shift + Alt + Strg';
MFG Christian18

mirage228 2. Feb 2006 20:35

Re: Tastatur --> Shift --> alle eventualitäten
 
Hi,

wie wärs mit
Delphi-Quellcode:
var
  str: string;
begin
  str := '';
  if ssShift in Shift then
    str := str + 'Shift + ';
  if ssCtrl in Shift then
    str := str + 'Strg + ';
  if ssAlt in Shift then
    str := str + 'Alt + ';
  if Length(str) > 0 then
    Delete(str, Length(str) - 2, 2);
Das sollte wirklich alles abdecken ;)

mfG
mirage228

Christian18 2. Feb 2006 20:37

Re: Tastatur --> Shift --> alle eventualitäten
 
eine frage mal bei meiner Version. wenn ich die Taste AltGr drücke, dann wird Strg + Alt angezeigt ist das richtig, oder habe ich da einen Programmierfehler gemacht???

xaromz 2. Feb 2006 20:41

Re: Tastatur --> Shift --> alle eventualitäten
 
Hallo,

@Christian18: Da ist alles drin.

AltGr ist eine Kombination aus Alt + Strg. Da ist also alles in Ordnung.

Hier noch meine Lösung:
Delphi-Quellcode:
var
  Caption, Add: String;
begin
  Caption := '';
  Add := '';

  if ssShift in Shift then
  begin
    Caption := 'Shift;
    Add := ' + ';
  end;

  if ssAlt in Stift then
  begin
    Caption := Caption + Add + 'Alt';
    Add := ' + ';
  end;

  if ssStrg in Stift then
    Caption := Caption + Add + 'Strg';

  Label5.Caption := Caption;
end;
Wer schafft weniger if-Abfragen :stupid: ?

Gruß
xaromz

JasonDX 2. Feb 2006 20:56

Re: Tastatur --> Shift --> alle eventualitäten
 
Zitat:

Zitat von xaromz
Wer schafft weniger if-Abfragen :stupid: ?

Wenne schon so danach fragst... :mrgreen:
Delphi-Quellcode:
function ShiftStateToString(s: TShiftState): string;
const
  Shifts: array[0..2] of TShiftState = ([ssAlt], [ssShift], [ssCtrl]);
  strings: array[0..2] of string = ('Alt', 'Shift', 'Control');
  formatStrings: array[boolean] of string = ('', '%s + ');
var
  i: byte;
begin
  result := '';
  for i := 0 to 2 do
    result := result + format(formatStrings[(Shifts[i] * s) <> []], [strings[i]]);
  delete(result, length(result) - 2, 2);
end;
greetz
Mike


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz