AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

j-Taste abfangen?

Ein Thema von AlexII · begonnen am 6. Apr 2015 · letzter Beitrag vom 7. Apr 2015
Antwort Antwort
Seite 1 von 2  1 2   
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 12:55
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 = 'jthen
  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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#2

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:02
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 = 'jthen
  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
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#3

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:03
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 18:08
Du willst keinen bestimmten Buchstaben abfangen, sondern die dritte Taste von Links in der zweiten Reihe. Oder wie?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#5

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:04
Dann lass Dir doch einfach ausgeben, was im kyrillischen Tastaturlayout bei 'j' herauskommt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:14
Dann lass Dir doch einfach ausgeben, was im kyrillischen Tastaturlayout bei 'j' herauskommt.
Das nützt ihm allerdings nur bedingt, denn er möchte ja in jeder Sprache bzw. mit jedem Tastaturlayout beim Druck auf die gleiche Taste die Funktionen aufrufen, egal welches Zeichen die Taste sendet.


Das heisst, dass er im KeyPress-Event ermitteln muss, welche Sprache/Tastaturlayout eingestellt ist und welches Zeichen diese Taste sendet.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower ( 6. Apr 2015 um 13:18 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:15
Dann lass Dir doch einfach ausgeben, was im kyrillischen Tastaturlayout bei 'j' herauskommt.
Das wird ein 'o' ausgegeben mit showmessage(key) wird aber ein '?', voll komisch. Aber das ist eine halbfertige Lösung, da ich das auch für andere nicht germanische Sprachen schreibe.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
512 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:17
Ich denke wenn du alle Tastaturlayouts unterstützen willst, wäre es am besten wenn du das Layout beim anzeigen und beim ausblenden der Form anpasst und du trotzdem nur mit einem Layout arbeiten kannst.

Also...

Bei FormShow wird das Tastaturlayout auf deutsch gesetzt. Somit kannst du ein einfaches "j" abfragen und jeder wird bei der Taste mit dem Strich, wo bei uns das normale "j" ist, ein "j" schicken.

Dieser Code setzte das Layout auf das Deutsche Layout.
Delphi-Quellcode:
var kbCOde : LongWord;
kbString : Array[0..9] of char;
begin
// The following line is the translation of the MAKELANGID
// macro explained in the WIN32 developper's reference help.
// if you start with "LoadKeyBoardLayout" then click the hyperlink
// to MAKELANGID. You will see all the constant I've used here.
// No more "magic numbers" like 409 or 419.

kbCode := (SUBLANG_DEFAULT shl 10) or LANG_GERMAN;

// The line below is to switch to a french canadian keyboard
//kbCode := (SUBLANG_FRENCH_CANADIAN shl 10) or LANG_FRENCH;

//Convert the binary code to an Hex string;
StrPCopy(kbString, IntToHex(kbCode, 8));

// Switch the keyboard know
LoadKeyboardLayout(@kbString, KLF_ACTIVATE);
end;
Quelle: http://www.delphipages.com/forum/sho...57&postcount=3

Wenn das ausgeführt wurde, kannst du ein einfaches J abfragen.


Das bei dem Kyrillischem Layout ein ? gesendet wird liegt wohl am ascii string.
Milos

Geändert von milos ( 6. Apr 2015 um 13:22 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:36
@milos

Ok... aber damit zwinge ich den User dazu, noch nen blinden, eine andere Belegung in meinem Prog zu nutzen... so wie ich das verstehe, oder?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
512 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: j-Taste abfangen?

  Alt 6. Apr 2015, 13:41
@milos

Ok... aber damit zwinge ich den User dazu, noch nen blinden, eine andere Belegung in meinem Prog zu nutzen... so wie ich das verstehe, oder?
Genau.

Was ich nicht ganz verstanden habe. Willst du das Programm im Hintergrund laufen lassen? Wenn ja wäre mein Vorschlag keine Option dafür. Wenn aber das Programm geöffnet werden muss könnte man es versuchen, denn du könntest das Layout wieder zurück setzen wenn das Forumlar den Fokus verliert.
Milos
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:40 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