![]() |
Keys richtig abfangen?
Hallo,
ich regele wie folgt die Lautstärke in meinem Programm:
Delphi-Quellcode:
// Lautstärke mit Pfeiltasten regeln
if (Key = VK_LEFT) then TrackBar1.Position := TrackBar1.Position - 1 else if (Key = VK_RIGHT) then TrackBar1.Position := TrackBar1.Position + 1; Aber ich habe noch eine ListBox auf dem Form liegen, und sobald ich die Links/Rechts Taste klicke werden die Listeneinträge in der ListBox entsprechend nach oben und unten markiert, die TrackBar bewegt sich auch. Also mit der Links-Taske springt die TrackBar um eine Position nach links und in der ListBox wird um ein Item höher markiert usw. Nun meine Frage, wie stelle ich es ein, dass nur die TrackBar auf die Keys reagiert? Danke! |
AW: Keys richtig abfangen?
nach der erfolgreichen Bearbeitung:
Delphi-Quellcode:
key := 0;
|
AW: Keys richtig abfangen?
Wow... es klappt. Nun möchte ich die Lautstärke mir dem "j"-Buchstaben ein/ausschalten... und hier funktioniert es nicht... die Lautstärke wird zwar ein/ausgeschaltet, aber auch in der ListBox wird zum Eintrag gesprungen, der mit "j" anfängt.
Delphi-Quellcode:
// Lautstärke ein/ausschalten mit dem 'j'-Buchstaben
if Key = 74 then begin if VolumeOn.Visible then begin VolumeOnClick(Self); Key := 0; end else begin VolumeOffClick(Self); Key := 0; end; end; |
AW: Keys richtig abfangen?
Wenn du Tasten abfangen möchtest die direkt von der Form "interpretiert" werden sollen bevor sie an eine aktive Komponente weitergeleitet werden, dann stellt man normalerweise die Eigenschaft
Delphi-Quellcode:
der Form auf True. Die Keys werden dann im KeyPress-Event der Form abgefangen und dort schon entsprechend auf #0 gesetzt.
KeyPreview
|
AW: Keys richtig abfangen?
KeyPreview ist bei mir bereits auf True gesetzt.
|
AW: Keys richtig abfangen?
Was steht denn in den Prozeduren "VolumeOnClick()" und "VolumeOffClick()" drin?
|
AW: Keys richtig abfangen?
Eigentlich nichts besonderes...
Delphi-Quellcode:
procedure TMainForm.VolumeOffImageClick(Sender: TObject);
begin vol := TrackBar1.Position; BASS_ChannelSetAttribute(chan, BASS_ATTRIB_VOL, 0); VolumeOffImage.Visible := False; VolumeOnImage.Visible := True; TrackBar1.Position := 0; end; procedure TMainForm.VolumeOnImageClick(Sender: TObject); begin if (TrackBar1.Position = 0) and (vol = 0) then begin TrackBar1.Position := 50; VolumeOffImage.Visible := True; VolumeOnImage.Visible := False; end else begin TrackBar1.Position := vol; VolumeOffImage.Visible := True; VolumeOnImage.Visible := False; end; end; |
AW: Keys richtig abfangen?
Zitat:
|
AW: Keys richtig abfangen?
Zitat:
|
AW: Keys richtig abfangen?
Aber eigentlich ungewöhnlich, dass zwei Steuerelemente gleichzeitig auf Tastendruck reagieren, denn eigentlich kann nur ein Steuerelement pro Fenster den Eingabefokus haben. Im Gegenteil, man müsste das Verhalten extra programmieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz