Moin Hansa,
wie sieht's dann bislang aus? |
|
Moin Hansa,
hast Du schon mal versucht da im Single Step durchzugehen, ob die Zeilen bei VK_ESCAPE überhaupt angesprochen werden? |
Hi,
klar, da landet er schon. Gruß Hansa |
Hi,
das hier scheint ein endloses Thema zu sein. :shock: Es gibt noch einen Sonderfall : Habe ich auf einer Form nur EIN Eingabefeld funktioniert das alles nicht. Ich wollte im OnExit eines Edit-Feldes etwas ausführen. Mit Enter komm ich da nicht raus. Zu allem Überfluß steht in der Delphi-Hilfe sinngemäß : Bei OnEnter wird der Focus an das nächste Steuerelement weiter gereicht. Nun ist aber keins da, d.h. er bleibt in dem Feld hängen !!! Setze ich einen überflüssigen Button noch dazu, dann geht es schon. Gruß Hansa |
Hi,
nächstes Problem: Man lege mal ein Edit-Feld und ein Stringgrid auf eine Form. Beim Verlassen des Edits soll der Cursor in der ersten Zelle des Stringgrids stehen. Mit Return gehts dann aber nicht weiter von Zelle zu Zelle. |
Moin Hansa,
schaust Du Dir bitte mal Dein Posting und die Überschrift an, und korrigierst eins von beiden? ;-) Danke. |
AW: lästiges beepen abstellen ??
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. Im FormCreate habe ich schon KeyPreview := True; Dann habe ich:
Code:
WM_CHAR geht nicht, WM_SYSKEYDOWN auch schon probiert(mit FormKeyDown)
procedure TMedikation.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); var Mgs: TMsg; begin if (ssAlt in Shift) and (Key = 86) then begin //ShowMessage('Alt + V'); PeekMessage(Mgs, 0, WM_SYSKEYUP, WM_SYSKEYUP, PM_REMOVE); Key := 0; //shift := []; edtVorpraeparat.SetFocus; end; end; Was ist falsch? |
AW: lästiges beepen abstellen ??
Hallo,
also das klappt doch eigentlich beim FormKeyDown. und Key:= #0 (nicht 0). |
AW: lästiges beepen abstellen ??
#0 kann man doch nur im OnKeyPress verwenden, da der Key-Parameter dort ein Char ist. Im OnKeyDown/OnKeyUp hingegen ist es ein Word.
|
AW: lästiges beepen abstellen ??
Hallo,
stimmt, also soll er die Methode mit dem Char mal ausprobieren. |
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. |
AW: lästiges beepen abstellen ??
Zitat:
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:. |
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; |
AW: lästiges beepen abstellen ??
Hallo,
Zitat:
https://docs.microsoft.com/en-us/win...tasynckeystate |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 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