Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Keys richtig abfangen? (https://www.delphipraxis.net/186965-keys-richtig-abfangen.html)

AlexII 16. Okt 2015 14:46

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!

bernau 16. Okt 2015 14:56

AW: Keys richtig abfangen?
 
nach der erfolgreichen Bearbeitung:

Delphi-Quellcode:
key := 0;

AlexII 16. Okt 2015 15:18

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;

Aviator 16. Okt 2015 15:56

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:
KeyPreview
der Form auf True. Die Keys werden dann im KeyPress-Event der Form abgefangen und dort schon entsprechend auf #0 gesetzt.

AlexII 16. Okt 2015 17:49

AW: Keys richtig abfangen?
 
KeyPreview ist bei mir bereits auf True gesetzt.

BadenPower 16. Okt 2015 20:32

AW: Keys richtig abfangen?
 
Was steht denn in den Prozeduren "VolumeOnClick()" und "VolumeOffClick()" drin?

AlexII 16. Okt 2015 20:35

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;

BadenPower 16. Okt 2015 21:01

AW: Keys richtig abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1318928)
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;

Das sind auch nicht die Prozeduren, welche in Post #3 aufgeführt sind und nach denen ich gefragt hatte.

AlexII 16. Okt 2015 21:16

AW: Keys richtig abfangen?
 
Zitat:

Zitat von BadenPower (Beitrag 1318931)

Das sind auch nicht die Prozeduren, welche in Post #3 aufgeführt sind und nach denen ich gefragt hatte.

Das sind sie, habe nur den Name geändert und überall angepasst, daran liegt es nicht. ))

Luckie 16. Okt 2015 23:30

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 03:28 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