AGB  ·  Datenschutz  ·  Impressum  







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

Welche Taste wurde gedrückt

Ein Thema von nailor · begonnen am 13. Dez 2002 · letzter Beitrag vom 21. Dez 2002
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#1

Welche Taste wurde gedrückt

  Alt 13. Dez 2002, 16:31
hi!

mal wieder eine (hoffentlich einfache) frage:

gibts sowas wie keydown für die gesamte anwendung, so dass man alle Tastendrücke gemeldet kriegt, die in der anwendung gemacht werden???

Ach ja: Wenn ja, dann sagt auch was es da gibt
Michael N.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 13. Dez 2002, 16:54
Moin Kalle,

wenn Du Dich mit formularweit begnügen kannst:

Ein Formular hat die Eigenschaft KeyPreview. Wenn Du die im Objekt Inspektor auf true stellst, kannst Du das OnKeyDown Ereignis des Formulares verwenden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3
  Alt 13. Dez 2002, 21:40
ja, kann ich!

danke für die hilfe. klappt wunderbar!
Michael N.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#4
  Alt 20. Dez 2002, 14:08
noch eine frage: kann man den tastendruck auch irgendwie verschlucken? so dass nur die form den tastendruck mitkriegt, das aktive control aber nicht?
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#5
  Alt 20. Dez 2002, 14:20
Hätte da ne Idee, hab zwar noch nie sowas gemacht aber:

Störend ist es doch nur bei bestimmten Controls, oder?

Also z.B. bei einem Edit-Feld willst du zum Beispiel was eingeben
ohne das deine Form darauf reagiert. Wenn solche Controls aktiv sind, kannst du ja dann Preview auf false setzen und wenn du das Control verlässt wieder auf true.

Oder hab ich was falsch verstanden?

Oder du lässt im Control abfragen, welche Tasten gedrückt werden, und die die nur für die Form bestimmt sind, da schreibst du dann entsprechenden Code.

Gruß Minz
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 20. Dez 2002, 15:05
Moin Minz,

ich würde mal sagen: umgekehrt.

Als erstes bekommt das Formular die Taste und kann dann "entscheiden" ob es diese selber verarbeiten muss, oder ignorieren kann.

I.d.R. wird man KeyPreview wohl für Sondertasten verwenden.
Ich hab' beispielsweise in meinen Formularen standardmässig KeyPreview auf true, und dann eine Routine, die auf ESC das Formular schliesst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#7
  Alt 20. Dez 2002, 15:13
chris hat recht, aber was machst du, wenn du zb bei "leertaste" was machen willst, aber dein focus auf einem button ist. dann wird erst das richtige getan und dann noch der button gedrückt. oder bei einem edit und einer buchstabentaste...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 20. Dez 2002, 15:44
Moin Nailor,

ein Zeichen, dass eine Anwendung empfängt, wird "ganz normal" zugeschickt und landet in der MessageQueue des ensprechenden Fensters.
Wenn Du ein bestimmtes Zeichen nur in der Formularroutine verarbeiten willst, und nicht in einem anderen Control könntest Du es, statt es einfach weiterzureichen auch aus der MessageQueue löschen.
Das hab' ich jetzt zwar nicht ausprobiert, aber es müsste der entsprechende Weg sein.

Für ein Beispiel kannst Du mal hier im Forum nach PeekMessage suchen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#9
  Alt 20. Dez 2002, 16:06
Guten Abend!

Ich werd mir mal die ganzen Artikel durchschaun, und hoffe, das sich mein Problem damit erledigt!

Nailor
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Werner

Registriert seit: 20. Dez 2002
Ort: Berlin
3 Beiträge
 
Delphi 5 Enterprise
 
#10
  Alt 20. Dez 2002, 23:23
Hallo Nailor,

hier ein Beispiel, das Dein Problem m.E.
löst.

1. KeyPreview für das Formular auf true stellen

2. das Ereignis OnKeyPress auswerten

Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then key:= #0
  else if not (key in [#8, #46, #48 .. #57]) then key:= #0;
end;
RETURN (#13) wird über die Zuweisung key:= #0 unterdrückt.
Es werden nur die Zeichen
Backspace, Punkt und die Ziffern 0...9 durchgelassen.

Mit einer anderen Zuweisung als #0 kann man Zeichen auf ein
anderes umbiegen.

Statt einer Zeichenzuweisung kann man auch eine beliebige
Funktion/Prozedur aufrufen.
if key=#13 then TuWas; Wird das gesendete Zeichen nicht gebraucht,
muss zusätzlich wieder die Zuweisung auf #0 erfolgen.
Delphi-Quellcode:
if key=#13 then
  begin
    TuWas;
    key:= #0;
  end;
Ich hoffe, das hilft Dir weiter.

Werner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:21 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