Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi j-Taste abfangen? (https://www.delphipraxis.net/184560-j-taste-abfangen.html)

BadenPower 6. Apr 2015 13:43

AW: j-Taste abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1296330)
Ok... funktioniert bei mir aber nicht, sobald ich die Sprache umstelle gleicht die if-Abfrage dem False Wert. Schalte ich zurück auf Deutsch = klappt es wieder.

Hast Du Dir einmal anzeigen lassen, was für ein Zeichen ausgegeben wird?

Delphi-Quellcode:
ShowMessage(Key);

milos 6. Apr 2015 13:45

AW: j-Taste abfangen?
 
Du machst das schon im KeyPress-Event oder?
Habs gerade getestet, bei mir funktioniert dies mit Deutsch (Schweiz), Deutsch (Deutschland), Französisch (Schweiz) und Englisch (USA)

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = 'j' then
    showmessage('test');
end;
Ist dein Formular im Fokus wenn du die Taste "J" drückst? Sollte eigentlich funktionieren.
Ob man die Tastenposition an der Tastatur abfragen kann, weiss ich nicht, könnte aber schwer werden mit Delphi.

Freundliche Grüsse

Dalai 6. Apr 2015 13:47

AW: j-Taste abfangen?
 
Was willst du eigentlich damit erreichen? Vielleicht gibt's ja einen anderen/besseren Weg, das zu lösen.

MfG Dalai

AlexII 6. Apr 2015 13:49

AW: j-Taste abfangen?
 
Zitat:

Zitat von BadenPower (Beitrag 1296332)
Zitat:

Zitat von AlexII (Beitrag 1296330)
Ok... funktioniert bei mir aber nicht, sobald ich die Sprache umstelle gleicht die if-Abfrage dem False Wert. Schalte ich zurück auf Deutsch = klappt es wieder.

Hast Du Dir einmal anzeigen lassen, was für ein Zeichen ausgegeben wird?

Delphi-Quellcode:
ShowMessage(Key);


Ein Fragezeichen kommt bei mir raus...

Muss allerdings sagen, dass das unter Lazarus mache... das konnte ich aber beim Erstellen des Threads nicht auswählen.

AlexII 6. Apr 2015 13:50

AW: j-Taste abfangen?
 
Zitat:

Zitat von milos (Beitrag 1296333)
Du machst das schon im KeyPress-Event oder?

Ja das ist es!

Captnemo 6. Apr 2015 13:51

AW: j-Taste abfangen?
 
Ich weiß jetzt auch nicht wirklich, was sich am "j" in den Tastaturlayouts verändern sollte. Ein J ist auch in USA, England, Schweiz, Frankreich immer noch ein J.
Beim Z oder Y würd ich's ja noch verstehen.

Vielleicht könnte ein bisschen Code vom TE das Mysterium aufklären.

Sir Rufo 6. Apr 2015 13:54

AW: j-Taste abfangen?
 
Zitat:

Zitat von Dalai (Beitrag 1296334)
Was willst du eigentlich damit erreichen? Vielleicht gibt's ja einen anderen/besseren Weg, das zu lösen.

MfG Dalai

Die Frage nach dem Kontext ist hier durchaus berechtigt.

Ich vermute mal es geht um den ersten Buchstabe für eine positive Bestätigung, die in deutsch Ja, in englisch Yes, in französisch Oui, in russisch Da, in ... ist.

Somit hätten wir also J, Y, O, D, ... je nach Landessprache ...

AlexII 6. Apr 2015 13:55

AW: j-Taste abfangen?
 
Ich wechsle auf eine kyrillische Sprache und da ist ein 'j' was anderes. Hier mein Code:

Delphi-Quellcode:
procedure TMainForm.FormKeyPress(Sender: TObject; var Key: char);
begin
  if Key = 'j' then
  begin
    if VolumeOnImage.Visible = True then VolumeOnImageClick(Self)
    else VolumeOffImageClick(Self);
  end;
end;
Ich möchte damit nur zwei Prozeduren aufrufen (Lautstärke ein/ausschalten), mehr nichts. Und ich habe mich für die j-Taste entschieden, da sie ne Markierung für blinde hat.

Dalai 6. Apr 2015 14:02

AW: j-Taste abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1296339)
Ich wechsle auf eine kyrillische Sprache und da ist ein 'j' was anderes.

Logisch.

Zitat:

Delphi-Quellcode:
procedure TMainForm.FormKeyPress(Sender: TObject; var Key: char);
begin
  if Key = 'j' then
  begin
    if VolumeOnImage.Visible = True then VolumeOnImageClick(Self)
    else VolumeOffImageClick(Self);
  end;
end;

Klar, dass das nicht funktioniert, denn du vergleichst mit einem j in ANSI-Codierung, so wie er in deinem Quelltext steht.

Zitat:

Ich möchte damit nur zwei Prozeduren aufrufen (Lautstärke ein/ausschalten), mehr nichts. Und ich habe mich für die j-Taste entschieden, da sie ne Markierung für blinde hat.
Und du meinst, das wäre bei jedem Tastaturlayout so? AFAIK ist das J nicht bei jedem Layout an derselben Stelle, die Markierung für Blinde aber schon (immer in der mittleren Zeile, mittig platziert).

MfG Dalai

Captnemo 6. Apr 2015 14:03

AW: j-Taste abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1296339)
Ich wechsle auf eine kyrillische Sprache und da ist ein 'j' was anderes.

Na, das ändert die Sachlage ja schon mal erheblich.

Wenn du mit deinem Kyrillischen Tastaturlayout auf das J drückst, kommt beim Programm logischerweise kein J an, somit hat das abfragen auf J auch keinen Sinn mehr.

Prüfe im Debugger welches Zeichen kommt, und prüfe in der IF-Abfrage auf dieses Zeichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:33 Uhr.
Seite 2 von 5     12 34     Letzte »    

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 by Thomas Breitkreuz