AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Keys richtig abfangen?

Ein Thema von AlexII · begonnen am 16. Okt 2015 · letzter Beitrag vom 17. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Keys richtig abfangen?

  Alt 16. Okt 2015, 14:46
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!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 14:56
nach der erfolgreichen Bearbeitung:

key := 0;
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 15:18
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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 15:56
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 KeyPreview der Form auf True. Die Keys werden dann im KeyPress-Event der Form abgefangen und dort schon entsprechend auf #0 gesetzt.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 17:49
KeyPreview ist bei mir bereits auf True gesetzt.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#6

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 20:32
Was steht denn in den Prozeduren "VolumeOnClick()" und "VolumeOffClick()" drin?
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 20:35
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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#8

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 21:01
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.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 21:16

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. ))
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: Keys richtig abfangen?

  Alt 16. Okt 2015, 23:30
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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