Delphi-PRAXiS

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 Problem mit der Tastensteuerung (https://www.delphipraxis.net/131285-problem-mit-der-tastensteuerung.html)

AlexII 22. Mär 2009 10:26


Problem mit der Tastensteuerung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

hab folgendes Problem: hab auf einer Form eine TrackBar und ComboBox. Die muss ich mit den Richtungstasten steuern, und zwar wie folgt:
Links- u. Rechtstaste verschieben den Slider der TrackBar nach links und rechts.
Hoch- u. Runtertaste zeigen den nächsten bzw. letzten String auf einer Label.
Hab schon stundenlang daran "geschraubt" und folgenden Code zusammen gebastelt.... aber irgendwie funktioniert das nicht. Das Problem liegt irgendwo in der Selektierung. Möchte es aber so haben, dass man kein Objekt extra selektieren muss, die Tasten müssen ihre Funktion sofort erledigen. Also wie gesagt, kriege es nicht hin.
Das Projekt liegt bei.

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var l, h: Integer;
begin
if (Key=VK_Left) then
begin
l:=TrackBar1.Position;
Dec(l);
TrackBar1.Position:=l;
end else if (Key=VK_Right) then
         begin
         l:=TrackBar1.Position;
         Inc(l);
         TrackBar1.Position:=l;
         end else if (Key=VK_Up) then
                  begin
                  h:=ComboBox1.ItemIndex;
                  Dec(h);
                  ComboBox1.ItemIndex:=h;
                  ComboBox1Click(Sender);
                  end else if (Key=VK_Down) then
                           begin
                           h:=ComboBox1.ItemIndex;
                           Inc(h);
                           ComboBox1.ItemIndex:=h;
                           ComboBox1Click(Sender);
                           end;
end;

AlexII 22. Mär 2009 13:12

Re: Problem mit der Tastensteuerung
 
Kann mir denn keiner helfen? :pale:

Blackheart 22. Mär 2009 13:20

Re: Problem mit der Tastensteuerung
 
Pushen ist erst nach 24 Stunden erlaubt. :!:

mleyen 22. Mär 2009 13:39

Re: Problem mit der Tastensteuerung
 
Ich verstehe nicht so wirklich was du erreichen willst.
Aber wenn du auf Änderungen in einer TComboBox reagieren willst, benutze das OnChane-Ereignis.

Und hier hab ich den Code im FormKeyDown() mal aufgeräumt, bestimmt kommst du so schneller drauf.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin

  case Key of
    VK_Left: TrackBar1.Position := TrackBar1.Position - 1;
    VK_Right: TrackBar1.Position := TrackBar1.Position + 1;
    VK_Up:
    begin
      ComboBox1.ItemIndex := ComboBox1.ItemIndex - 1;
      ComboBox1Change(Sender);
    end;
    VK_Down:
    begin
      ComboBox1.ItemIndex := ComboBox1.ItemIndex + 1;
      ComboBox1Change(Sender);
    end;
  end;

end;
Um ein TWinControl nicht anwählbar zu machen musst du die Eigenschaft TabStop auf false setzen.

Pichel 22. Mär 2009 13:40

Re: Problem mit der Tastensteuerung
 
Also, ich verstehe das Problem noch nicht ganz.
Probleme kann es jedoch geben wenn du die beiden Komponenten im onChange Event verknüpfst.

Die Formatierung mit vielen If Then finde ich auch sehr unübersichtlich, besser fände ich dabei schonmal
Delphi-Quellcode:
case Key of
 VK_Right : begin end;
 VK_Up   : begin end;
 VK_Down : begin end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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