AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Navigation mit Pfeiltasten

Ein Thema von dm007 · begonnen am 19. Sep 2006 · letzter Beitrag vom 22. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2   
dm007

Registriert seit: 19. Sep 2006
17 Beiträge
 
#1

Navigation mit Pfeiltasten

  Alt 19. Sep 2006, 04:03
Hallo @All,

ich mache gerade meine ersten Gehversuche mit Delphi 7. Leider habe ich bereits jetzt ein scheinbar unlösbares Problem.

Ich versuche es mal zu erklären:

Ich habe 4 Buttons:

(1) (2)
(3) (4)

Ich möchte mit den Pfeiltasten Navigieren. Die Möglichkeit TabOrder kenne ich, die nützt mir aber nichts.
Wenn Button (1) den Focus hat möchte ich mit der Pfeiltaste (rechts) das Button (2) den Focus bekommt oder mit Pfeiltaste (runter) das Button (3)
den Focus bekommt.

Ich hoffe es kann jemand HELFEN


Gruß DM007
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Navigation mit Pfeiltasten

  Alt 19. Sep 2006, 05:06
Hallo!

Eigentlich müßte das funktionieren, wenn Du TabOrder richtig setzt, die Buttons vertikal und horizontal an den Rändern an der gleichen Position ausrichtest und keine anderen Komponenten auf der Form hast.
Oder Du plazierst die Buttons auf einem Panel, wenn Du andere Komponenten brauchst.

Das hatt' ich vergessen: Du mußt einem Butten den Fokus geben (ActiveControl in der Form) sonst wird das nix.
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
dm007

Registriert seit: 19. Sep 2006
17 Beiträge
 
#3

Re: Navigation mit Pfeiltasten

  Alt 19. Sep 2006, 14:02
@Sunlight7

Vielen Dank für Deine Antwort.. Habe gleich versucht das umzusetzen, und was soll ich sagen, es geht.
Das Focus setzen mit 'ActiveControl' hat es gebracht.


Vielen Dank
DM007
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Navigation mit Pfeiltasten

  Alt 19. Sep 2006, 17:03
Bitte gerne.

Ich kann mich noch gut Erinnern, wie ich von Basic in Delphi wechselte und man bei den einfachsten Sachen ansteht.
Nicht aufgeben, es lohnt sich Delphi zu lernen!

Grüße und viel Spaß mit Delphi!
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
dm007

Registriert seit: 19. Sep 2006
17 Beiträge
 
#5

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 05:19
Sorry, aber ich muss nochmal STÖREN!

Habe nur mit 2 Buttons getestet.

Ich verstehe nicht was DELPHI hier macht?

Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

   if (Form1.ActiveControl = RzBmpButton1) and (Key = VK_RIGHT) then Form1.ActiveControl := RzBmpButton2;
   if (Form1.ActiveControl = RzBmpButton2) and (Key = VK_RIGHT) then Form1.ActiveControl := RzBmpButton3;
   if (Form1.ActiveControl = RzBmpButton3) and (Key = VK_RIGHT) then Form1.ActiveControl := RzBmpButton4;
end;
Ich habe 4 Buttons und mit der RECHTS Taste möchte ich den Focus um 1 Button weiterschalten. Mit 2 Buttons funkt das auch.
Aber mit 4 Buttons, springt der von der 1 auf die 4 Hä, was mache ich FALSCH???

Gruß DM007
  Mit Zitat antworten Zitat
rayman

Registriert seit: 31. Jul 2003
Ort: Lohsdorf
40 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 05:39
Das liegt bestimmt daran, dass du vor der Überprüfung schon das ActiveControl neu setzt. Wenn die erste Bedingung erfüllt ist, wird RzBmpButton2 aktiv, dadurch ist sofort die 2. Bedingung erfüllt.

mach es so
Delphi-Quellcode:
if (Key = VK_RIGHT) then if (Form1.ActiveControl = RzBmpButton1) and
  then Form1.ActiveControl := RzBmpButton2;
  else if (Form1.ActiveControl = RzBmpButton2) and (Key = VK_RIGHT)
    then Form1.ActiveControl := RzBmpButton3;
    else if (Form1.ActiveControl = RzBmpButton3) and (Key = VK_RIGHT)
      then Form1.ActiveControl := RzBmpButton4;
  Mit Zitat antworten Zitat
dm007

Registriert seit: 19. Sep 2006
17 Beiträge
 
#7

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 13:19
Hi, und Danke für Antwort,

aber leider funktionieren Deine Angaben nicht. Gedanklich nochvollziehen kann ich das leider auch nicht.
Kann das bitte nochmal jemand aufbereiten?

Gruß DM007
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 13:33
Hi,

hier Dein alter Code etwas verändert

Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (Form1.ActiveControl = RzBmpButton1) and (Key = VK_RIGHT) then
     begin
      Form1.ActiveControl := RzBmpButton2;
      exit;//Beim erfüllen der Bedingung springt er hier aus der procedure
     end;
    if (Form1.ActiveControl = RzBmpButton2) and (Key = VK_RIGHT) then
     begin
      Form1.ActiveControl := RzBmpButton3;
      exit;//Beim erfüllen der Bedingung springt er hier aus der procedure
     end;
   if (Form1.ActiveControl = RzBmpButton3) and (Key = VK_RIGHT) then
     begin
      Form1.ActiveControl := RzBmpButton4;
      exit;//Beim erfüllen der Bedingung springt er hier aus der procedure
     end;
end;
ungetestet, denke aber es funktioniert.
Uwe
  Mit Zitat antworten Zitat
dm007

Registriert seit: 19. Sep 2006
17 Beiträge
 
#9

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 13:56
Ich werd WAHNSINNIG, super vielen Dank. Jetzt geht es.
Ein SIMPLES 'exit' kann Wunder bewegen!

Da hätte ich auch selber draufkommen können


Vielen Dank NOCHMALS

DM007
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.124 Beiträge
 
Delphi 12 Athens
 
#10

Re: Navigation mit Pfeiltasten

  Alt 20. Sep 2006, 14:22
Und wie wäre es in dieser Art?
Delphi-Quellcode:
case Key of
  VK_RIGHT:
    if ActiveControl = RzBmpButton1 then ActiveControl := RzBmpButton2
    else if ActiveControl = RzBmpButton3 then ActiveControl := RzBmpButton4;
  VK_UP:
    if ActiveControl = RzBmpButton3 then ActiveControl := RzBmpButton1
    else if ActiveControl = RzBmpButton4 then ActiveControl := RzBmpButton2;
  VK_LEFT:
    if ActiveControl = RzBmpButton2 then ActiveControl := RzBmpButton1
    else if ActiveControl = RzBmpButton2 then ActiveControl := RzBmpButton3;
  VK_DOWN:
    if ActiveControl = RzBmpButton1 then ActiveControl := RzBmpButton3
    else if ActiveControl = RzBmpButton2 then ActiveControl := RzBmpButton4;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:45 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