AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

If Key = #107

Ein Thema von Luckner · begonnen am 16. Mai 2019 · letzter Beitrag vom 21. Mai 2019
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#8

AW: If Key = #107

  Alt 17. Mai 2019, 13:40
Hallo,
habe eine Abfrage gebastelt, die jedoch nur teilweise funktioniert.
Delphi-Quellcode:
if Key = #13 then //RETURN-Taste
begin
  ShowMessage('Bin hier 1');
  usw.
end
else if Key = #107 then //+-Taste auf dem Num-Block.
begin
  ShowMessage('Bin hier 2');
  usw.
end
Die Return-Taste funktioniert, die Plus-Taste jedoch nicht. Nach der Recherche dürfte jedoch #107 für die +-Taste korrekt sein. Oder doch nicht. Ich bitte um Hilfe.

Danke, Luckner
+ auf dem Num-Block hat den Wert 107 (Word) und nicht #107 (Char), #107 ist das kleine k.

Wenn man eine nummerischen Wert für eine Taste ermittelt hat, aber in einer Abfrage ein Zeichen benötigt, so kann man nicht einfach vor den nummerischen Wert ein # setzen, auch dann nicht, wenn das vom Compiler dann so "geschluckt" wird.

Der nummerische Wert der Taste k ist übrigens 75, dies ist aber nicht der Ascii-Wert des auf der Taste befindlichen Zeichens k, zumal diese Taste ja durchaus das K liefern könnte.

Wenn Du auf die Taste + vom Num-Block abfragen willst, so musst Du dazu entweder das Ereignis On...KeyUp oder das Ereignis On...KeyDown verwenden. In diesen beiden Ereignisse muss Du jedoch die Entertaste mit 13 abfragen und nicht mit #13, wie im Ereignis On...KeyPress.

Der abzufragende Wert in den Ereignissen ist bei einigen wenigen Tasten (fast) gleich, so dass man #13 äquivalent zu 13 verwenden kann, bei der Tabulatortaste mit #9 bzw. 9 geht das auch, aber beim überwiegenden Teil der Tasten passt das schlicht und einfach nicht.

Bau Dir mal ein Programm, das im OnKeyUp diesen Quelltext enthält:
Delphi-Quellcode:
procedure Tform1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
         s : String;
         s2 : String;
begin
  s := '';
  if ssShift in Shift then s := s + 'Umsch + ';
  if ssAlt in Shift then s := s + 'Alt + ';
  if ssCtrl in Shift then s := s + 'Strg + ';
  if ssLeft in Shift then s := s + 'Left + ';
  if ssRight in Shift then s := s + 'Right + ';
  if ssMiddle in Shift then s := s + 'Middle + ';
  if ssDouble in Shift then s := s + 'Double + ';
  s2 := IntToStr(TextToShortCut(AnsiReplaceText(s + Chr(Key),' ','')));
  s := Trim(s);
  s := ReverseString(s);
  if Copy(s,1,1) = '+then s := Trim(Copy(s,2,Length(s)));
  s := ReverseString(s);
  if s = 'then s := '<leer>';
  Caption := 'Key = ' + IntToStr(Key) + ' - Shift = ' + s + ' - ShortCut für Menüs = ' + s2;
end;
Es zeigt Dir in der Caption des Formulares dann die gedrückte Tastenkombination mit den in OnKeyUp abzufragenden Werten an. Das Formular kannst Du auf die Größe der Caption reduzieren.

Der Quelltext ist werde noch ästhetischen oder sonstwie besonderen Kriterien geschrieben, Effektivität ist auch keine Anforderung gewesen, sondern einfach nur: tut was er soll
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz