Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Keyrepeat abschalten (https://www.delphipraxis.net/108986-keyrepeat-abschalten.html)

Sharky 22. Feb 2008 11:37


Keyrepeat abschalten
 
Hai ihr,

kann man für seine Anwendung die Tastaturwiederholung abschalten?
Es soll also nicht immer der "Buchstabe gesendet" werden solange die Taste gedrückt ist.

Xong 22. Feb 2008 12:03

Re: Keyrepeat abschalten
 
Mir fällt auf die Schnelle folgende Lösung ein:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  count := 0
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  count := 0
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if count = 0 then
    inc(count)
  else
    Key := #0;
end;
Bedenke aber, dass du damit das Standardverhalten umgehst und den Benutzer ggf. verärgerst! :roll:

Luckie 22. Feb 2008 12:27

Re: Keyrepeat abschalten
 
Ich glaube eher, es ist für seine Tochter. ;) Und ich bin mir ziemlich sicher, Sharky weiß, was er tut.

Sharky 22. Feb 2008 12:29

Re: Keyrepeat abschalten
 
Zitat:

Zitat von Xong
Mir fällt auf die Schnelle folgende Lösung ein:

Hai Xong,

gerade solch eine Vorgehensweise wollte ich vermeiden. Wenn ich das über "einen" Befehl für das gesamte Programm steuern kann habe ich
a) weniger Fehlerquellen
b) ist der Code besser zu warten
c) kann man das ganze einfach über Parameter ein/ausschalten

Zitat:

Bedenke aber, dass du damit das Standardverhalten umgehst und den Benutzer ggf. verärgerst! :roll:
Da sehe ich keine Bedenken.
Es handelt sich um eine so hochspezialisierte Anwendung das dafür nur eine sehr enger Anwenderkreis in Frage kommt.
Genauer gesagt ist die Anwendung ausschliesslich für :sharkylinchen: gedacht.
Sollte sie, wieder erwarten, doch "rum zicken" komme ich ihm mit dem berühmten "Deine Flossen unter meinem Tisch"-Argument und die Sardine ist gegessen. :stupid:

Edit: Luckie kennt mich wohl ;-)

Luckie 22. Feb 2008 12:33

Re: Keyrepeat abschalten
 
Kann man nicht irgendwo die Tastenwiederholfrequenz einstellen? Ich meine da mal was gehört zu haben. Ich kann es natürlich auch mit der Cursor.Blick-Frequenz verwechselt haben, denn die kann man einstellen.

Xong 22. Feb 2008 12:41

Re: Keyrepeat abschalten
 
Zitat:

Zitat von Sharky
gerade solch eine Vorgehensweise wollte ich vermeiden. Wenn ich das über "einen" Befehl für das gesamte Programm steuern kann habe ich
a) weniger Fehlerquellen
b) ist der Code besser zu warten
c) kann man das ganze einfach über Parameter ein/ausschalten

a/b) Du hast nur eine Funktion, die das überprüft.
c) Kann man noch einbauen.
Edit: Ich weiß natürlich, was du mit "einem Befehl" meinst. Aber sooo umständlich finde ich die Lösung nun auch wieder nicht. Zumal es ziemlich einfach zu kapseln sein dürfte.

d) Eine eigene Komponente dafür möchtest du nicht entwickeln? =)


Zitat:

Zitat von Sharky
Da sehe ich keine Bedenken.
Es handelt sich um eine so hochspezialisierte Anwendung das dafür nur eine sehr enger Anwenderkreis in Frage kommt.
Genauer gesagt ist die Anwendung ausschliesslich für :sharkylinchen: gedacht.
Sollte sie, wieder erwarten, doch "rum zicken" komme ich ihm mit dem berühmten "Deine Flossen unter meinem Tisch"-Argument und die Sardine ist gegessen. :stupid:

Edit: Luckie kennt mich wohl ;-)

Ich gebe immer solche Sachen zu bedenken. Ist ja auch nicht böse gemeint, sondern ein gut gemeinter Hinweis. Nach meinem Post war mir dann auch klar geworden, dass du das wosiewo weißt.

xaromz 22. Feb 2008 12:46

Re: Keyrepeat abschalten
 
Hallo,

Du kannst manuell auf die Message MSDN-Library durchsuchenWM_KEYDOWN reagieren. In den Bits 0-15 von lParam steht der Repeat Count.

Gruß
xaromz

Sharky 22. Feb 2008 12:52

Re: Keyrepeat abschalten
 
Zitat:

Zitat von Xong
a/b) Du hast nur eine Funktion, die das überprüft.
c) Kann man noch einbauen.

d) Eine eigene Komponente dafür möchtest du nicht entwickeln? =)

Hai Xong,

wenn es sich nur um Edits handeln würde wäre es kein Problem. Dann würde ich mir schnell eine Kompo dafür machen.
Aber es soll ja für "alles" gelten. Edits, Memos, Buttons usw.

Da wäre es so einfacher.

Zitat:

... Ist ja auch nicht böse gemeint, sondern ein gut gemeinter Hinweis. Nach meinem Post war mir dann auch klar geworden, dass du das wosiewo weißt.
;-) Keine Sorge ich habe das schon richtig verstanden. Darum ja auch meine, ehrer humorvolle, Reaktion darauf ;-)

Xong 22. Feb 2008 12:56

Re: Keyrepeat abschalten
 
Zitat:

Zitat von Sharky
[...] wenn es sich nur um Edits handeln würde wäre es kein Problem. Dann würde ich mir schnell eine Kompo dafür machen.
Aber es soll ja für "alles" gelten. Edits, Memos, Buttons usw.

Und ich war so stolz auf meinen Würgarround. :freak:

Viel Spaß noch. Ich hoffe, dir hilft xaromz´ Lösung weiter.

LG,
Xong

sirius 22. Feb 2008 12:59

Re: Keyrepeat abschalten
 
Zitat:

Zitat von Sharky
wenn es sich nur um Edits handeln würde wäre es kein Problem. Dann würde ich mir schnell eine Kompo dafür machen.

Die Kompo heißt TApplicationEvents :zwinker:
Und im Ereignis OnMessage kannst du dann die WM_KeyDown wie xaromz beschrieben filtern. Dort laufen nämlich alle Messages an deine Anwendung vorbei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Seite 1 von 2  1 2      

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