Delphi-PRAXiS
Seite 2 von 2     12   

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)

Christian Seehase 3. Nov 2002 02:32

Moin Hansa,

wie sieht's dann bislang aus?

Hansa 3. Nov 2002 09:35

Hi Chris,

so siehts aus :

http://www.delphipraxis.net/viewtopi...r=asc&start=15

Gruß
Hansa

Christian Seehase 3. Nov 2002 18:30

Moin Hansa,

hast Du schon mal versucht da im Single Step durchzugehen, ob die Zeilen bei VK_ESCAPE überhaupt angesprochen werden?

Hansa 3. Nov 2002 19:27

Hi,

klar, da landet er schon.

Gruß
Hansa

Hansa 5. Dez 2002 17:31

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

Hansa 2. Jul 2003 12:06

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.

Christian Seehase 2. Jul 2003 12:13

Moin Hansa,

schaust Du Dir bitte mal Dein Posting und die Überschrift an, und korrigierst eins von beiden? ;-)
Danke.

Ron67 17. Jun 2019 14:21

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:
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;
WM_CHAR geht nicht, WM_SYSKEYDOWN auch schon probiert(mit FormKeyDown)

Was ist falsch?

hoika 17. Jun 2019 15:32

AW: lästiges beepen abstellen ??
 
Hallo,
also das klappt doch eigentlich beim FormKeyDown.
und Key:= #0 (nicht 0).

DeddyH 17. Jun 2019 15:41

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.

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 15:25 Uhr.
Seite 2 von 2     12   

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