Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi lästiges beepen abstellen ?? (https://www.delphipraxis.net/110-laestiges-beepen-abstellen.html)

hoika 18. Jun 2019 04:39

AW: lästiges beepen abstellen ??
 
Hallo,
stimmt, also soll er die Methode mit dem Char mal ausprobieren.

Ron67 18. Jun 2019 11:08

AW: lästiges beepen abstellen ??
 
Danke für die Antworten.

Jetzt fällt mir beim Debuggen auf: Das Beep kommt schon vor der Prüfung auf den Key.
Also so
<Beep>
if (ssAlt in Shift) and (Key = 86) then ...

PeekMessage kann ich vergessen.

Die Methode mit dem Char hat kein Parameter Shift.

Hmm.

peterbelow 18. Jun 2019 11:38

AW: lästiges beepen abstellen ??
 
Zitat:

Zitat von Ron67 (Beitrag 1434842)
Hallo zusammen, ich habe etwas ähnliches.

Bei mir gibt es u.a. zwei Edit-Felder. Meistens füllt man nur das zweite aus. Daher hat das erste Editfeld kein Tabstob
Mit der Tastenkombination Alt + V soll der Fokus aber auf das erste Edit-Feld gelegt werden.

Mal ein komplett anderer Ansatz:
Normalerweise hat jedes Eingabecontrol ein zugehöriges TLabel, welches dem Benutzer verklickert, wozu das Eingabecontrol da ist. TLabel hat eine Property FocusControl, mit dem man dem Label quasi das Eingabecontrol zuordnen kann. Wenn man dann in der Caption des Labels einen Buchstaben mit einem & davor versieht (z. B. '&Versicherungsnummer') zeigt das Label diesen Buchstaben unterstrichen an, was der Hinweis für den Benutzer ist, dass dieser Buchstabe ein Shortcut ist. Wenn man dann Alt-<Buchstabe> drückt (im obigen Beispiel also Alt-V) wird der Fokus automatisch auf das dem Label zugehörige Control gesetzt.

Fazid: Deine ganzen Klimmzüge sind völlig unnötig :wink:.

Ron67 18. Jun 2019 11:53

AW: lästiges beepen abstellen ??
 
Jetzt habe ich es!

1) FormKeyDown benutzen
2) Key = 18 abfangen
3) WM_SYSKEYUP, WM_SYSKEYDOWN beide als Parameter in PeekMessage

Der ganze Code:
Code:
procedure TMedikation.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Mgs: TMsg;
begin
  if (ssAlt in Shift) and (Key = 18) then exit;
  if (ssAlt in Shift) and (Key = 86) then
  begin
    Key := 0;
    PeekMessage(Mgs, 0, WM_SYSKEYUP, WM_SYSKEYDOWN, PM_REMOVE);
    edtVorpraeparat.SetFocus;
  end;
end;

hoika 18. Jun 2019 14:35

AW: lästiges beepen abstellen ??
 
Hallo,
Zitat:

Die Methode mit dem Char hat kein Parameter Shift.
Wäre vielleicht trotzdem gegangen
https://docs.microsoft.com/en-us/win...tasynckeystate


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Seite 6 von 6   « Erste     456   

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